Por que um usuário não pode excluir um diretório de propriedade de ninguém?

Por que um usuário não pode excluir um diretório de propriedade de ninguém?

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 exampleusando 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 tsinalizador 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ê nobodynã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+foundum 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

informação relacionada