Os bits de permissão não estão sendo impostos no compartilhamento de samba

11

Eu tenho um problema em que bits de permissão não estão sendo aplicados em um compartilhamento de samba usando um cliente Linux. Eu tenho o samba configurado no servidor para forçar um determinado usuário, grupo e bits de permissão e isso funciona como esperado até eu tocar o arquivo ou ele se tornar o alvo do redirecionamento de IO.

Veja o que está acontecendo:

user@linuxbox:~-->ls -l ~/archive/foo.txt
ls: cannot access /home/user/archive/foo.txt: No such file or directory
user@linuxbox:~-->touch ~/archive/foo.txt
user@linuxbox:~-->ls -l ~/archive/foo.txt
-rw-rw-r-- 1 archive archive 0 2010-09-13 20:29 /home/user/archive/foo.txt
user@linuxbox:~-->touch ~/archive/foo.txt
user@linuxbox:~-->ls -l ~/archive/foo.txt
-rwxrwxrwx 1 archive archive 0 2010-09-13 20:30 /home/user/archive/foo.txt

Observe que quando eu toco no arquivo existente, seus bits de permissão são 0777. Eles devem ser 0664 como quando foi criado pela primeira vez. Como posso impor 0664 no arquivo existente?

Eu tenho a versão 3.0.24 no servidor e a versão 3.4.7 no cliente. Aqui está meu smb.conf:

[global]
interfaces = egiga0
unix charset = UTF8
workgroup = workgroup
netbios name = foo
server string = Foo
security = USER
map to guest = bad user
host msdfs = no
encrypt passwords = yes

[archive]
comment = File Archive
path = /home/archive
force user = archive
force group = archive
read only = yes
write list = @archive
guest ok = yes
create mask = 0
force create mode = 0664
security mask = 0
force security mode = 0664
directory mask = 0
force directory mode = 0775
directory security mask = 0
force directory security mode = 0775
    
por Jonathon Watney 14.09.2010 / 05:39

1 resposta

2

As permissões do samba funcionam apenas nos clientes de rede SMB (ou seja, Windows). Se você quiser impor isso no servidor (e em qualquer cliente NFS), é necessário definir o bit em todos os diretórios.

primeiro corrija os arquivos que estão lá:

chown -R archive /home/archive 
chgrp -R archive /home/archive 
find /home/archive -type d -exec chmod 0775 {} \;
find /home/archive -type f -exec chmod 0664 {} \;

imponha isso com o grupo sticky bit

find /home/archive -type d -exec chmod g+s {} \;

Isso não é infalável, mas resolve 99% desse tipo de problema.

Cumprimentos DaveF

Resultado na minha caixa do Solaris:

davef@dalek[10]$ cd /proj/ftptmp
davef@dalek[11]$ ls -ld .
drwxrwsr-x  60 root     ftpusers     377 Oct  5 09:31 ./
davef@dalek[12]$
davef@dalek[12]$ ls -l foo.txt
foo.txt: No such file or directory
davef@dalek[13]$ touch foo.txt
davef@dalek[14]$ ls -l foo.txt
-rw-rw-r--   1 davef    ftpusers       0 Oct 15 11:49 foo.txt
davef@dalek[15]$ touch foo.txt
davef@dalek[16]$ ls -l foo.txt
-rw-rw-r--   1 davef    ftpusers       0 Oct 15 11:49 foo.txt
davef@dalek[17]$
davef@dalek[17]$ umask
2
davef@dalek[18]$
    
por 07.10.2010 / 14:26