Монтирование общего ресурса Samba/CIFS в Linux "правильно"
Проблема в том, что я не могу заставить файлы на общем ресурсе CIFS показывать правильные разрешения на клиенте Linux без форсирования vers=1.0
в опциях монтирования.
Сервер является системой FreeNAS под управлением Samba 4.7.0. Он в основном работает в автономном режиме / режиме рабочей группы; нет контроллера AD/ домена, и я не хочу его, если я могу избежать этого.
Клиент является нестабильной системой Debian Sid с компонентами Samba v4.7.4, и cifs-utils
версия 6.8-1.
Текущее заклинание монтирования выглядит примерно так:
sudo mount.cifs -o 'vers=1.0,username=me,uid=me,gid=me,credentials=[[filename]]' //freenas/me $HOME/mnt
(На самом деле вышеупомянутое обычно выполняется autofs, но это оказывается неуместным.)
После этого в mtab появится следующая запись:
//freenas/me on /home/me/mnt type cifs (rw,relatime,vers=1.0,cache=strict,username=me,domain=,uid=1000,forceuid,gid=1000,forcegid,addr=X.X.X.X,soft,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=65536,echo_interval=60,actimeo=1)
... И наш тестовый каталог обнаруживается со следующими режимами / разрешениями:
me@linuxclient:~$ ls -al mnt/testdir/
total 3
drwxr-xr-x+ 2 me me 0 Apr 21 00:10 .
drwxr-xr-x+ 5 me me 0 Apr 21 00:07 ..
-r--r--r--+ 1 me me 0 Apr 21 00:09 R--R--R--
-rw-r--r--+ 1 me me 0 Apr 21 00:10 RW-R--R--
-rwx------+ 1 me me 0 Apr 21 00:08 RWX------
-rwxr-xr-x+ 1 me me 0 Apr 21 00:08 RWXR-XR-X
-r-xr-xr-x+ 1 me me 0 Apr 21 00:09 R-XR-XR-X
Это именно то, чего я ожидаю и хочу. Тем не менее, монтирование форсирует SMB версии 1.0, которая является старой и поврежденной. Однако если я не укажу явно vers=1.0
тогда это происходит:
//freenas/me on /home/me/mnt type cifs (rw,relatime,vers=default,cache=strict,username=me,domain=,uid=1000,forceuid,gid=1000,forcegid,addr=X.X.X.X,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)
me@linuxclient:~$ ls -al mnt/testdir/
total 5120
drwxr-xr-x 2 me me 0 Apr 21 00:10 .
drwxr-xr-x 2 me me 0 Apr 21 00:07 ..
-rwxr-xr-x 1 me me 0 Apr 21 00:09 R--R--R--
-rwxr-xr-x 1 me me 0 Apr 21 00:10 RW-R--R--
-rwxr-xr-x 1 me me 0 Apr 21 00:08 RWX------
-rwxr-xr-x 1 me me 0 Apr 21 00:08 RWXR-XR-X
-rwxr-xr-x 1 me me 0 Apr 21 00:09 R-XR-XR-X
Что-то впрыснул file_mode=0755,dir_mode=0755
в параметры монтирования, и получающиеся разрешения равны 0x755 для всех файлов, независимо от их фактических разрешений, что, очевидно, неверно. Я еще не выяснил, откуда эти нежелательные варианты.
Поскольку моей конечной целью является одновременное подключение нескольких пользователей к своим домашним каталогам со своими учетными данными, я начал экспериментировать с этим mount
заклинание, в частности, multiuser
опция:
sudo mount.cifs -o "user=me,noperm,multiuser" //freenas/me $HOME/mnt
me@linuxclient:~$ ls -al mnt/testdir/
total 5120
drwxr-xr-x 2 me me 0 Apr 21 00:10 .
drwxr-xr-x 2 me me 0 Apr 21 00:07 ..
-rwxr-xr-x 1 me me 0 Apr 21 00:09 R--R--R--
-rwxr-xr-x 1 me me 0 Apr 21 00:10 RW-R--R--
-rwxr-xr-x 1 me me 0 Apr 21 00:08 RWX------
-rwxr-xr-x 1 me me 0 Apr 21 00:08 RWXR-XR-X
-rwxr-xr-x 1 me me 0 Apr 21 00:09 R-XR-XR-X
Все еще не так. Тем не менее, когда я добавляю опцию монтирования cifsacl
:
sudo mount.cifs -o "user=me,noperm,multiuser,cifsacl" //freenas/me $HOME/mnt
И введите мои учетные данные для сервера через cifscreds
Команда, я получаю эти результаты:
//freenas/me on /home/me/mnt type cifs (rw,relatime,vers=default,cache=strict,multiuser,domain=,uid=0,noforceuid,gid=0,noforcegid,addr=X.X.X.X,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,cifsacl,noperm,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)
me@linuxclient:~$ ls -al mnt/testdir/
total 5120
drwxr-xr-x 2 root root 0 Apr 21 00:10 .
drwxr-xr-x 2 root root 0 Apr 21 00:07 ..
-r--r--r-- 1 root root 0 Apr 21 00:09 R--R--R--
-rw-r--r-- 1 root root 0 Apr 21 00:10 RW-R--R--
-rwx------ 1 root root 0 Apr 21 00:08 RWX------
-rwxr-xr-x 1 root root 0 Apr 21 00:08 RWXR-XR-X
-r-xr-xr-x 1 root root 0 Apr 21 00:09 R-XR-XR-X
Несмотря на варианты file_mode=0755,dir_mode=0755
все еще вводятся, разрешения теперь отображаются правильно. Но теперь UID неверны, и все выглядит так, как будто он принадлежит root. На самом деле я могу создавать, изменять и удалять файлы в общем ресурсе, но они отображаются как корневые. Я знаю, что должно быть отображение в исполнении cifs.idmap
а также winbindd
, но я не выяснил, как именно это делается или как его настроить.
Я бы предпочел не продолжать использовать vers=1.0
Клюге; Я бы предпочел сделать это правильно. Есть намеки на то, что мне не хватает?