Shutdown 4 dummies

> i comandi di spegnimento e di riavvio (reboot, poweroff, shutdown...) non 
> riesco a lanciarli da utente normale, pur essendo i permessi tutti settati in 
> maniera corretta.
[snip]
> Qulcuno sa dove pu? risiedere il problema?

-premesso che sarei curioso di sapere che cosa intendi per "permessi
tutti settati in maniera corretta" (hai dato loro il suid bit per root?)

-premesso che reboot e poweroff sono dei symlink a halt

-premesso che quello che hai riscontrato NON e' un problema, questo e' il
comportamento corretto in una macchina in cui c'e' separazione di
privilegi tra i vari utenti (d'accordo, diamo per buono che essendo tu
l'unico utente del sistema e avendo accesso da locale vuoi poterlo
accendere e spegnere quando ti pare anche da utente)

-premesso che ci sono centinaia di modi per ottenere il solito risultato

il modo corretto(tm) per fare cio' che chiedi e' il seguente:

installa sudo (apt-get install sudo sotto debian)

lancia visudo (o edita il file /etc/sudoers)

Aggiungi le seguenti righe al file:

pippo ALL=(root) NOPASSWD: /sbin/poweroff
pippo ALL=(root) NOPASSWD: /sbin/reboot

dove pippo e' il nome dell'utente che deve poter spegnere/riavviare la
macchina

Fatto questo per spegnere/riavviare la macchina come utente pippo bastera'
fare:

sudo /sbin/poweroff
sudo /sbin/reboot

Se ti da' ancora cosi' tanta noia scrivere un comando di X+4 caratteri
anziche' X allora aggiungi al .bash_profile nella home dell'utente pippo
le seguenti righe:

alias poweroff='sudo /sbin/poweroff'
alias reboot='sudo /sbin/reboot'

Fai uscire/rientrare l'utente e potrai usare i comandi poweroff e reboot
in modo trasparente tramite sudo.

Il metodo + sporco (dare il suid bit a halt, shutdown e compagnia) e'
sconsigliabile in quanto permette a *qualsiasi* uid di
spegnerti/riavviare (quindi DoSsare) la macchina. Con sudo mantieni un
controllo su *quale* uid puo' fare *cosa*.

Come nota finale, ricordo che per poter spegnere la macchina c'e'
bisogno del supporto per APM o del piu' evoluto ACPI (statico o modulare)
nel kernel.
Non puoi usare entrambi. O l'uno o l'altro. 

La maggior parte dei BIOS ha un supporto ACPI buggato. Per utilizzare
ACPI hai bisogno anche di acpid.
Per utilizzare ACPI devi ricompilare il kernel aggiungendo le seguenti
voci:

CONFIG_PM=y
CONFIG_ACPI=y
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_BUSMGR=y
CONFIG_ACPI_SYS=y
CONFIG_ACPI_CPU=y
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_AC=y
CONFIG_ACPI_EC=y
CONFIG_ACPI_CMBATT=y
CONFIG_ACPI_THERMAL=y
# CONFIG_APM is not set

AC, EC, CMBATT e THERMAL servono solo per i portatili ovviamente.

Se il supporto acpi e' buggato puoi ripiegare su APM.
Se la tua distribuzione non lo ha incluso direttamente nel kernel
puoi provare a caricarlo con:

modprobe apm

Se non trova il modulo devi ricompilare il kernel con le seguenti
opzioni abilitate:

CONFIG_PM=y
# CONFIG_ACPI is not set
CONFIG_APM=m
# CONFIG_APM_IGNORE_USER_SUSPEND is not set
CONFIG_APM_DO_ENABLE=y
CONFIG_APM_CPU_IDLE=y
# CONFIG_APM_DISPLAY_BLANK is not set
CONFIG_APM_RTC_IS_GMT=y
CONFIG_APM_ALLOW_INTS=y
# CONFIG_APM_REAL_MODE_POWER_OFF is not set

Puo' darsi che tu debba anche abilitare CONFIG_APM_REAL_MODE_POWER_OFF o
CONFIG_APM_DISPLAY_BLANK o CONFIG_APM_IGNORE_USER_SUSPEND a seconda di
quanto e' buono il BIOS della tua motherboard :)
Vai per tentativi.

Mando questo post in CC a linux@ml.oltrelinux.com perche' so che c'e'
molta confusione sull'argomento.

Sperando di aver fatto cosa gradita...
Share
 
  1. No comments posted yet

Leave a comment

You must be logged in to post a comment.