Domanda: Volevo installare un pacchetto come utente locale e usare sudo dove richiesto. Per farlo, ho creato un account chiamato "stack" e ho inserito la voce seguente nel mio /etc/sudoers file.
# User privilege specification root ALL=(ALL:ALL) ALL stack ALL=(ALL) NOPASSWD:ALL
Tuttavia, se verificato tramite riga di comando utilizzando il comando sudo -s , richiede la password come di seguito indicato:
stack@cloudsec2:~$ sudo -s [sudo] password for stack:
Per favore aiutami, dove sbaglio?
Soluzione 1: Dovresti mettere quella riga dopo la riga con la regola per il gruppo di amministratori. Perché quando più voci corrispondono per un utente, vengono applicate in ordine. In presenza di più corrispondenze, viene utilizzata l'ultima corrispondenza (che non è necessariamente la corrispondenza più specifica).
Quindi, il tuo file sudoers dovrebbe apparire come il seguente:
# User privilege specification root ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL stack ALL=(ALL) NOPASSWD:ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
Soluzione 2: Invece di spostare la riga, puoi semplicemente rimuoverla e aggiungere NOPASSWD alla voce per %sudo come mostrato di seguito:
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
Nota:assicurati che il tuo login appartenga al gruppo sudo come mostrato di seguito:
root@cloudsec2:~# id stack uid=1000(stack) gid=1000(stack) groups=1000(stack),4(adm),27(sudo),
Soluzione 3: Sposta la tua linea in un file in /etc/sudoers.d/
visudo -f /etc/sudoers.d/myOverrides
Inserisci la riga sottostante:
stack ALL=(ALL:ALL) NOPASSWD:ALL
Ora apri /etc/sudoers archiviare e decommentare la riga sottostante:
visudo -f /etc/sudoers #includedir /etc/sudoers.d
Questo è un approccio migliore per modificare sudoer.