Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
wiki:os:bsd_unix:freebsd:tutos:admin:sudo [2025/04/09 23:17] – [Installation de sudo] Thibault Seguin | wiki:os:bsd_unix:freebsd:tutos:admin:sudo [2025/04/09 23:33] (Version actuelle) – [Installation de sudo] Thibault Seguin |
---|
Logo de **sudo** : {{ :wiki:os:bsd_unix:freebsd:tutos:admin:sudo_logo.png?nolink&120 |}} | Logo de **sudo** : {{ :wiki:os:bsd_unix:freebsd:tutos:admin:sudo_logo.png?nolink&120 |}} |
===== Présentation de sudo ===== | ===== Présentation de sudo ===== |
La commande **sudo** (**substitute user do**) est une commande qui permet de lancer des commandes administratives sans nécessité d'accès au compte **root** (**superutilisateur** sous les systèmes **Unix**) mais également des applications graphiques d'administrations. Il existe une commande similaire à //sudo// du nom de **doas** qui provient du **projet OpenBSD**. | La commande **sudo** (**substitute user do**) est une commande qui permet de lancer des commandes //administratives// sans nécessité d'accès au compte **root** (**superutilisateur** sous les systèmes **Unix**) mais également des applications graphiques d'administrations. Il existe une commande similaire à //sudo// du nom de **doas** qui provient du **projet OpenBSD**. |
| |
===== Installation de sudo ===== | ===== Installation de sudo ===== |
Pour les distributions Linux n'ayant pas //sudo// par défaut, il faut d'abord vous connectez en tant que //root// : | Vous connectez en tant que //root// : |
<code user>su -</code>puis entrez votre //mot de passe// root. | <code user>su -</code>puis entrez votre //mot de passe// root. |
| |
| |
===== Lié un utilisateur à sudo ===== | ===== Lié un utilisateur à sudo ===== |
==== Par la méthode traditionnel ==== | Suite à l'installation de //sudo//, un fichier de configuration est créé du nom de ''sudoers'', ''/usr/local/etc/sudoers'' sous **FreeBSD** et **OpenBSD** et ''/usr/pkg/etc/sudoers'' sous **NetBSD**. |
Suite à l'installation de //sudo//, un fichier de configuration est créé du nom de ''sudoers'', ''/etc/sudoers'' sous **Linux** ou ''/usr/local/etc/sudoers'' sous **FreeBSD**. | |
| |
Pour éditer ce fichier de manière sécurisée, il y a l'utilitaire **visudo** qui utilise votre éditeur de texte par défaut.\\ | Pour éditer ce fichier de manière sécurisée, il y a l'utilitaire **visudo** qui utilise votre éditeur de texte par défaut (en principe **ee** pour FreeBSD ou **vi**, plus précisément **nvi**).\\ |
Entrez en //root// : | Entrez en //root// : |
<code root>visudo</code>ouvre le fichier ''/etc/sudoers'' avec votre éditeur de texte. | <code root>visudo</code>ouvre le fichier ''sudoers'' avec votre éditeur de texte. |
| |
Copier la ligne ''root ALL=(ALL:ALL) ALL'' et ajoutez au fichier ''tom ALL=(ALL:ALL) ALL'', //tom// est à remplacer par votre //nom d'utilisateur//. L'ajout de ''tom ALL=(ALL:ALL) ALL'' au fichier ''sudoers'' vous donne tous les //droits// du compte //root// de manière immédiate. Vous pouvez évidemment peaufiner votre réglage et n'attribuer que quelques autorisations à votre //utilisateur//. | Copier la ligne ''root ALL=(ALL:ALL) ALL'' et ajoutez au fichier ''tom ALL=(ALL:ALL) ALL'', //tom// est à remplacer par votre //nom d'utilisateur//. L'ajout de ''tom ALL=(ALL:ALL) ALL'' au fichier ''sudoers'' vous donne tous les //droits// du compte //root// de manière immédiate. Vous pouvez évidemment peaufiner votre réglage et n'attribuer que quelques autorisations à votre //utilisateur//. |
| |
==== En passant par le groupe utilisateur sudo ==== | |
Sous Debian, en //root// : | |
<code root>adduser tom sudo</code>ajoute l'utilisateur //tom// au groupe //sudo//. | |
| |
Toutes distributions Linux confondues, en //root// : | |
<code root>usermod -aG sudo tom</code>ajoute l'utilisateur //tom// au groupe //sudo//. Évidemment il faut remplacer //tom// par votre //nom d'utilisateur// ! | |
| |
À noter que l'ajout de //votre utilisateur// au groupe //sudo// n'a pas un effet immédiat, il faut vous //déconnectez// et vous //reconnectez// avec votre utilisateur. | |
| |
<note>Par défaut l'ajout de votre utilisateur au groupe sudo vous donnes les mêmes droits que root.</note> | |
| |
<note tip>Sur les distributions Linux actuels, privilégiez la méthode d'ajout du groupe sudo à votre utilisateur. Mais pour n'importe quel système Unix, privilégiez l'édition du fichier ''sudoers'', qui fonctionne sur tout OS de type Unix.</note> | |
| |
===== Utilisation de la commande sudo ===== | ===== Utilisation de la commande sudo ===== |
| |
Pour avoir un bref résumé de l'utilisation de la commande //sudo// : | Pour avoir un bref résumé de l'utilisation de la commande //sudo// : |
<code user>sudo --help</code>qui affiche : | <code user>sudo --help</code> |
<file>sudo – exécute une commande en tant qu'un autre utilisateur | |
| |
usage: sudo -h | -K | -k | -V | |
usage: sudo -v [-ABkNnS] [-g group] [-h host] [-p prompt] [-u user] | |
usage: sudo -l [-ABkNnS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command [arg ...]] | |
usage: sudo [-ABbEHkNnPS] [-r role] [-t type] [-C num] [-D directory] [-g group] [-h host] [-p prompt] [-R directory] [-T timeout] [-u user] | |
[VAR=value] [-i | -s] [command [arg ...]] | |
usage: sudo -e [-ABkNnS] [-r role] [-t type] [-C num] [-D directory] [-g group] [-h host] [-p prompt] [-R directory] [-T timeout] [-u user] file ... | |
| |
Options: | |
-A, --askpass utiliser un programme adjoint pour demander le mot de passe | |
-b, --background exécuter la commande en arrière-plan | |
-B, --bell émettre un signal sonore lors d'une demande | |
-C, --close-from=num fermer tous les descripteurs de fichiers >= n° | |
-D, --chdir=directory changer le répertoire de travail avant d'exécuter la commande | |
-E, --preserve-env préserver l'environnement de l'utilisateur en exécutant la commande | |
--preserve-env=list préserver les variables d'environnement spécifiques | |
-e, --edit éditer les fichiers au lieu d'exécuter une commande | |
-g, --group=group exécuter la commande en tant que le nom ou ID de groupe spécifié | |
-H, --set-home assigner à la variable HOME le répertoire personnel de l'utilisateur cible | |
-h, --help afficher le message d'aide et terminer | |
-h, --host=host exécuter la commande sur l'hôte (si supporté par le greffon) | |
-i, --login exécuter le shell de login comme l'utilisateur cible. Une commande peut aussi être spécifiée | |
-K, --remove-timestamp supprime complètement le fichier d'horodatage | |
-k, --reset-timestamp invalide le fichier d'horodatage | |
-l, --list afficher les privilèges de l'utilisateur ou vérifie une commande spécifique. Utilisez deux fois pour une forme | |
plus longue | |
-n, --non-interactive mode non interactif, aucune invite utilisée | |
-P, --preserve-groups préserve le vecteur des groupes au lieu de le changer en celui de la cible | |
-p, --prompt=prompt utiliser l'invite de mot de passe spécifié | |
-R, --chroot=directory changer le répertoire racine avant d'exécuter la commande | |
-r, --role=role créer le contexte de sécurité SELinux avec le rôle spécifié | |
-S, --stdin lire le mot de passe depuis l'entrée standard | |
-s, --shell exécuter le shell en tant que l'utilisateur cible. Une commande peut aussi être spécifiée | |
-t, --type=type créer le contexte de sécurité SELinux avec le type spécifié | |
-T, --command-timeout=timeout terminer la commande après la limite de temps spécifiée | |
-U, --other-user=user en mode liste, afficher les privilèges de l'utilisateur | |
-u, --user=user exécuter la commande (ou éditer le fichier) sous le nom d'utilisateur ou le ID spécifié | |
-V, --version afficher les informations de version et terminer | |
-v, --validate mettre à jour l'horodatage de l'utilisateur sans exécuter de commande | |
-- arrêter de traiter les arguments en ligne de commande</file> | |
==== Quelques commandes sudo ==== | ==== Quelques commandes sudo ==== |
Pour vous connecter en tant que //root// via votre //utilisateur// : | Pour vous connecter en tant que //root// via votre //utilisateur// : |
Exécuter une commande //administrative// avec les droits root sous sudo : | Exécuter une commande //administrative// avec les droits root sous sudo : |
<code user>sudo cmd_admin</code>exemple : | <code user>sudo cmd_admin</code>exemple : |
<code user>sudo apt update</code> | <code user>sudo vipw</code> |
| |
Exécuter une commande avec //sudo// en choisissant votre //utilisateur// : | Exécuter une commande avec //sudo// en choisissant votre //utilisateur// : |
<code user>sudo -u tom fdisk -l</code>exécute la commande ''fdisk -l'' via l'utilisateur //tom// avec des droits //root//. | <code user>sudo -u tom newfs /dev/disk</code>exécute la commande ''fdisk -l'' via l'utilisateur //tom// avec des droits //root//. |
| |
Vous connectez en tant que //root// en spécifiant un //shell Unix// installé : | Vous connectez en tant que //root// en spécifiant un //shell Unix// installé : |
<code user>sudo -s tcsh</code>vous connectes en //root// avec le shell //tcsh//. | <code user>sudo -s bash</code>vous connectes en //root// avec le shell //bash//. |
| |
Terminer une //session// sudo, pour devoir retaper le //mot de passe// de votre utilisateur après une nouvelle commande sudo : | Terminer une //session// sudo, pour devoir retaper le //mot de passe// de votre utilisateur après une nouvelle commande sudo : |