Come eseguo comandi sudo specifici senza password?

185

Su una macchina particolare, spesso devo eseguire sudo comandi di tanto in tanto. Sto bene inserendo la password su sudo nella maggior parte dei casi.

Tuttavia ci sono tre sudo comandi Voglio eseguire senza inserire la password :

  • sudo reboot
  • sudo shutdown -r now
  • sudo shutdown -P now

Come posso escludere questi comandi dalla protezione con password a sudo ?

    
posta Z9iT 03.07.2012 - 10:31
fonte

1 risposta

250

Utilizza la direttiva NOPASSWD

Puoi utilizzare la direttiva NOPASSWD nel tuo /etc/sudoers file .

Se il tuo utente è chiamato user e il tuo host è chiamato host potresti aggiungere queste righe a /etc/sudoers :

user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot

Ciò consentirà all'utente user di eseguire i comandi desiderati su host senza immettere una password. Tutti gli altri comandi sudo richiederanno comunque una password.

I comandi specificati nel file sudoers devono essere pienamente qualificati (cioè utilizzando il percorso assoluto del comando da eseguire) come descritto nelle

Se il comando termina con un carattere finale sudoers e punta a una directory, l'utente sarà in grado di eseguire qualsiasi comando in quella directory (ma non in alcuna sottodirectory in esso). Nell'esempio seguente, l'utente / può eseguire qualsiasi comando nella directory user :

user host = (root) NOPASSWD: /home/someuser/bin/

Nota: usa sempre il comando /home/someuser/bin/ per modificare il file visudo per assicurarti di non bloccarti dal sistema - nel caso in cui tu abbia scritto per errore qualcosa di non corretto nel file sudoers . sudoers salverà il tuo file modificato in una posizione temporanea e solo sovrascriverà il vero file visudo se il file modificato può essere analizzato senza errori.

Uso di sudoers invece di modificare /etc/sudoers.d

In alternativa alla modifica del file /etc/sudoers , potresti aggiungere le due linee a un nuovo file in /etc/sudoers e.g. %codice%. Questo è un modo elegante per separare diverse modifiche ai diritti di /etc/sudoers.d e inoltre lascia il file /etc/sudoers.d/shutdown originale intoccato per aggiornamenti più semplici.

Nota: di nuovo, dovresti usare il comando sudo per modificare il file per assicurarti di non bloccarti dal sistema:

sudo visudo -f /etc/sudoers.d/shutdown 

Ciò garantisce automaticamente che il proprietario e le autorizzazioni del nuovo file siano impostati correttamente.

Se sudoers è incasinato

Se non hai utilizzato visudo per modificare i tuoi file e poi casualmente incasinato sudoers o incasinato un file in visudo , allora sarai bloccato fuori da /etc/sudoers .

La soluzione potrebbe essere quella di correggere i file usando /etc/sudoers.d che è un'alternativa a sudo .

Per correggere pkexec :

pkexec visudo

Per correggere sudo :

pkexec visudo -f /etc/sudoers.d/shutdown

Se la proprietà e / o le autorizzazioni non sono corrette per qualsiasi file /etc/sudoers , il file verrà ignorato da /etc/sudoers.d/shutdown , pertanto potresti trovarti bloccato in questa situazione. Ancora una volta, puoi utilizzare sudoers per risolvere il problema.

Le autorizzazioni corrette dovrebbero essere come questa:

$ ls -l /etc/sudoers.d/shutdown 
-r--r----- 1 root root 86 Jul 16 15:37 /etc/sudoers.d/shutdown

Usa sudo come questo per correggere proprietà e permessi :

pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown
    
risposta data mgd 03.07.2012 - 10:43
fonte

Leggi altre domande sui tag