Usa la NOPASSWDdirettiva
Puoi usare la NOPASSWDdirettiva nel tuo /etc/sudoersfile .
Se viene chiamato il tuo utente e viene chiamato il usertuo host, hostpuoi aggiungere queste righe a /etc/sudoers:
user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot
Ciò consentirà all'utente userdi eseguire i comandi desiderati hostsenza immettere una password. Tutti gli altri sudocomandi ed richiedono comunque una password.
I comandi specificati nel sudoersfile devono essere pienamente qualificati (ovvero utilizzando il percorso assoluto del comando per l'esecuzione) come descritto nella sudoerspagina man . Fornire un percorso relativo è considerato un errore di sintassi.
Se il comando termina con un /carattere finale e punta a una directory, l'utente sarà in grado di eseguire qualsiasi comando in quella directory (ma non in alcuna sottodirectory). Nel seguente esempio, l'utente userpuò eseguire qualsiasi comando nella directory /home/someuser/bin/:
user host = (root) NOPASSWD: /home/someuser/bin/
Nota: utilizzare sempre il comando visudoper modificare il sudoersfile per assicurarsi di non bloccarsi fuori dal sistema, nel caso in cui si scriva accidentalmente qualcosa di errato nel sudoersfile. visudosalverà il file modificato in una posizione temporanea e sovrascriverà il file reale solosudoers se il file modificato può essere analizzato senza errori.
Usando /etc/sudoers.dinvece di modificare/etc/sudoers
In alternativa alla modifica del /etc/sudoersfile, è possibile aggiungere le due righe a un nuovo file, ad /etc/sudoers.des /etc/sudoers.d/shutdown. Questo è un modo elegante di separare diverse modifiche ai sudodiritti e lascia sudoersintatto il file originale per aggiornamenti più facili.
Nota: ancora una volta, è necessario utilizzare il comando visudoper modificare il file per assicurarsi di non bloccarsi fuori dal sistema:
sudo visudo -f /etc/sudoers.d/shutdown
Ciò garantisce inoltre automaticamente che il proprietario e le autorizzazioni del nuovo file siano impostati correttamente.
Se sudoersè incasinato
Se non hai usato visudoper modificare i tuoi file e poi hai incasinato /etc/sudoerso incasinato un file per errore, /etc/sudoers.dverrai bloccato sudo.
La soluzione potrebbe essere quella di riparare i file usando pkexecquale è un'alternativa a sudo.
Per risolvere /etc/sudoers:
pkexec visudo
Per risolvere /etc/sudoers.d/shutdown:
pkexec visudo -f /etc/sudoers.d/shutdown
Se la proprietà e / o le autorizzazioni non sono corrette per qualsiasi sudoersfile, il file verrà ignorato, sudoquindi potresti anche ritrovarti bloccato in questa situazione. Ancora una volta, è possibile utilizzare pkexecper risolvere questo problema.
Le autorizzazioni corrette dovrebbero essere così:
$ ls -l /etc/sudoers.d/shutdown
-r--r----- 1 root root 86 Jul 16 15:37 /etc/sudoers.d/shutdown
Utilizzare in pkexecquesto modo per correggere la proprietà e le autorizzazioni :
pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown