
Ich schlage vor, dass ich eine Protokolldatei mit der Berechtigung 666 habe und deren Besitzerin Alice ist. Der Benutzer „Bob“ kann den Besitzer also folgendermaßen ändern:
cp log log.temp; rm log; mv log.temp log
Wie kann ich dieses Risiko also beheben?
Antwort1
Wie Andrey oben sagt, kann Bob nur tun, was Sie sagen, wenn er Rechte für das Verzeichnis hat, das die Datei enthält. Ändern Sie einfach die Verzeichnisberechtigungen auf xx5, wenn Bob zwar Zugriff haben soll, aber keine neuen Dateien erstellen kann.
ausUNIX-Berechtigungen verstehen
Zugriffsberechtigungen für Dateien und Ordner bedeuten aus Benutzersicht unterschiedliche Dinge.
Für Dateien
- Lesen: Wenn der Dateiinhalt gelesen werden kann
- Schreiben:Ob Benutzer oder Prozess in die Datei schreiben können (ihren Inhalt ändern)
- Ausführen:Wenn die Datei ausgeführt werden kann
Für Verzeichnisse
- Lesen:Wenn der Verzeichniseintrag erhältlich ist
- Schreiben:Wenn Benutzer oder Prozesse den Verzeichnisinhalt irgendwie ändern können: Erstellen Sie neue oder löschen Sie vorhandene Dateien im Verzeichnis oder benennen Sie Dateien um.
- Ausführen:Wenn der Benutzer oder Prozess auf das Verzeichnis zugreifen kann, d. h., dorthin wechseln (es zum aktuellen Arbeitsverzeichnis machen)
Antwort2
Unter der Annahme, dass der OP einen guten Grund hatte, Alice und Bob Schreibberechtigung für das Protokollverzeichnis zu erteilen, lautet die alternative Antwort.
chmod og+t directorypath
Das Problem besteht nicht darin, dass der Benutzer die Protokolldatei lesen oder sogar neue Dateien im selben Verzeichnis erstellen kann, sondern darin, dass er die vorhandene Protokolldatei verschieben und löschen kann.
+t
beschränkt das Verschieben und Löschen von Dateien in einem Verzeichnis auf ausschließlich den Eigentümer der Datei (abgesehen vom Root-Zugriff).
So /tmp
funktioniert dir.