Sono dentro /sbine vedo che shutdownha i permessi rwxr-xr-x. Questo non significa che chiunque può eseguirlo?
shutdowncomando.
shutdown.
Sono dentro /sbine vedo che shutdownha i permessi rwxr-xr-x. Questo non significa che chiunque può eseguirlo?
shutdowncomando.
shutdown.
Risposte:
Chiunque può eseguire shutdown, ma l'attivazione di un arresto del sistema richiede i privilegi di root. Ma shutdownnon è setuid, quindi solo root può eseguirlo correttamente . Il shutdownprogramma è abbastanza carino da controllare i tuoi privilegi e farti sapere se c'è un problema, ma anche se provasse ingenuamente un arresto del sistema, non accadrebbe nulla.
GLENDOWER: Posso chiamare spiriti dal vasto profondo.
HOTSPUR: Perché, anche io, così posso fare qualsiasi uomo; Ma verranno quando li chiamerai?
(da Enrico IV)
shutdownnon è diverso da /bin/rm. Tutti possono eseguirlo, ma un utente normale non può rimuovere /etco la home directory di un altro utente.
In particolare: solo un processo in esecuzione con privilegi di root (UID 0 effettivo) può indirizzare il sistema init per arrestare i servizi di sistema, terminare tutti i processi dell'utente ed emettere la chiamata di sistema che arresta effettivamente la macchina. (Se shutdownfosse setuid, verrebbe eseguito come root indipendentemente da chi lo invoca; ma non lo è.)
Che ne dici di chiamare shutdownda una GUI, ad es. Con control-alt-del? È importante rendersi conto che in quel caso, shutdownè avviato direttamente da inite funziona con i privilegi di root. Quindi chiunque si avvicini alla console potrebbe potenzialmente spegnerlo. Se ciò non è desiderabile, control-alt-delete verrà effettivamente eseguito shutdown -a. (Vedi la documentazione citata da @ some1 nella loro risposta). Ciò indica shutdowndi verificare se l'utente attualmente connesso è autorizzato a eseguirlo. Ma questo è rilevante solo perché shutdownè in esecuzione come root in questo scenario.
shutdown, ma quel programma non può effettivamente attivare un arresto del sistema a meno che l'utente corrente disponga dei privilegi di root. Destra?
shutdown. Un programma setuid viene eseguito con le autorizzazioni dell'utente proprietario dell'eseguibile. Ad esempio, /etc/passwdviene eseguito con i permessi di root per consentire di modificare il file della password. Vedi la manpage per chmod.
/usr/bin/passwdeseguito con i permessi di root"! /etc/passwdnon è eseguibile (è il "file password" che viene modificato).
Il binario shutdownstesso controlla se il tuo UID è 0.
Vedi l'output di strace di:
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) = ?
shutdownche il tuo UID è 0.
if(getuid() != 0) printf("Need to be root");. Che in realtà il codice sorgente mostra che è.
Sembra che l'arresto controllerà un elenco di accesso se lo contrassegni con -a:
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.
Dato che al momento lo stai chiamando senza il flag -a, per impostazione predefinita consente solo gli arresti di root.
Se vuoi che altri utenti siano in grado di eseguire il comando, configura quel file e usa il flag.
Why can't I execute shutdown when the permission is rwxr-xr-x?
I bit di autorizzazione non escludono necessariamente il controllo dell'accesso basato su un utente o un gruppo.
-adalla riga di comando non farà alcuna differenza: shutdown -adeve comunque essere eseguito con i permessi di root (che initfornisce su control-alt-del).