Ich bin dabei /sbinund sehe, dass shutdownes Berechtigungen gibt rwxr-xr-x. Bedeutet das nicht, dass jeder es ausführen kann?
shutdownBefehl.
shutdown.
Ich bin dabei /sbinund sehe, dass shutdownes Berechtigungen gibt rwxr-xr-x. Bedeutet das nicht, dass jeder es ausführen kann?
shutdownBefehl.
shutdown.
Antworten:
Jeder kann ausführen shutdown, aber um ein Herunterfahren des Systems auszulösen, sind Root-Berechtigungen erforderlich. shutdownIst aber nicht setuid und kann nur root erfolgreich ausführen. Das shutdownProgramm 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.
GLENDOWER: Ich kann Geister aus der Tiefe rufen.
HOTSPUR: Warum kann ich das auch? Aber werden sie kommen, wenn du nach ihnen rufst?
(aus Heinrich IV.)
shutdownist nicht anders als /bin/rm. Jeder kann es ausführen, aber ein normaler Benutzer kann es nicht entfernen /etcoder 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 shutdownsetuid 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 shutdowneinem GUI- Aufruf , zB mit control-alt-del? Es ist wichtig zu wissen, dass es in diesem Fall shutdowndirekt von gestartet wird initund 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ührt shutdown -a. (Siehe die Dokumentation, die @ some1 in ihrer Antwort zitiert). Damit wird shutdownüberprüft, ob der aktuell angemeldete Benutzer berechtigt ist, es auszuführen. Dies ist jedoch nur relevant, da shutdownin diesem Szenario als Root ausgeführt wird.
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/passwdmit Root-Berechtigungen ausgeführt, damit Sie die Kennwortdatei ändern können. Siehe die Manpage für chmod.
/usr/bin/passwdmit root-Rechten laufen" sollen! /etc/passwdist nicht ausführbar (es ist die "Passwortdatei", die geändert wird).
Die Binärdatei shutdownselbst prüft, ob Ihre UID 0 ist.
Siehe die Ausgabe von strace:
strace /sbin/shutdown -r -h now
...
...
geteuid() = 10001
setuid(10001) = 0
getuid() = 10001
write(2, "shutdown: Need to be root\n", 26shutdown: Need to be root
) = 26
exit_group(1) = ?
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.
Es scheint, dass das Herunterfahren eine Zugriffsliste überprüft, wenn Sie sie mit -a markieren:
ACCESS CONTROL
shutdown can be called from init(8) when the magic keys CTRL-ALT-DEL are pressed, by creating an appropriate entry in /etc/inittab. This means that every‐
one who has physical access to the console keyboard can shut the system down. To prevent this, shutdown can check to see if an authorized user is logged
in on one of the virtual consoles. If shutdown is called with the -a argument (add this to the invocation of shutdown in /etc/inittab), it checks to see
if the file /etc/shutdown.allow is present. It then compares the login names in that file with the list of people that are logged in on a virtual console
(from /var/run/utmp). Only if one of those authorized users or root is logged in, it will proceed. Otherwise it will write the message
shutdown: no authorized users logged in
to the (physical) system console. The format of /etc/shutdown.allow is one user name per line. Empty lines and comment lines (prefixed by a #) are
allowed. Currently there is a limit of 32 users in this file.
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.
Why can't I execute shutdown when the permission is rwxr-xr-x?
Berechtigungsbits schließen die Zugriffssteuerung basierend auf einem Benutzer oder einer Gruppe nicht unbedingt aus.
-avon der Kommandozeile aus macht keinen Unterschied: shutdown -aMuss immer noch mit root-Berechtigungen ausgeführt werden (was initbei control-alt-del der Fall ist ).