È abbastanza comune per un amministratore modificare sudoers file e consentire agli utenti di eseguire comandi amministrativi. Ma cosa succede se commetti un errore? Il sudo il comando fallirà no? Questo è esattamente quello che ho fatto durante l'installazione di OpenStack su una macchina Ubuntu. Bene, ecco cosa ho visto dopo aver commesso un errore nei sudoers file.
#openstack@devstack:~$ sudo -s >>> /etc/sudoers.d/50_stack_sh: syntax error near line 1 <<< >>> /etc/sudoers.d/50_stack_sh: syntax error near line 2 <<< >>> /etc/sudoers.d/50_stack_sh: syntax error near line 3 <<< sudo: parse error in /etc/sudoers.d/50_stack_sh near line 2 sudo: no valid sudoers sources found, quitting sudo: unable to initialize policy plugin
L'errore di cui sopra ci dice chiaramente che c'è un errore di sintassi sulle righe 1, 2 e 3! Per aumentare questo caos, non ricordavo la password di root. Quanto è spaventoso? Certo che lo è, ma ecco come funziona.
Correggi gli errori nel file sudoers usando il comando pkexec
Soluzione :Il moderno sistema Ubuntu e molte altre distribuzioni Linux hanno semplificato la correzione degli errori in sudoer file. Supponendo che tu sia autorizzato a eseguire programmi come root, esegui il comando seguente e inserisci la tua password. Il comando pkexec insieme a visudo verrà eseguito come root e ti consentirà di modificare sudoers file.
openstack@openstack-devstack:~$ pkexec visudo -f /etc/sudoers
Nel mio caso, /etc/sudoers.d/50_stack_sh il file presentava l'errore di sintassi alle righe 1, 2 e 3. Di seguito è riportato il comando per correggere l'errore.
openstack@openstack-devstack:~$ pkexec visudo -f /etc/sudoers.d/50_stack_sh ==== AUTHENTICATING FOR org.freedesktop.policykit.exec === Authentication is needed to run `/usr/sbin/visudo' as the super user Authenticating as: openstack,,, (openstack) Password: