Ich bin dabei /sbin
und sehe, dass shutdown
es Berechtigungen gibt rwxr-xr-x
. Bedeutet das nicht, dass jeder es ausführen kann?
permissions
security
shutdown
Korgan Rivera
quelle
quelle
shutdown
Befehl.shutdown
.Antworten:
Jeder kann ausführen
shutdown
, aber um ein Herunterfahren des Systems auszulösen, sind Root-Berechtigungen erforderlich.shutdown
Ist aber nicht setuid und kann nur root erfolgreich ausführen. Dasshutdown
Programm ist nett genug, um Ihre Privilegien zu überprüfen und Sie über ein Problem zu informieren, aber selbst wenn es ein System-Shutdown naiv versuchte, würde nichts passieren.shutdown
ist nicht anders als/bin/rm
. Jeder kann es ausführen, aber ein normaler Benutzer kann es nicht entfernen/etc
oder das Basisverzeichnis eines anderen Benutzers.Insbesondere: Nur ein Prozess, der mit Root-Rechten ausgeführt wird (effektive UID 0), kann das init-System anweisen, Systemdienste zu stoppen, alle Benutzerprozesse zu beenden und den Systemaufruf abzusetzen , der den Computer tatsächlich stoppt. (Wenn
shutdown
setuid angegeben wurde, wird es als root ausgeführt, unabhängig davon, wer es aufruft. Dies ist jedoch nicht der Fall.)Wie wäre es mit
shutdown
einem GUI- Aufruf , zB mit control-alt-del? Es ist wichtig zu wissen, dass es in diesem Fallshutdown
direkt von gestartet wirdinit
und mit Root-Rechten ausgeführt wird. Jeder, der auf die Konsole zugeht, kann sie möglicherweise herunterfahren. Wenn dies nicht erwünscht ist, wird Control-Alt-Delete ausgeführtshutdown -a
. (Siehe die Dokumentation, die @ some1 in ihrer Antwort zitiert). Damit wirdshutdown
überprüft, ob der aktuell angemeldete Benutzer berechtigt ist, es auszuführen. Dies ist jedoch nur relevant, dashutdown
in diesem Szenario als Root ausgeführt wird.quelle
shutdown
, aber dieses Programm kann kein Herunterfahren des Systems auslösen, es sei denn, der aktuelle Benutzer verfügt über Root-Berechtigungen. Recht?shutdown
. Ein setuid-Programm wird mit den Berechtigungen des Benutzers ausgeführt, dem die ausführbare Datei gehört. Wird beispielsweise/etc/passwd
mit Root-Berechtigungen ausgeführt, damit Sie die Kennwortdatei ändern können. Siehe die Manpage fürchmod
./usr/bin/passwd
mit root-Rechten laufen" sollen!/etc/passwd
ist nicht ausführbar (es ist die "Passwortdatei", die geändert wird).Die Binärdatei
shutdown
selbst prüft, ob Ihre UID 0 ist.Siehe die Ausgabe von strace:
quelle
shutdown
überprüft wird, ob Ihre UID 0 ist.if(getuid() != 0) printf("Need to be root");
. Was in der Tat der Quellcode zeigt, dass es so ist.Ja ! Jeder kann diesen Befehl ausführen. Wie Sie sagten, können Sie es ausführen, aber Sie werden mit der Meldung "Muss Root sein" konfrontiert, nicht mit einer
permission denied
. Dershutdown
Befehl prüftUID
, ob Sie als Root angemeldet sind oder nicht.quelle
Es scheint, dass das Herunterfahren eine Zugriffsliste überprüft, wenn Sie sie mit -a markieren:
Da Sie es derzeit ohne das Flag -a aufrufen, werden standardmäßig nur Root-Shutdowns zugelassen.
Wenn Sie möchten, dass weitere Benutzer den Befehl ausführen können, konfigurieren Sie diese Datei und verwenden Sie das Flag.
Berechtigungsbits schließen die Zugriffssteuerung basierend auf einem Benutzer oder einer Gruppe nicht unbedingt aus.
quelle
-a
von der Kommandozeile aus macht keinen Unterschied:shutdown -a
Muss immer noch mit root-Berechtigungen ausgeführt werden (wasinit
bei control-alt-del der Fall ist ).