Irgendwann steht es im Code. Auf halbem Weg hwclock.c
finden Sie zum Beispiel :
if (getuid() == 0)
permitted = TRUE;
else {
/* program is designed to run setuid (in some situations) */
if (set || systohc || adjust) {
warnx(_("Sorry, only the superuser can change "
"the Hardware Clock."));
[...]
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
Aufrufen unlink()
ü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 ...
/bin
oder/sbin
Verzeichnisse ausführen . Das Problem ist, dass einige dieser Programme unterschiedlich ausgeführt werden, je nachdem, welcher Benutzer sie ausführt.