Ich verstehe, dass dies eine etwas grundlegende und vielleicht dumme Frage ist, aber ich konnte keine Antwort finden.
Ich verstehe, dass jede Datei das "Executable"
Bit hat.
Ich ging davon aus, dass Programme, die Benutzer und Gruppen benötigen root
, nicht das Bit dafür haben und verhindern würden, dass Nicht-Root-Benutzer diese ausführen. Aber in den Verzeichnissen und sehe ich, dass alle Dateien Berechtigungen wie habenroot
root
Executable
Other
/bin
/sbin
-rwxr-xr-x
Was bestimmt also wirklich, ob ein Benutzer Root-Berechtigung benötigt, um etwas auszuführen?
permissions
root
Dean
quelle
quelle
/bin
oder/sbin
Verzeichnisse ausführen . Das Problem ist, dass einige dieser Programme unterschiedlich ausgeführt werden, je nachdem, welcher Benutzer sie ausführt.Antworten:
Irgendwann steht es im Code. Auf halbem Weg
hwclock.c
finden Sie zum Beispiel :Dies ändert das Verhalten des Programms, wenn Sie root sind oder nicht.
In den meisten anderen Fällen ist dies implizit. an den Kernel delegiert. Wenn das Programm beispielsweise den Systemaufruf aufruft, mit dem Sie das System neu starten können, funktioniert dies nur, wenn Sie root sind. Wenn Sie nicht root sind, wird der Fehler "Berechtigung verweigert" angezeigt, den die Anwendung (sofern gut geschrieben) Ihnen einfach meldet. Oder Sie versuchen, eine Datei zu löschen. Wenn Sie die richtige Berechtigung für die Datei haben, wird dies erfolgreich sein. Wenn nicht, hängt es davon ab, ob Sie root sind oder nicht - bei
rm
Aufrufenunlink()
überprüft der Kernel die Berechtigungen.Also nein, im Prinzip kann man nicht nur die Berechtigung der ausführbaren Datei betrachten, ob das Programm Root-Rechte benötigt oder nicht. Viele Programme benötigen sie nur für einen bestimmten Vorgang, daher ist es sehr schwierig, so etwas zu tun. Der Fall
hwclock
ist ein (jemand die Uhr lesen kann , aber nur einer kann es root gesetzt ist ), aber es gibt Hunderte von ihnen (kill
,rm
,cat
...)Dann gibt es die verwandte und interessante Welt der Setuid- Programme ...
quelle