Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
wiki:os:gnu_linux:tutos:admin:sudo [2025/04/09 14:19] – [En passant par le groupe utilisateur sudo] Thibault Seguin | wiki:os:gnu_linux:tutos:admin:sudo [2025/04/09 17:52] (Version actuelle) – [Quelques commandes sudo] Thibault Seguin |
---|
====== La commande sudo comme alternative au compte root ====== | ====== La commande sudo comme alternative au compte root ====== |
| Logo de **sudo** : {{ :wiki:os:gnu_linux: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ème **Unix**) mais également des applications graphiques d'administration tel que **GParted**. | 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 tel que **GParted**. Il existe une commande similaire à //sudo// du nom de **doas** qui provient du **projet OpenBSD**. |
| |
===== Installation de sudo ===== | ===== Installation de sudo ===== |
Pour les distribution Linux n'ayant pas //sudo// par défaut, il faut d'abord vous connectez en tant que //root// : | Pour les distributions Linux n'ayant pas //sudo// par défaut, il faut d'abord 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. |
| |
<code root>visudo</code>ouvre le fichier ''/etc/sudoers'' avec votre éditeur de texte. | <code root>visudo</code>ouvre le fichier ''/etc/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//. 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 ==== | ==== En passant par le groupe utilisateur sudo ==== |
| |
<note>Par défaut l'ajout de votre utilisateur au groupe sudo vous donnes les mêmes droits que root.</note> | <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 ===== |
| Pour avoir une information complète sur la commande //sudo// : |
| <code user>man sudo</code> |
| |
| Pour avoir un bref résumé de l'utilisation de la commande //sudo// : |
| <code user>sudo --help</code>qui affiche : |
| <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 ==== |
| Pour vous connecter en tant que //root// via votre //utilisateur// : |
| <code user>sudo su -</code>ou : |
| <code user>sudo -i</code> |
| |
| Exécuter une commande //administrative// avec les droits root sous sudo : |
| <code user>sudo cmd_admin</code>exemple : |
| <code user>sudo apt update</code> |
| |
| 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//. |
| |
| 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//. |
| |
| Terminer une //session// sudo, pour devoir retaper le //mot de passe// de votre utilisateur après une nouvelle commande sudo : |
| <code user>sudo -k</code> |
| |
| <note>Il existe encore bon nombres d'//options// pour la commande //sudo//, je vous laisse plonger dans le **man** de la commande.</note> |
| |
| |
| |
| |
| |
| |
| |
| |
| |