Peruutus: tänään sudo taas huutaa, vaikka NOPASSWD on asetettu sudoersissa. Eli jostain syystä sudoers-asetus ei vaan ole voimassa kun pitäisi. En ymmärrä.
Ja sitten kun aloin tutkia mikä sudoersia vaivaa, onnistuin sähläämään oikein kunnolla. Olin alkuaan tehnyt lisäyksen näin:
echo "$USER ALL NOPASSWD: /usr/bin/tomb" | sudo tee -a /etc/sudoers.d/tomb
Tuossa on syntaksivirhe. Pitäisi olla:
käyttäjätunnus ALL=(ALL) NOPASSWD: /usr/bin/tomb
tai suluissa voi olla myös root, koska tombia halutaan suorittaa root-tunnuksella.
cat /etc/sudoers.d/tomb | sudo tee -a /etc/sudoers
Sudo menee helposti kokonaan rikki, jos editoit tiedostoja tuolla tavalla. Käytä aina
visudoa, joka huolehtii asetustiedostojen oikeuksista ja tekee lopuksi syntaksitarkistuksen!
EDITOR=nano sudo visudo -f /etc/sudoers.d/tomb
Jos esimerkiksi yritän kirjoittaa tiedostoon tämän virheellisen rivin:
käyttäjätunnus ALL NOPASSWD: /usr/bin/tomb
visudo herjaa ongelmasta ja kysyy mitä tehdään:
>>> /etc/sudoers.d/tomb: syntax error near line 1 <<<
Mitä nyt?
Valitsimia ovat:
(e) muokkaa sudoers-tiedostoa uudelleen
(x) poistu tallentamatta sudoers-tiedoston muutoksia
(Q) poistu ja tallenna muutokset sudoers-tiedostoon (VAARA!)
Käytännössä tuohon ei sitten koskaan kannata vastata Q, koska silloin sudo hajoaa, etkä enää saa pääkäyttäjän oikeuksia sen kautta, jolloin virheen korjaaminen voi olla hyvinkin hankalaa. Käytännössä pkexec on ainoa toivo siinä tilanteessa.
No, joka tapauksessa tuo sudoers-asetus siis auttaa vain kun sudon suorittaa päätteessä. Muulloin sudo huutaa että salasanan kysymiseen tarvitaan pääte.
Onko /etc/sudoers-tiedoston syntaksi nyt varmasti kunnossa? Tarkista visudolla. Millainen nopasswd-asetusrivi siellä on nyt? Onko /etc/sudoers.d-hakemistoon jäänyt mitään säätöjä?
Suorittaako web-sovelluksesi "sudo tomb list" -komennon omalla käyttäjätunnuksellasi, eikä esimerkiksi www-data -tunnuksella?