Avec la commande su, tout utilisateur connaissant le mot de passe root peut « devenir root » et faire tout ce que l'utilisateur root peut faire. Un compte utilisant "su - root" est essentiellement l'administrateur du serveur. C'est souvent beaucoup plus de pouvoir que ce qui devrait être délégué aux utilisateurs. Une meilleure pratique consiste à déléguer des fonctions spécifiques aux utilisateurs plutôt que d'accorder des privilèges root à l'échelle du système.
La commande sudo permet à l'administrateur du serveur de déléguer des commandes spécifiques à des utilisateurs spécifiques sans leur accorder tous les privilèges sur le serveur. La délégation se fait dans le fichier /etc/sudoers à l'aide de l'éditeur visudo. Les utilisateurs et les groupes peuvent recevoir des commandes spécifiques à exécuter afin de s'acquitter de leurs responsabilités sans disposer de privilèges d'administrateur complets.
Syntaxe
La syntaxe de la commande sudo est :
$ sudo [options] {command}
Si vous rencontrez l'erreur ci-dessous lors de l'exécution de la commande sudo :
sudo: command not found
vous pouvez essayer d'installer le package sudo comme indiqué ci-dessous selon votre choix de distribution.
Répartition | Commande |
---|---|
Debian | apt-get install sudo |
Ubuntu | apt-get install sudo |
Alpin | apk ajouter sudo |
Arch Linux | pacman -S sudo |
Kali Linux | apt-get install sudo |
CentOS | yum installer sudo |
Fédora | dnf installer sudo |
Raspbian | apt-get install sudo |
Exemples de commande sudo
1. Exécutez une commande en tant que superutilisateur :
$ sudo less /var/log/syslog
2. Modifiez un fichier en tant que superutilisateur avec votre éditeur par défaut :
$ sudo --edit /etc/fstab
3. Exécutez une commande en tant qu'un autre utilisateur et/ou groupe :
$ sudo --user=user --group=group id -a
4. Répétez la dernière commande précédée de `sudo` (uniquement dans `bash`, `zsh`, etc.):
$ sudo !!
5. Lancez le shell par défaut avec les privilèges de superutilisateur et exécutez les fichiers spécifiques à la connexion (`.profile`, `.bash_profile`, etc.):
$ sudo --login
6. Lancez le shell par défaut avec les privilèges de superutilisateur sans modifier l'environnement :
$ sudo --shell
7. Lancez le shell par défaut en tant qu'utilisateur spécifié, en chargeant l'environnement de l'utilisateur et en lisant les fichiers spécifiques à la connexion (`.profile`, `.bash_profile`, etc.):
$ sudo --login --user=user
8. Listez les commandes autorisées (et interdites) pour l'utilisateur appelant :
$ sudo --list
Conclusion
comment fonctionne exactement le programme sudo can-do-anything ? C'est plus simple que vous ne le pensez ! Reportez-vous au code suivant :
$ which sudo /usr/bin/sudo $ ls -l $(which sudo) -rwsr-xr-x 1 root root 145040 Jun 13 2022 /usr/bin/sudo
On remarque que l'exécutable binaire sudo est en réalité un programme setuid-root ! Alors réfléchissez-y :chaque fois que vous exécutez un programme avec sudo, le processus sudo s'exécute immédiatement avec un privilège root :pas de mot de passe, pas de problème. Mais, bien sûr, pour des raisons de sécurité, l'utilisateur doit entrer le mot de passe; une fois qu'ils l'ont entré correctement, sudo continue l'exécution et exécute la commande que vous voulez, en tant que root. Si l'utilisateur ne parvient pas à saisir correctement le mot de passe (généralement dans les trois tentatives), sudo interrompt l'exécution.