So erstellen Sie eine Datei, die auch von einem Root-Benutzer nicht gelöscht werden kann

13

Wie erstelle ich eine Datei, die selbst ein Root-Benutzer nicht löschen kann?

Kumar
quelle
9
Während die Antwort von tante Ihre Frage abdecken sollte, gibt es einen Metakommentar dazu: Es wäre viel einfacher zu beantworten, wenn Sie Ihre Begründung zu Ihrer Frage hinzufügen würden. Vielleicht gibt es eine Lösung für Ihr Problem, die nicht darin besteht, das Löschen der Datei (en) zu verhindern?
Fschmitt

Antworten:

33

Einfache Antwort: Sie können nicht, root kann alles.

Sie können das Attribut "i" mit chattr setzen (zumindest wenn Sie sich in ext {2,3,4} befinden), wodurch eine Datei unveränderlich wird, aber root kann das Attribut einfach aufheben und die Datei trotzdem löschen.

Komplexer (und hässlicher, hackiger Workaround): Legen Sie das Verzeichnis, das für root unveränderlich sein soll, auf dem Remote-Server ab und hängen Sie es über NFS oder SMB an. Wenn der Server keine Schreibrechte bietet, wird das lokale Root-Konto gesperrt. Natürlich könnte das lokale Root-Konto die Dateien einfach lokal kopieren, das Remote-Zeug aushängen, die Kopie anbringen und das ändern.

Sie können root nicht daran hindern, Ihre Dateien zu löschen. Wenn Sie nicht darauf vertrauen können, dass Ihr Root die Dateien intakt hält, haben Sie ein soziales Problem, kein technisches.

tante
quelle
Diese Frage wird mir von einem Interviewer gestellt. Ich weiß die Antwort nicht. Ich bat ihn um Antwort. Er sagte, es sei möglich und finde selbst eine Lösung.
Kumar
12
Auch Sie werden eines Tages ein Interviewer sein und unsinnige Fragen stellen können: "Kann root eine Datei erstellen, die so groß ist, dass er es nicht mvkann?" (das ist ein lahmer Witz, der auf christlicher Theosophie basiert, und ein schrecklicher Witz, wenn Sie nicht mit dem Gebiet vertraut sind)
msw
5
@msw: Man könnte argumentieren, dass es ein schrecklicher Witz ist, auch wenn Sie mit dem Gebiet vertraut sind.
Matthew Crumley
@ Matthew Crumley: Schuldig wie angeklagt :)
msw
@msw: Mir ist gerade aufgefallen, dass Sie sogar zugegeben haben, dass es ein lahmer Witz war. Und FWIW, ich mag (einige) lahme Witze, also hat es mir wirklich gefallen. Dies wird jedoch ziemlich weit vom Thema entfernt :)
Matthew Crumley
34

Legen Sie es auf eine CD-ROM! ;)

(Dies sollte ein Kommentar sein, aber ich kann keine Kommentare machen ...)

laurent
quelle
Hinter der Reputationsgrenze für Kommentare steckt ein Sinn ;-) Nur ein kleiner Impuls, der zum Nachdenken anregt. keine Flamme beabsichtigt ;-)
Echox
6
+1 Aber das würde funktionieren.
Richard Holloway
1
Dies und die Antwort von @mouviciel ist die einzig richtige Lösung. Sogar die allmächtige @root ist immer noch an die von der Hardware festgelegten Regeln gebunden.
Lie Ryan
15

Legen Sie Ihre Datei in einem schreibgeschützten Dateisystem ab. Dies kann ein Remote-FS sein, bei dem root nicht mehr root ist, eine CD-ROM oder ein Wechselmedium, das schreibgeschützt sein kann, z. B. eine SD-Karte.

mouviciel
quelle
2

Vor langer Zeit habe ich einen Kernel-Patch (auf 2.2.ancient) geschrieben, bei dem der Versuch, eine Datei mit dem Namen SELFDESTRUCT zu löschen, den aufrufenden Prozess zum Erliegen brachte. Dies schützt vor versehentlichem "rm -rf *".

pjc50
quelle
Vor langer Zeit und weit weg. Wie hast du das eigentlich gemacht (Befehle)?
Michael Durrant
1

Mit können Sie chattr +ieine Datei unveränderlich machen.

Natürlich kann ein versierter Benutzer mit Root-Zugriff weiterhin chattr -idas unveränderliche Attribut entfernen und dann die Datei löschen. Er kann jedoch auch alle anderen hier aufgeführten Versuche, den Zugriff zu blockieren, rückgängig machen.

Ich würde argumentieren, dass chattr der richtige Weg ist, dies unter Unix zu tun.

jeremyjjbrown
quelle