Ce face visudo
Fișierul /etc/sudoers spune cine are voie să ruleze comenzi cu sudo și ce comenzi. O greșeală de sintaxă în el poate bloca complet sudo, așa că nu se editează direct, ci prin visudo: acesta blochează fișierul, deschide o copie în editor și o verifică înainte să o salveze.
Regulile proprii se pun de preferat în fișiere separate din /etc/sudoers.d/, incluse automat. Fișierele al căror nume conține un punct sau se termină cu ~ sunt ignorate. Editorul folosit vine din variabila EDITOR sau SUDO_EDITOR.
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
-c |
Doar verifică sintaxa, fără a deschide editorul. |
-f FIȘIER |
Editează sau verifică alt fișier decât /etc/sudoers (de exemplu unul din /etc/sudoers.d/). |
-s |
Verificare strictă: semnalează și aliasurile folosite înainte de a fi definite. |
utilizator GAZDA=(CA_CINE) COMENZI |
Forma unei reguli: cine, pe ce mașină, ca ce utilizator și ce comenzi poate rula. |
NOPASSWD: |
Permite comenzile din regulă fără a cere parola. |
Exemple
Exemplul 1: Permisiune limitată pentru utilizatorul de deploy
Utilizatorul deploy poate reporni doar Nginx, fără parolă. În editorul deschis scrii o singură linie, apoi salvezi.
sudo EDITOR=nano visudo -f /etc/sudoers.d/deploy
# linia scrisă în fișier:
# deploy ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx
sudo -l -U deploy | tail -n 2
Ieșire în terminal
User deploy may run the following commands on web-iasi:
(root) NOPASSWD: /usr/bin/systemctl restart nginx
Exemplul 2: Verificarea tuturor fișierelor sudoers
Util după ce un script sau un instrument de configurare a scris în /etc/sudoers.d/.
sudo visudo -c
Ieșire în terminal
/etc/sudoers: parsed OK
/etc/sudoers.d/README: parsed OK
/etc/sudoers.d/deploy: parsed OK
Greșeli frecvente
- Editarea
/etc/sudoerscunanosauvimdirect: o virgulă lipsă poate lăsa sistemul fără acces lasudo. - Reguli prea largi, de tipul
ALL=(ALL) NOPASSWD: ALLpentru conturi de servicii; dă doar comenzile necesare, cu cale completă. - Un fișier din
/etc/sudoers.d/numitdeploy.conf: din cauza punctului este ignorat fără niciun mesaj.
Comenzi înrudite
sudo: Execută o comandă cu drepturile depline ale administratorului (root) sau ale altui utilizator.su: Comută sesiunea curentă de terminal pe alt utilizator sau deschide un shell ca root.usermod: Modifică proprietățile unui cont existent de utilizator (grupuri, shell, director acasă).groupadd / groupdel: Creează, redenumește și șterge grupuri de utilizatori, folosite pentru a da drepturi comune mai multor conturi.