all:bibles:linux:commandes:sudo
Table des matières
sudo
La commande sudo permet à un utilisateur d'exécuter des commandes avec les droits root.
Utilisation
Commandes de base
Exécuter une commande en tant que root
sudo <commande>
Ouvrir une session interactive root
sudo -i sudo -s
Oublier le mot de passe mémorisé
sudo -k
Lister ses droits
sudo -l
Donner les droits sudo
Configuration
/etc/sudoers.d
Tous les fichiers du répertoire /etc/sudoers.d/ ne finissant pas par ~ ou ne contenant pas un . sont lus et analysés lorsque l'on utilise la commande sudo.
Le nom est libre et peut faire référence à la commande et/ou l'utilisateur concerné.
Editer un fichier
visudo -f /etc/sudoers.d/<commande>-<utilisateur>
Pour configurer l'éditeur par défaut pour visudo utiliser la commande : sudo update-alternatives --config editor
Syntaxe
identifiant ALL = (user) /chemin/complet/commande,/chemin/complet/autrecommande %groupe ALL = (user) /chemin/complet/commande,!/chemin/complet/autrecommande
- identifiant représente un nom d'utilisateur. Un seul identifiant par ligne.
- %groupe désigne un groupe d'utilisateurs. Un seul groupe par ligne.
- ALL désigne la ou les machines dans lesquelles les commandes sont autorisées ou refusées pour cet utilisateur ou ce groupe d'utilisateurs. Le mot-clé ALL désigne l'ensemble des machines du parc informatique. Dans le cadre d'une utilisation à domicile, laisser ALL n'est pas un inconvénient. Dans un grand parc d'entreprise, de meilleures stratégies sont à prévoir.
- user (entre parenthèses) désigne l'utilisateur dont on prend les droits (peut valoir ALL pour tous).
- commande et autrecommande représentent des commandes pouvant être exécutées par l'utilisateur ou le groupe d'utilisateurs désigné en début de ligne.
Les commandes précédées d'un point d'exclamation (!) sont refusées, alors que celles sans point d'exclamation sont autorisées.
Les commandes multiples sont séparées par une virgule, sans espace.
Les commandes doivent être entrées de manière exacte. Saisir des chemins absolus vers les commandes.
Les commandes multiples sont séparées par une virgule, sans espace.
Les commandes doivent être entrées de manière exacte. Saisir des chemins absolus vers les commandes.
Exemple pour gérer un service
Les lignes suivantes autorisent l'utilisateur <user> à exécuter les commande systemctl stop|start|restart|status nom.service sans mot de passe.
Defaults:user !requiretty user ALL= NOPASSWD: /bin/systemctl restart nom user ALL= NOPASSWD: /bin/systemctl stop nom user ALL= NOPASSWD: /bin/systemctl start nom user ALL= NOPASSWD: /bin/systemctl status nom
- requiretty : Interdit l'exécution de la commande sudo à partir d'autre chose qu'une console ou un terminal, notamment à partir de scripts cron ou cgi-bin. En mettant un ! devant on l'autorise notamment si cela a été interdit globalement à un niveau supérieur.
En cas de problème penser à bien taper la commande de façon identique à ce qui est indiqué dans le fichier (préfixé de la commande sudo).
Exemple pour arrêter la machine
Defaults:user !requiretty user ALL= NOPASSWD: /sbin/poweroff
Exemple pour toute commande
user ALL=(ALL) NOPASSWD: ALL
/etc/sudoers
Il est possible de modifier directement le fichier /etc/sudoers mais il est préférable de privilégier d'écrire ses modifications locales dans le répertoire /etc/sudoers.d
Sources
all/bibles/linux/commandes/sudo.txt · Dernière modification : de omeylhoc
