Ist es möglich, eine Datei zu erstellen, die über alle Berechtigungen verfügt, aber nicht gelöscht werden kann?


Antworten:


3

Versuchen:

chattr +i filename

Wenn Sie dies dennoch tun, kann die Datei auch vom rootBenutzer nicht gelöscht werden. Gehen Sie dabei mit Vorsicht vor.


5
wenn es das tut touch test && chattr +i test, wirft es einen Fehler aus; chattr: Operation not permitted while setting flags on test. Sie brauchen sudodafür. Daneben ist es noch möglich, die Datei zu löschen: sudo chattr -i test && rm testfunktioniert.
Rinzwind

23

Nein das ist nicht möglich. Normalen Benutzern ist es nicht möglich, eine Datei zu löschen.

  1. Sie müssen sudoverhindern, dass Benutzer Dateien löschen. Ihr Administrator kann immer eine Datei löschen.

  2. sudo chattr +i testkann das Löschen verhindern, erfordert aber sudo. Ein einfaches sudo chattr -i testmacht es möglich, die Datei zu entfernen. Kein anderer Benutzer als admin kann verwenden chattr.

Und ... durch einfaches Neustarten und Aufrufen des Rettungsmodus kann diese Person diese Datei löschen. Es wäre ein Sicherheitsrisiko, wenn es eine Methode gäbe, um eine Datei niemals löschen zu können.


8

Es ist ein wenig grob, aber das ist nah - wenn Sie den Schreibzugriff auf das Verzeichnis entfernen, können die darin enthaltenen Dateien nicht gelöscht werden. Und es ist nicht erforderlich, sudowenn Sie es besitzen:

=^_^= izkata@izein:~$ mkdir test
=^_^= izkata@izein:~$ touch test/delme
=^_^= izkata@izein:~$ chmod a-w test
=^_^= izkata@izein:~$ echo 'Hello' > test/delme 
=^_^= izkata@izein:~$ cat test/delme 
Hello
=^_^= izkata@izein:~$ rm test/delme 
rm: cannot remove `test/delme': Permission denied

So können Sie Berechtigungen für die Datei selbst festlegen, wie Sie möchten.

Wie von @Rinzwind angegeben, gibt es sicherlich viele Möglichkeiten, dies zu umgehen.


Das sieht genau so aus, wie es das OP wollte. ( Ich bin mir nicht sicher, warum sie es wollten.) Benutzer können die Dateien lesen, ändern und ausführen, aber nicht die Verknüpfung aufheben (entfernen).
Eliah Kagan

8

Um eine Datei zu löschen, benötigen Sie Schreibrechte für alle Verzeichnisse, mit denen die Datei verknüpft ist. Um die Verknüpfung zu einem Verzeichnis aufzuheben, benötigen Sie eine Schreibberechtigung für dieses Verzeichnis.

Solange Sie der Datei eine Schreibberechtigung (oder sogar ein Eigentumsrecht) erteilen, jedoch nicht dem Verzeichnis oder den Verzeichnissen , mit denen diese Datei verknüpft ist, kann diese Datei nicht gelöscht werden.

Der beste Weg, dies zu erreichen, besteht darin, diese Datei mit einem Verzeichnis zu verknüpfen, dessen Eigentümer root ist und das von niemandem beschrieben werden kann. Sie könnten es stattdessen zu Ihrem Eigentum machen, was bedeuten würde, dass Sie und root es löschen könnten.

Auf diese Weise könnten andere Benutzer diese Datei weiterhin mit anderen Verzeichnissen verknüpfen und von dort aus die Verknüpfung aufheben. Sie könnten die Datei jedoch weiterhin nicht löschen, da sie die Verknüpfung zu Ihrem eigenen Verzeichnis aufheben könnten.

Damit dies vollständig funktioniert, muss die Schreibberechtigung für jede Pfadkomponente zur Datei gesteuert werden. Da zum Beispiel , wenn die Datei , /a/b/the-fileund Sie haben /a/bnicht beschreibbar von jedermann , aber jeder hat den Schreibzugriff auf /a, dann könnten sie umbenennen , /a/bum etwas anderes und ihre eigenen erstellen /a/bund ihre eigenen schaffen /a/b/the-filees.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.