
Configurei um samba shire básico para compartilhar arquivos de mídia por SMB em minha rede local sem credenciais (ou seja, como convidado SMB)
/etc/samba/smb.conf
[media]
Comment = Media directory
Path = /mnt/media
Browseable = yes
Writeable = Yes
create mask = 0666
directory mask = 0777
Public = yes
Quando eu crio um diretório chamado example
usando SMB no Windows, a estrutura de diretórios fica assim
ls -alh
total 28K
drwxrwxrwt 4 root root 4.0K Oct 21 13:44 ./
drwxr-xr-x 3 root root 4.0K Oct 20 13:33 ../
drwxrwxrwx 2 nobody nogroup 4.0K Oct 21 13:44 example/
drwx------ 2 root root 16K Oct 20 13:36 lost+found/
lsattr
--------------e----- ./example
Quando tento excluir o diretório do sistema usando uma conta de usuário padrão, recebo uma mensagem de erro.
rmdir: falha ao remover 'exemplo': operação não permitida
Mesmo assim, posso excluir a pasta usando SMB no Windows. O que está acontecendo aqui e como posso permitir que qualquer usuário unix local exclua ou modifique arquivos criados por um convidado em SMB?
Responder1
O t
sinalizador nas permissões do diretório pai declara que apenas o proprietário de um diretório (ou raiz) pode excluir um arquivo ou diretório dele.
O Samba parece estar configurado para fornecer acesso de usuário como conta nobody
. Você nobody
não tem o direito de excluir o diretório.
Eu não recomendo que você crie arquivos e diretórios no nível superior. Deixe isso para lost+found
um diretório de dados e compartilhe esse diretório de dados em vez do ponto de montagem.
# Remove global write permission from the mountpoint
chmod go-w,-t /mnt/media
# Create your files and directories in here
mkdir -m777 /mnt/media/data
Agora corrija o caminho de dados do Samba
[media]
comment = Media directory
path = /mnt/media/data
browseable = yes
read only = no
guest ok = yes
force directory mode = 0777
force create mode = 0666