Das Entfernen der Schreibberechtigung verhindert nicht, dass root in die Datei schreibt

31

Auf meinem Ubuntu-Rechner (ext3-Dateisystem) ist mir gerade aufgefallen, dass das Entfernen von Schreibberechtigungen aus einer Datei nicht verhindert, dass root darauf schreibt.

Ist dies eine allgemeine Regel für UNIX-Dateiberechtigungen? Oder Ubuntu-spezifisch? Oder eine Fehlkonfiguration auf meinem Computer?

# touch abc
# chmod ugo-w abc
# Python
Python 2.6.4 (r264: 75706, 7. Dezember 2009, 18:45:15) 
[GCC 4.4.1] unter Linux2
Geben Sie "help", "copyright", "credits" oder "license" ein, um weitere Informationen zu erhalten.
>>> öffne ('abc', 'w'). schreibe ('AAA \ n')
>>> 
# Katze abc
AAA

Das Schreiben in die Datei schlägt (wie erwartet) fehl, wenn ich dies von meinem normalen Benutzerkonto aus tue.

  1. Ist das normales Verhalten?

  2. Gibt es eine Möglichkeit zu verhindern, dass root versehentlich in eine Datei schreibt? (Vorzugsweise normale Dateisystemmechanismen verwenden, nicht AppArmor usw.)

Bitte bringen Sie mir etwas bei, das ich definitiv nicht verstehe.

HINWEIS: Ich verstehe, dass root die vollständige Kontrolle über das System hat und z. B. die Berechtigungen für jede Datei ändern kann. Meine Frage ist, ob aktuell eingestellte Berechtigungen für Code erzwungen werden, der als root ausgeführt wird . Die Idee ist, dass der Root-Benutzer verhindert, dass er versehentlich in eine Datei schreibt.

HINWEIS: Ich verstehe auch, dass man für den normalen Betrieb nicht als root angemeldet sein sollte . Ich habe dieses Verhalten gerade bemerkt und frage Sie danach.

Laramichaels
quelle

Antworten:

46

1) Dies ist ein normales Verhalten. root hat jederzeit Zugriff auf alle Dateien.

2) Sie können eine Datei auch vor Root schützen (nicht absichtlich, aber dennoch versehentlich), indem Sie verwenden

chattr +i filename.ext

Das heißt "Attribute ändern, unveränderlich hinzufügen". So entfernen Sie den Schutz:

chattr -i filename.ext

haben einen Blick auf man chattrfür weitere Informationen

brice
quelle
@brice: vielen dank. geht direkt auf meine frage ein. wusste nichts über chattr.
Laramichaels
Mein System scheint root-Zugriff zu benötigen chattr. Gibt es einen Benutzermodus zum Festlegen solcher Attribute?
Quack Quijote
1
... obwohl es eine großartige Antwort auf die Frage ist, "kann rooteine Datei so gut schützen, auch wenn er sie nicht löschen kann"!
Quack Quijote
4
Genauer gesagt (im Falle von Linux jedenfalls) hat root die CAP_DAC_OVERRIDEMöglichkeit, ACLs und Berechtigungen zu ignorieren.
Grawity
1
Zu Ihrer Information, das Äquivalent dazu unter OS X besteht sudo chflags <s|u>chg <file>darin, es für das System bzw. den Benutzer unveränderlich zu machen und sudo chflags no<s|u>chg <file>das unveränderliche Flag für das System bzw. den Benutzer zu deaktivieren.
GDP2
3
  1. Ja das ist normal Wurzel ist Gott.

  2. Ja, es gibt Möglichkeiten, zu verhindern, dass root Dateien überschreibt.

    • Setzen Sie das unveränderliche Bit mit chattr( +isetzt, -isetzt nicht). Erfordert Root-Zugriff, funktioniert nur mit ext2 / ext3 (vermutlich auch mit ext4), ist aber ansonsten praktisch.
    • Führen Sie Apps nicht als Root aus. Keine root-Rechte, keine überschreibenden Dateien. Verwenden Sie sudodiese Taste, um auf Systemfunktionen zuzugreifen.
    • Hängen Sie das Dateisystem aus. Keine gemounteten fs, keine überschreibenden Dateien. [*]
    • Computer ausschalten. Kein Strom, keine überschreibenden Dateien.

Diese Methoden folgen logischerweise aus # 1. Wie Sie sehen, sind die letzten beiden Methoden in der Regel nicht sinnvoll, ebenso wenig wie der Schutz von Windows vor Viren durch Entfernen des Netzwerks. Deshalb ist root gefährlich. [+]

[*] Natürlich ohne die Möglichkeit, "versehentlich" direkt auf das Block-Gerät zu schreiben. Ja, root kann das. Ja, das können Sie verhindern: Trennen Sie das Gerät.

[+] Hierher kommen auch die BOfH-Mythen. Sie sind nicht alle Mythen.

Quacksalber
quelle
@ ~ quack: die methode von brice ist viel praktischer als die drei, die du auflistest. :)
laramichaels
@ ~ quack: meine frage hat deutlich gemacht, dass ich die probleme mit ausgeführten befehlen als root verstehe.
Laramichaels
3

Sie können auch den Dateizugriff für den Root-Benutzer einschränken, indem Sie den Linux-Kernel "Capabilities" verwenden: http://www.securityfocus.com/infocus/1400

Es besteht auch die Möglichkeit, SE-Linux oder einen anderen Kernel-Patch zu verwenden, um einige Dateien sogar für Roots unveränderlich zu machen.


quelle
0

Ich denke, solange root der Superuser ist und er alles kann, können Sie ihm keine Erlaubnis entziehen, auch wenn Sie der Root sind. Es soll der Wille des Roots sein, zu verhindern, dass er eine Operation ausführt oder nicht (z. B. in eine Datei schreiben oder eine Anwendung öffnen).

Also nein, es besteht die Möglichkeit, dass Sie nur das Root-Konto deaktivieren, um eine missbräuchliche Verwendung zu verhindern.

Grüße

[Notiz an mich selbst: ihr sollt demütig sein ... vielleicht irrt ihr euch]

dag729
quelle