Проблема в том, что я не могу получить файлы на общем ресурсе 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
(Вышеуказанное обычно выполняется автоматическими, но это не имеет отношения к делу.)
После этого в 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
клуге; Я бы предпочел сделать это правильно. Есть намеки на то, что мне не хватает?