Montando um compartilhamento Samba / CIFS no Linux “Correctly”

3

O problema é que não consigo obter arquivos no compartilhamento CIFS para mostrar as permissões corretas no cliente Linux sem forçar vers=1.0 nas opções de montagem.

O servidor é um sistema FreeNAS executando o Samba 4.7.0. Ele está basicamente rodando no modo standalone / workgroup; não há um controlador de domínio AD /, e eu não quero um se puder evitá-lo.

O cliente é um sistema Debian Sid (instável) com componentes do Samba v4.7.4 e cifs-utils versão 6.8-1.

O atual encantamento da montagem é parecido com isto:

sudo mount.cifs -o 'vers=1.0,username=me,uid=me,gid=me,credentials=[[filename]]' //freenas/me $HOME/mnt

(O acima é normalmente executado por autofs, mas isso não é relevante.)

Uma vez feito, a seguinte entrada aparece no 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)

... E o nosso diretório de teste aparece com os seguintes modos / permissões:

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

Isso é exatamente o que eu espero e quero. No entanto, o mount está forçando o SMB versão 1.0, que é antigo e está quebrado. No entanto, se eu não especificar explicitamente vers=1.0 , isso acontece:

//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

Algo injetou file_mode=0755,dir_mode=0755 nas opções de montagem e as permissões resultantes são 0x755 em todos os arquivos, independentemente de suas permissões reais, o que é obviamente errado. Ainda não descobri de onde vêm essas opções indesejadas.

Como meu objetivo final é ter vários usuários simultâneos conectados a seus próprios diretórios pessoais com suas próprias credenciais, comecei a experimentar esse mount de encantamento, especificamente a opção 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

Ainda está errado. No entanto, quando eu adiciono a opção de montagem cifsacl :

sudo mount.cifs -o "user=me,noperm,multiuser,cifsacl" //freenas/me $HOME/mnt

E insira minhas credenciais para o servidor por meio do comando cifscreds , obtenho estes resultados:

//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

Apesar das opções file_mode=0755,dir_mode=0755 ainda serem injetadas, as permissões agora estão aparecendo corretamente. Mas agora os UIDs estão errados e tudo parece pertencer ao root. Na verdade, posso criar, modificar e excluir arquivos no compartilhamento, mas eles aparecem como propriedade da raiz. Eu sei que deve haver um mapeamento realizado por cifs.idmap e winbindd , mas ainda não descobri exatamente como isso é feito ou como configurá-lo.

Eu prefiro não continuar usando o vers=1.0 kluge; Eu preferiria fazer isso corretamente. Alguma dica sobre o que eu estou sentindo falta?

    
por ewhac 21.04.2018 / 09:57

0 respostas

Tags