La comanda sudo (de superuser do, «fes-ho com a superusuari») executa una comanda amb els permisos d’un altre usuari, normalment root. És la manera habitual de fer tasques d’administració a Linux sense haver d’entrar com a root: instal·lar paquets, editar fitxers de configuració del sistema, reiniciar serveis… Per això surt a tantes guies d’aquest blog.
La gràcia de sudo és que et demana la teva contrasenya, no la de root, i que l’administrador pot decidir exactament qui pot fer què. A més, cada ús queda registrat.

Sintaxi
sudo [opcions] comanda [arguments]
Per exemple, per actualitzar la llista de paquets a Debian o Ubuntu:
sudo apt update
La primera vegada et demana la contrasenya. Durant uns minuts (15 per defecte) no te la tornarà a demanar.
Qui pot fer servir sudo
No tothom: només els usuaris que hi té autoritzats el fitxer /etc/sudoers. A les distribucions més habituals, la manera fàcil és afegir l’usuari al grup que ja hi té permís:
| Distribució | Grup amb permís de sudo |
|---|---|
| Debian, Ubuntu i derivades | sudo |
| Fedora, RHEL, Rocky, Alma | wheel |
Per donar permís a l’usuari joan (des d’un compte que ja en tingui):
sudo usermod -aG sudo joan # Debian, Ubuntu
sudo usermod -aG wheel joan # Fedora, RHEL, Rocky, Alma
El canvi s’aplica a la sessió següent: en joan ha de tancar la sessió i tornar a entrar. Tens més detalls de l’opció -aG a la comanda usermod.
Per saber què pots fer tu amb sudo:
sudo -l
Al meu servidor (una Raspberry Pi amb Debian 13) la sortida acaba així:
User oscar may run the following commands on piiespai:
(ALL : ALL) ALL
(ALL) NOPASSWD: ALL
La primera línia vol dir que pot executar qualsevol comanda com a qualsevol usuari. La segona, que ni tan sols li demana la contrasenya: més avall t’explico per què això no és una bona idea en un servidor.
Opcions més útils
| Opció | Què fa |
|---|---|
-u usuari | Executa la comanda com a un altre usuari (no root) |
-g grup | Executa la comanda amb un altre grup principal |
-i | Obre un shell de login com a root (o com a l’usuari de -u), amb el seu entorn |
-s | Obre un shell com a root mantenint més el teu entorn |
-l | Llista què tens permès fer (-ll, en format llarg) |
-e fitxer | Edita un fitxer amb permisos de root de manera segura (equival a sudoedit) |
-k | Oblida la contrasenya: la propera vegada te la tornarà a demanar |
-K | Com -k, però esborra del tot el registre de temps |
-v | Renova el temps sense executar res |
-n | No demana mai la contrasenya; si caldria, falla (útil en scripts) |
-E | Conserva les variables d’entorn de l’usuari |
-b | Executa la comanda en segon pla |
Exemples
Executar una comanda com a root:
sudo systemctl restart apache2
Executar una comanda com un altre usuari, per exemple el de l’Apache:
sudo -u www-data ls /var/www/html
Obrir una sessió de root (per fer moltes tasques seguides) i sortir-ne amb exit:
sudo -i
Editar un fitxer de configuració del sistema. Amb sudoedit l’editor s’executa amb el teu usuari sobre una còpia, i només el desament es fa com a root:
sudoedit /etc/hosts
Repetir l’última comanda amb sudo quan te n’has oblidat (és una drecera de l’historial de Bash):
apt update # error: no tens permisos
sudo !! # executa «sudo apt update»
Compte amb les redireccions
Aquest és l’error més típic:
sudo echo "192.168.1.10 servidor" >> /etc/hosts
# bash: /etc/hosts: Permission denied
Falla perquè la redirecció >> la fa el teu shell, que no té permisos de root; sudo només s’aplica a echo. Les dues solucions habituals:
echo "192.168.1.10 servidor" | sudo tee -a /etc/hosts
sudo sh -c 'echo "192.168.1.10 servidor" >> /etc/hosts'
Amb tee -a el fitxer l’escriu tee, que sí que s’executa com a root (sense -a, el sobreescriuria).
sudo o su?
sudo | su | |
|---|---|---|
| Contrasenya que demana | La teva | La de root (o la de l’usuari de destinació) |
| Abast | Una comanda (o una sessió amb -i) | Una sessió sencera |
| Control | Es pot limitar per usuari i per comanda | Tot o res |
| Registre | Cada comanda queda registrada | Només l’entrada a la sessió |
Per això avui la majoria de distribucions recomanen sudo i, de fet, Ubuntu no posa cap contrasenya a root per defecte.
El fitxer /etc/sudoers
Els permisos es defineixen a /etc/sudoers i als fitxers del directori /etc/sudoers.d/. No l’editis mai directament: fes servir sempre visudo, que comprova la sintaxi abans de desar. Un error de sintaxi a sudoers pot deixar-te sense sudo i, si no tens la contrasenya de root, sense manera fàcil d’administrar el sistema.
sudo visudo
Com es llegeix una regla
usuari màquina=(usuari_destí:grup_destí) comandes
Les línies que segur que hi trobaràs a Debian i Ubuntu:
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL
rooto%sudo: a qui s’aplica. El%indica que és un grup.- El primer
ALL: a quines màquines (útil quan es comparteix el fitxer entre servidors). (ALL:ALL): com a quins usuaris i grups pot executar comandes.- L’últim
ALL: quines comandes.
Les regles pròpies, a /etc/sudoers.d
En lloc de tocar /etc/sudoers, és més net posar les teves regles en un fitxer a part dins de /etc/sudoers.d/. El fitxer principal ja els inclou amb la directiva @includedir /etc/sudoers.d (en versions antigues, #includedir, que no és cap comentari malgrat el #). Els noms d’aquests fitxers no poden contenir cap punt ni acabar en ~, o sudo els ignorarà.
sudo visudo -f /etc/sudoers.d/web
Exemple: permís per a una sola comanda
Volem que l’usuari joan pugui reiniciar l’Apache, i res més, sense haver de posar la contrasenya:
joan ALL=(root) NOPASSWD: /usr/bin/systemctl restart apache2
Fes servir sempre la ruta completa de la comanda (la trobaràs amb which systemctl). Si són diverses comandes, pots agrupar-les en un àlies:
Cmnd_Alias WEB = /usr/bin/systemctl restart apache2, /usr/bin/systemctl reload apache2
joan ALL=(root) NOPASSWD: WEB
Després de desar, comprova que tot és correcte:
sudo visudo -c
sudo -l -U joan
Alguns ajustos (Defaults)
| Ajust | Què fa |
|---|---|
Defaults timestamp_timeout=5 | Minuts que recorda la contrasenya (per defecte, 15; amb 0 la demana sempre) |
Defaults passwd_tries=3 | Intents per escriure la contrasenya (per defecte, 3) |
Defaults insults | Fa que sudo et «insulti» quan t’equivoques de contrasenya (desactivat per defecte; és una curiositat) |
Defaults secure_path=... | El PATH que es fa servir per a les comandes amb sudo |
On queda registrat
Cada ús de sudo, permès o denegat, queda als registres del sistema. A Debian 13 ja no hi ha /var/log/auth.log per defecte, i es consulta amb journalctl:
journalctl _COMM=sudo
A Ubuntu i a les instal·lacions amb rsyslog és a /var/log/auth.log; a Fedora i RHEL, a /var/log/secure.
Compte amb…
NOPASSWD: ALL. És molt còmode (Raspberry Pi OS, per exemple, ho configura així per al primer usuari), però vol dir que qualsevol programa que s’executi amb el teu usuari pot fer-serootsense cap barrera. En un servidor exposat a Internet, millor demanar la contrasenya o limitarNOPASSWDa comandes concretes.- Comandes que obren un shell. Donar permís per a editors (
vi), paginadors (less) o intèrprets (python) equival a donarroot, perquè des de dins se’n pot obrir un shell. Per editar fitxers, dona permís asudoedit. - Comodins a
sudoers. Als arguments, un*pot coincidir amb qualsevol caràcter, fins i tot espais i barres. Una regla com/usr/bin/cat /var/log/*sembla segura, però també accepta/var/log/../../etc/shadow. - Mantén
sudoactualitzat. Com que s’executa amb permisos deroot, una vulnerabilitat asudoés greu. Des d’Ubuntu 25.10, per defecte es fa servirsudo-rs, una reimplementació en Rust compatible amb les mateixes comandes. - No treballis sempre com a
root. Fes servirsudocomanda a comanda i surt desudo -iquan acabis.
Comandes relacionades
- usermod: afegir un usuari al grup
sudoowheel. - Usuaris i grups a Linux: els conceptes bàsics.
- useradd i passwd: crear usuaris i canviar-ne la contrasenya.
- Permisos de fitxers a Linux i fitxers amb el bit SUID: l’altra manera d’executar programes amb permisos d’un altre usuari.
- Vi i Vim: l’editor que obre
visudoen molts sistemes.