Welche Root-Berechtigungen gelten für eine Datei?

Welche Root-Berechtigungen gelten für eine Datei?

Wenn ich eingebe:

ls -l file.txt

Ich sehe, dass die Rechte für diese Datei denen von „456“ entsprechen:

  • 4 = Eigentümer (r--)
  • 5 = Gruppe (rx)
  • 6 = andere (rw-)

Welche Rechte gelten fürWurzelin diesem Fall? Hat es 777?

Könnten die Rechte so geändert werden, dass der Root weniger Berechtigungen hat als der Eigentümer?

Antwort1

Ich würde prüfendiese Seite aus. Es geht ausführlich auf Dateiberechtigungen ein.

Aber um Ihre Frage direkt zu beantworten: Nein:

Der Superuser „root“ hat die Möglichkeit, auf alle Dateien im System zuzugreifen.

Wenn in Ihrem Beispiel beispielsweise die Datei Eigentümer von ist bobund der Gruppeneigentümer ebenfalls ist bob, würden Sie etwa Folgendes sehen:

-r--r-xrw-. 1 bob bob 8 Jan 29 18:39 test.file

Die 3. Bitgruppe (rw) würde auch für root gelten, da root Teil der othersGruppe ist. Wenn Sie versuchen würden, diese Datei als root zu bearbeiten, würden Sie sehen, dass dies kein Problem darstellt.

Aber um Ihre Theorie noch genauer zu testen, wenn die Datei root gehörte:

-r--r-xrw-. 1 root root 8 Jan 29 18:40 test.file

Und wenn Sie die Datei erneut bearbeiten möchten, werden Sie feststellen, dass Sie weiterhin keine Probleme beim Bearbeiten haben.

Und schließlich, wenn Sie das Äußerste getan haben:

chmod 000 test.file
ls -lh test.file
----------. 1 root root 8 Jan 29 18:41 test.file

Und Sie würden die Datei erneut bearbeiten (zumindest in vi/vim) "test.file" [readonly]. Sie können die Datei aber immer noch bearbeiten und das Speichern mit erzwingen :wq!.


Testen der Behauptung von @Stéphane Chazelas mit einer Shell-Skriptdatei:

#!/bin/sh

echo "I'm alive! Thanks root!"


[root ~]# ls -lh test.sh
----------. 1 atgadmin atgadmin 31 Jan 30 10:59 test.sh

[root ~]# ./test.sh
-bash: ./test.sh: Permission denied

[root ~]# sh test.sh
I'm alive! Thanks root!

@Shadur hat es bereits gesagt, deshalb werde ich es einfach zitieren, anstatt es noch einmal zu wiederholen:

Hinweis: Es wird geprüft, ob das Ausführungsbit vorhanden ist, nicht, ob es für Root anwendbar ist.

Antwort2

Root hat per Design vollen Zugriff auf jede Datei im System. Wenn Sie eine Datei vor versehentlichem Löschen schützen möchten, können Sie verwenden

chattr +i file

Dadurch wird das unveränderliche Flag unter GNU/Linux gesetzt. Sie können es mit -ianstelle von entfernen +i.

Unter FreeBSD können Sie

chflags schg file

Ersetzen Sie es durch „ noschgum schges rückgängig zu machen“.

Wenn Sie verhindern möchten, dass eine Datei für den Root-Benutzer sichtbar ist, sollten Sie die Datei auf einem anderen System speichern oder als letzten Ausweg die Verschlüsselung verwenden.

Siehe auch:https://superuser.com/questions/104015/das Entfernen der Schreibberechtigung verhindert nicht, dass Root in die Datei schreibt

Antwort3

Könnten die Rechte so geändert werden, dass der Root weniger Berechtigungen hat als der Eigentümer?

Klar, es ist einfach. Ändern Sie einfach die Passwd-Datei, sodass die UID des Roots nicht Null ist. Tun Sie das andererseits nicht, es ist eine schlechte Idee.

Sie sind nicht die erste Person, die diese Frage stellt, und einige dieser Personen hatten die Idee mit den Fähigkeiten, aber darauf kommen wir gleich zurück. Lassen Sie uns zunächst damit beginnen, zu verstehen, wie das Berechtigungssystem funktioniert.

Der Teil des Computers, der die Zugriffsprüfungen durchführt, kennt Ihren Namen nicht, sondern Ihre Nummer. Diese Nummer wird als UID oder Benutzerkennung bezeichnet. Ebenso kennt er nicht die Namen der Gruppen, deren Mitglied Sie sind, sondern nur die GID. Die Zuordnung zwischen UID und Name befindet sich in der Datei „Passwd“, und die GID wird in der Datei „Groups“ zugeordnet.

Wenn Sie nun eine Datei öffnen möchten, werden vier Prüfungen durchgeführt: Haben Sie die Berechtigung, die Prüfungen zu überspringen, dürfen Sie dies als Benutzer, dürfen Sie dies als Mitglied einer Gruppe und dürfen Sie dies als jemand anderes. Ich überspringe hier einige Dinge wie Name Service Switch und Zugriffskontrolllisten sowie Lesen, Schreiben und Ausführen, aber der Teil, der Sie interessiert, ist dieser erste Test.

Manchmal dürfen Sie die Dateiberechtigungsprüfungen überspringen. Warum? Und (sehr wichtig) wann? Nun gibt es einige Dinge, die manchmal erledigt werden müssen, die Sie nicht von jedem erledigen lassen möchten und die nicht gut in das Dateiberechtigungsmodell passen. Alle möglichen Dinge wie das Öffnen einer Netzwerkverbindung auf einem niedrigen Port, das Mounten einer Partition oder das Überspringen von Berechtigungsprüfungen. Heutzutage werden diese Dinge als Fähigkeiten bezeichnet. Früher hatte UID0 all diese Fähigkeiten und Sie konnten nichts dagegen tun. Heutzutage können Sie anderen Benutzern Fähigkeiten erteilen oder sie löschen, aber die Standardeinstellung ist das alte Verhalten.

Die andere Möglichkeit, Root einzuschränken, besteht in der Verwendung von etwas wie Selinux, aber das ist eine andere Geschichte.

Antwort4

Welche Rechte hat Root in diesem Fall? Hat er 777?

Ja.

Wie bereits erwähnt, werden Lese- und Schreibberechtigungen für Root nicht erzwungen. Allerdings wird trotzdem geprüft, ob eine Ausführungsberechtigung vorhanden ist. Root könnte die Datei also nicht ausführen, wenn kein Ausführungsflag gesetzt ist. Dies ist hier nicht der Fall, da die Gruppe über das xFlag verfügt.

Beachten Sie auch, dass unabhängig davon, ob die Schreibberechtigung erteilt wurde oder nicht, root oder anderen Benutzern der Schreibzugriff auf eine Datei verweigert wird, die in einem schreibgeschützten Dateisystem gespeichert ist.

Root hat möglicherweise auch weniger Rechte als der Eigentümer, wenn die Datei in einem remote gemounteten Verzeichnis wie NFS gespeichert ist.

Beachten Sie abschließend, dass die Berechtigungen für symbolische Links grundsätzlich bedeutungslos sind.

verwandte Informationen