Warum kann ein Benutzer ein Verzeichnis nicht löschen, das niemandem gehört?

Warum kann ein Benutzer ein Verzeichnis nicht löschen, das niemandem gehört?

Ich habe eine einfache Samba-Umgebung konfiguriert, um Mediendateien über SMB in meinem lokalen Netzwerk ohne Anmeldeinformationen (also als SMB-Gast) freizugeben.

/etc/samba/smb.conf

[media]                                                                                                                               
Comment = Media directory                                                                                                             
Path = /mnt/media                                                                                                                     
Browseable = yes                                                                                                                      
Writeable = Yes                                                                                                                       
create mask = 0666                                                                                                                    
directory mask = 0777                                                                                                                 
Public = yes

Wenn ich unter Windows mit SMB ein Verzeichnis mit dem Namen erstelle example, sieht die Verzeichnisstruktur folgendermaßen aus

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

Beim Versuch, das Verzeichnis mit einem Standardbenutzerkonto aus dem System zu löschen, erhalte ich eine Fehlermeldung.

rmdir: „Beispiel“ konnte nicht entfernt werden: Vorgang nicht zulässig

Ich kann den Ordner jedoch mithilfe von SMB unter Windows löschen. Was passiert hier und wie kann ich jedem lokalen Unix-Benutzer erlauben, von einem Gast über SMB erstellte Dateien zu löschen oder zu ändern?

Antwort1

Das tFlag in den Berechtigungen des übergeordneten Verzeichnisses gibt an, dass nur der Eigentümer eines Verzeichnisses (oder die Wurzel) eine Datei oder ein Verzeichnis daraus löschen kann.

Samba scheint so konfiguriert zu sein, dass Benutzerzugriff mit dem Konto gewährt wird nobody. Dies ist bei Ihnen nicht der nobodyFall und Sie haben daher nicht die Berechtigung, das Verzeichnis zu löschen.

Ich empfehle nicht, Dateien und Verzeichnisse auf der obersten Ebene zu erstellen. Belassen Sie dies für lost+foundein Datenverzeichnis und geben Sie dieses Datenverzeichnis anstelle des Einhängepunkts frei.

# 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

Korrigieren Sie nun den Samba-Datenpfad

[media]                                                                                                                               
    comment = Media directory
    path = /mnt/media/data
    browseable = yes
    read only = no
    guest ok = yes
    force directory mode = 0777
    force create mode = 0666

verwandte Informationen