In che modo il pulsante di accensione spegne il computer senza il permesso di root?


36

Quando provo a spegnere il computer da una riga di comando o terminale devo avere i privilegi di root:

amy@amy:~$ shutdown now
shutdown: Need to be root

e

amy@amy:~$ halt
halt: Need to be root

ma quando si spegne utilizzando l'interfaccia utente grafica, ad esempio il pulsante di spegnimento o il pulsante di spegnimento hardware, non mi viene richiesta la password per farlo. Che cosa significa questo arresto per l'interfaccia grafica e perché non necessita della password o dei privilegi di root?

Sto usando Ubuntu 11.04 Natty.



1
perché se un utente malintenzionato ha accesso fisico al tuo computer, hai già perso. Tentare di impedire a qualcuno che si trova a portata di mano del box di fare praticamente qualsiasi cosa è, nella migliore delle ipotesi, una tattica di ritardo e causa principalmente più incongruenza per gli utenti quotidiani di quanto non farebbe per un attaccante. La maggior parte delle distro Linux ti darà un prompt di root se parlato severamente durante l'avvio per esattamente questo motivo.
Joseph Rogers,

Risposte:


33

Il pulsante di accensione dell'hardware attiva un evento ACPI a cui acpid(il daemon ACPI) si accorge e reagisce; in questo caso, spegnendo il sistema, anche se potresti farlo fare quello che vuoi. Il demone ACPI viene eseguito come root, quindi ha l'autorizzazione per arrestare il sistema. Gli ambienti desktop (ad es. gdmPer Gnome) in genere funzionano anche come root, quindi sospetto che funzionino allo stesso modo: non si dispone dell'autorizzazione per gdmarrestare il sistema, ma si può dire che si desidera spegnerlo e farlo su in tua vece


è sicuro ?? "potresti farlo fare quello che vuoi."
Amyassin,

7
Per arrivare acpida fare qualcosa di diverso da quello che già fa, dovresti essere root, quindi avresti già il permesso di fare cose insicure. È anche possibile utilizzare sistemi MAC come SELinux per proteggere acpid, limitando le cose che sono autorizzati a fare, anche mentre funzionano come root.
Warren Young,

5
@amyassin Bene, per cambiare ciò che serve sono necessari i privilegi di root; un utente normale non può dirgli cosa fare. Ma acpidè configurabile, può eseguire diversi script a seconda degli eventi hardware che vede (ad esempio, ho il acpidblocco del computer quando premo il pulsante di accensione)
Michael Mrozek

7
@amyassen Se qualcuno ha accesso fisico alla tua macchina, allora è troppo tardi per preoccuparsi della sicurezza - se il pulsante di accensione non attiva un arresto grazioso, può semplicemente tirare il cavo di alimentazione e causare un arresto ingrato .
Shadur,

3
Detto "software dannoso" avrebbe dovuto ottenere la proprietà di root e le autorizzazioni SUID per dire a init di fare con l'arresto - e ancora una volta, quando arriva a quel punto hai problemi più grandi di cui preoccuparti di un possibile arresto.
Shadur,

11

La risposta di Michael discute correttamente della funzione di sistema quando si utilizza l'interruttore di accensione hardware, ma la maggior parte degli ambienti desktop utilizza effettivamente dbusquesto scopo anziché farlo da soli. Per esempio, utilizza GNOME dbusl' org.freedesktop.Hal.Device.SystemPowerManagement.Shutdownquando il pulsante di spegnimento viene cliccato. Quando viene inviato, dbusesegue alcuni controlli per determinare se l'utente che invia il messaggio è autorizzato a eseguire un arresto e, in caso affermativo, arresta il sistema.

Puoi emularlo usando dbus-send. Ad esempio, per spegnere il sistema utilizzando dbus, utilizzare qualcosa del genere:

dbus-send --system --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.