Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:systeme:sudo [12/08/2012 20:13] martin_mtl |
doc:systeme:sudo [15/07/2019 07:57] smolski [Configuration de sécurité élémentaire] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== SUDO ====== | + | ====== sudo ====== |
- | ===== ATTENTION ! ===== | + | * Objet : sudo |
+ | * Niveau requis :{{tag>débutant avisé}} | ||
+ | * Commentaires : //logiciel de sécurisation des terminaux// | ||
+ | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) | ||
+ | * Suivi : {{tag>à-tester}} | ||
+ | * Création par [[user>smolski]] le 27/11/2012 | ||
+ | * Testé par .... le .... | ||
+ | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=1698 |C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
- | Il est déconseillé d'utiliser **sudo** inconsidéremment sans en remanier la configuration par défaut. | + | ===== Important ===== |
- | == En effet : == | + | == ATTENTION ! == |
+ | |||
+ | Il est déconseillé d'utiliser **sudo** inconsidérément sans en remanier la configuration par défaut. | ||
+ | |||
+ | Exemple : | ||
* Si on fait un sudo dans un terminal et qu'on en ouvre un autre, //le mot de passe est bien demandé//. | * Si on fait un sudo dans un terminal et qu'on en ouvre un autre, //le mot de passe est bien demandé//. | ||
Ligne 12: | Ligne 23: | ||
- qu'on en ouvre un de nouveau... //le mot de passe n'est plus demandé// ! | - qu'on en ouvre un de nouveau... //le mot de passe n'est plus demandé// ! | ||
- | Pour éviter cet inconvénient, porte ouverte à l'infection par des virus et des vers, veiller à configurer votre sudo selon le paragraphe : **Configuration de sécurité élémentaire** | + | Pour éviter cet inconvénient, porte ouverte à l'infection par des virus et des vers, veillez à configurer votre sudo selon le paragraphe : **[[doc:systeme:sudo#configuration_de_securite_elementaire | Configuration de sécurité élémentaire]]** |
- | <note important>De toute façon, mieux vaut privilégier la commande su chaque fois que cela est possible.</note> | + | De toute façon mieux vaut **privilégier** [[:doc:systeme:su | la commande su]] chaque fois que cela est possible ! |
Ligne 20: | Ligne 31: | ||
===== Introduction ===== | ===== Introduction ===== | ||
- | Voilà un logiciel permettant de lancer des commandes **root** en maintenant un terminal **user** ouvert. | + | Voilà un logiciel permettant de lancer **[[doc:systeme:superutilisateur | des commandes root]]** en maintenant un terminal **user** ouvert. |
- | ===== Installation ===== | + | ==== Utilisation de sudo ==== |
- | # aptitude install sudo | + | <note tip>Sudo lui-même prend comme argument **une commande et ses paramètres**, pas une expression du shell.</note> |
+ | Quand on utilise sudo, il est important de bien comprendre comment fonctionnent le [[doc:programmation:shell:shell|shell]] et [[doc:programmation:shell:regexp|ses opérateurs de redirection et de condition]]. \\ | ||
+ | Pour le shell, la commande passée à sudo et **elle seule**, (pas les //opérateurs// donc) est vue comme un argument du programme sudo. | ||
- | Si vous avez plus simple, faite-le savoir ! ;-) | + | Pour exécuter une expression du shell avec sudo, il faut spécifier un shell comme commande et l'expression comme paramètre de celle-ci. |
- | ===== Configuration de sudo - visudo ===== | + | === Exemples : === |
- | Passer __obligatoirement__ par la commande **visudo** pour configurer sudo. L'utilitaire visudo vérifie la syntaxe du fichier /etc/sudoers avant d'enregistrer celui-ci. | + | <code user>sudo commande > fichier</code> |
+ | est interprété en distinguant les arguments (ici la commande de son application) comme : | ||
- | \\ | + | [sudo //lacommande//] > [//lefichier//] |
- | Dans un terminal root, taper : | + | |
- | # visudo | + | et **NON** comme deux ensembles composés de : |
- | ===== Configuration de sécurité élémentaire ===== | + | [sudo] [//lacommande// > //lefichier//] |
- | Sous la ligne ''Defaults env_reset'' ajoutez : | + | <note important>c'est donc **le shell de l'utilisateur** courant qui écrit dans fichier, et non pas **le shell de root**.</note> |
- | Defaults timestamp_timeout=0 | + | Dans la même veine : |
+ | <code user>sudo commande1 && commande2</code> | ||
+ | est interprété comme : | ||
- | En mettant le timeout à 0, les droits **root** ne seront plus utilisables dès que vous aurez validé l'exécution de votre commande. | + | [sudo //lacommande1//] && [//lacommande2//] |
- | Pour réserver l'utilisation de sudo à mon_nom seulement, écrivez : | + | **sans appliquer le sudo** sur //lacommande2// donc. |
+ | <note>Dans les exemples ci-dessus les crochets servent à visualiser la priorité d'exécution. \\ | ||
+ | Les expressions résultantes appliquées en copie/colle ne seront donc pas valides. LOL</note> | ||
- | Defaults:mon_nom tty_tickets | + | ==== Remerciements et liens : ==== |
- | Où mon_nom est le nom que vous utilisez pour vous connecter à votre session. | + | Merci à **Walker29** et **raleur** pour avoir initié ces précisions sur le forum là : |
+ | * https://debian-facile.org/viewtopic.php?pid=242982#p242982 | ||
- | == DÉCONSEILLÉ : == | + | //Qu'une pluie de choco df leur soit à tous deux prescrit... \\ |
+ | Quand ce sera possible bien sûr !// ;-) | ||
+ | ===== Installation ===== | ||
- | Si vous voulez ouvrir les droits de **sudo** pour **plusieurs utilisateurs** sans les énumérer ici, écrivez : | + | <code root>apt-get update && apt-get install sudo</code> |
- | Defaults:All tty_tickets | + | //Si vous avez plus simple, faite-le savoir !// ;-) |
- | Et voilà ! :-) | + | ===== Configuration de sudo - visudo ===== |
+ | Passer __obligatoirement__ par la commande **visudo** pour configurer sudo. L'utilitaire visudo vérifie la syntaxe du fichier ''/etc/sudoers'' avant d'enregistrer celui-ci. | ||
- | ===== Configuration pour un user ===== | + | Taper : |
- | <note tip> | + | <file root>visudo</file> |
- | Pour un seul //user//, il n'est pas nécessaire d'intégrer cet //user// dans le groupe //sudo//</note> | + | |
- | //Merci à //**Asmodée**// pour cette indication précise !// :-D | + | |
- | ==== sudo UN SEUL user AVEC mot de passwd demandé ==== | + | ===== Configuration de sécurité élémentaire ===== |
- | C'est la configuration préconisée pour tous les utilisateurs de sudo débutant. | + | ==== Droits d'exécution à une seule commande ==== |
- | === Pour la branche stable, soit Squeeze === | + | Sous la ligne : |
+ | Defaults env_reset | ||
- | Sous la ligne ''root ALL=(ALL) ALL'', écrivez : | + | Ajoutez : |
- | badaboum ALL=(ALL) ALL | + | Defaults timestamp_timeout=0 |
- | (**badaboum** étant votre nom d'utilisateur **user**, par exemple...) | + | En mettant le timeout à 0, les droits **root** ne seront plus utilisables dès que vous aurez validé l'exécution de votre commande. |
- | Ainsi, **badaboum** sera le seul //user// autorisé à se servir de la commande **sudo** dans un terminal. | + | ==== Droits d'exécution à un seul user ==== |
- | === Pour les branches testing (Wheezy) et unstable (Sid) === | + | Pour réserver l'utilisation de sudo à mon_nom seulement, écrivez : |
- | Il est à noter que le fichier /etc/sudoers a subi de légers changements pour ces deux branches. | + | Defaults:mon_nom tty_tickets |
- | Aussi la ligne : | + | Où mon_nom est le nom que vous utilisez pour vous connecter à votre session. |
- | root ALL=(ALL) ALL | + | |
- | devient : | + | <note tip>Ainsi, pour un seul //utilisateur//, il n'est pas nécessaire d'intégrer ce dernier dans le groupe //sudo//</note> |
- | root ALL=(ALL:ALL) ALL | + | |
- | Celle que l'on écrit pour un utilisateur change de la même façon. Donc pour l'utilisateur badamoum ci-haut, elle devient : | + | //Merci à //**Asmodée**// pour cette indication précise !// :-D |
- | badaboum ALL=(ALL:ALL) ALL | + | <note warning>**DÉCONSEILLÉ** : \\ |
+ | Si vous voulez ouvrir les droits de **sudo** pour **plusieurs utilisateurs** sans les énumérer ici, écrivez : | ||
+ | <file>Defaults:All tty_tickets</file></note> | ||
- | Dans un terminal user, tapez une commande root : | ||
- | $ sudo fdisk -l | + | ==== sudo UN SEUL utilisateur AVEC mot de passwd demandé ==== |
- | Le passwd de l'//user// est demandé, non celui de root : | + | C'est la configuration préconisée pour tous les utilisateurs de sudo débutant. |
+ | |||
+ | Sous la ligne : | ||
+ | root ALL=(ALL:ALL) ALL | ||
+ | écrivez : | ||
+ | badaboum ALL=(ALL:ALL) ALL | ||
+ | (**badaboum** illustrant ici votre nom d'utilisateur **mon_nom**, par exemple...) \\ | ||
+ | Ainsi, **badaboum** sera le seul //utilisateur// autorisé à se servir de la commande **sudo** dans un terminal. | ||
+ | |||
+ | == Test de la configuration modifiée == | ||
+ | |||
+ | Tapez une commande root comme celle-ci par exemple : | ||
+ | <code user>sudo fdisk -l</code> | ||
+ | Le mot de passe de l'//user// sera alors demandé et non plus celui de root : | ||
[sudo] password for badaboum: <//Taper ici le passwd de cet user//> | [sudo] password for badaboum: <//Taper ici le passwd de cet user//> | ||
Et la commande s'exécute ! | Et la commande s'exécute ! | ||
- | ==== sudo UN SEUL user SANS mot de passwd demandé ==== | + | ==== UN SEUL utilisateur SANS mot de passwd demandé ==== |
- | <note warning>**Ceci est une utilisation réservée :**</note> | + | |
- | * aux machines __non connectées__ sur la toile ou dont le [[config:proxy|PROXY Serveur]] intermédiaire est configuré soigneusement par un EXPERT. | + | <note warning> |
+ | **Ceci est une utilisation réservée :** | ||
+ | |||
+ | * aux machines __non connectées__ sur la toile ou dont le serveur proxy intermédiaire est configuré soigneusement par un EXPERT. | ||
* aux EXPERTS, sachant protéger leurs machines par des configurations personnelles en amont. | * aux EXPERTS, sachant protéger leurs machines par des configurations personnelles en amont. | ||
- | * aux EXPERTS couvrant des tâches d'Administration exigeant l'usage du **super-utilisateur** et non de **root**. Un usage particulier de [[logiciel:kvm|KVM - Fork de Qemu]] par exemple... | + | * aux EXPERTS couvrant des tâches d'Administration exigeant l'usage du **super-utilisateur** et non de **root**. Un usage particulier de [[:doc:systeme:kvm|KVM - Fork de Qemu]] par exemple... |
- | voir : [[manuel:parefeu-iptables|IPTABLE]] et autres sécurités évoluées. | + | voir : [[:doc:reseau:iptables|iptable]] et autres sécurités évoluées.</note> |
Sous la ligne ''root ALL=(ALL) ALL'', écrivez seulement : | Sous la ligne ''root ALL=(ALL) ALL'', écrivez seulement : | ||
badaboum ALL=NOPASSWD: ALL | badaboum ALL=NOPASSWD: ALL | ||
- | (**badaboum** étant votre nom d'utilisateur **user**, par exemple...) | + | (**badaboum** étant votre nom d'utilisateur **mon_nom**, par exemple...) |
<note>Si vous utilisez la branche testing, soit Wheezy, ou bien Sid, veuillez tenir compte de la modification mentionné plus haut </note> | <note>Si vous utilisez la branche testing, soit Wheezy, ou bien Sid, veuillez tenir compte de la modification mentionné plus haut </note> | ||
- | À partir de maintenant, vous pouvez quitter le shell //root// et faire le reste sous votre //user// avec **sudo** sans plus taper de mot de passe. | + | À partir de maintenant, vous pouvez quitter le shell //root// et faire le reste sous votre //nom// avec **sudo** sans plus taper de mot de passe. |
- | === Exemple : === | + | == Exemple == |
- | Dans un terminal user, tapez une commande root : | + | Tapez une commande **root** mais sous votre **user** ainsi : |
- | + | <file user>sudo fdisk -l</file> | |
- | $ sudo fdisk -l | + | |
<note important>Et la commande s'exécute sans demande de passwd !</note> | <note important>Et la commande s'exécute sans demande de passwd !</note> | ||
- | ===== Configuration pour plusieurs users ===== | + | ===== Configuration pour plusieurs utilisateurs ===== |
- | ==== sudo PLUSIEURS utilisateur AVEC mot de passwd demandé === | + | ==== PLUSIEURS utilisateur AVEC mot de passwd demandé === |
Sous la ligne : | Sous la ligne : | ||
Ligne 132: | Ligne 166: | ||
Décommentez (ou rédigez) cette commande : | Décommentez (ou rédigez) cette commande : | ||
- | %sudo ALL=(ALL) ALL | ||
- | |||
- | ou, selon votre situation : | ||
%sudo ALL=(ALL:ALL) ALL | %sudo ALL=(ALL:ALL) ALL | ||
Ligne 140: | Ligne 171: | ||
Mettons que vous ayez un pote... un vrai hein... nommé //ploumploum// par exemple. Pour l'ajouter à la commande sudo, il suffira de taper : | Mettons que vous ayez un pote... un vrai hein... nommé //ploumploum// par exemple. Pour l'ajouter à la commande sudo, il suffira de taper : | ||
- | # adduser ploumploum sudo | + | <file root>adduser ploumploum sudo</file> |
Et il y sera pareillement maintenant ! | Et il y sera pareillement maintenant ! | ||
On met la petite soeurette //tagada// ? \\ | On met la petite soeurette //tagada// ? \\ | ||
- | On le fait ainsi : | + | Alors on le fait ainsi : |
- | # adduser tagada sudo | + | <file root>adduser tagada sudo</file> |
Je vous laisse ajouter l'user //tsointsoin// si vous le voulez bien... ;-) | Je vous laisse ajouter l'user //tsointsoin// si vous le voulez bien... ;-) | ||
- | //Ce tuto est initié sous la musique de captnfab...// | + | //Ce tuto est illustré sous la célèbre musique du captnfab :// |
ploumploum badaboum tagada tsointsoin... | ploumploum badaboum tagada tsointsoin... | ||
**Tchibâââ** ! :-D | **Tchibâââ** ! :-D | ||
- | ==== sudo PLUSIEURS users SANS mot de passwd demandé ==== | + | ==== sudo PLUSIEURS utilisateurs SANS mot de passwd demandé ==== |
- | <note warning>**Bien que possible**, il n'est absolument pas recommandé d'offrir les droits **root** automatiquement et __sans mot de passwd__ à tous les users.</note> | + | <note warning> |
+ | **Bien que possible**, il n'est absolument pas recommandé d'offrir les droits **root** automatiquement et __sans mot de passwd__ à tous les utilisateurs. | ||
+ | </note> | ||
Ligne 164: | Ligne 197: | ||
Il est ainsi possible d'accomplir : | Il est ainsi possible d'accomplir : | ||
* Moultes configurations de votre système sans maintenir un terminal root permanent. | * Moultes configurations de votre système sans maintenir un terminal root permanent. | ||
- | * De préserver ainsi une certaine sécurité en n'opérant pas de commande accidentelles sous **root**... | + | * De préserver ainsi une certaine sécurité en n'opérant pas de commande accidentelle sous **root**, la demande de mot de passe servant de rattrape-couillonnade... |
+ | |||
+ | Il est à noter que si toutes les opérations d'administrations peuvent se faire sous sudo, le passage par su option trait (-) est plus confortable pour des opérations multiples et longues à s'effectuer. | ||
+ | |||
+ | //Merci à //**Y316**// pour sa relecture des tutos et la pertinence de ses interrogations postés sur le forum concernant la terminologie de ceux-ci//. ;-) | ||
+ | |||
+ | ==== Exemple ==== | ||
+ | |||
+ | On veut donner à deux utilisateurs le droit d'installer/enlever des paquets et de pouvoir éteindre/redémarrer le système. | ||
+ | |||
+ | <note>Le fichier ''/etc/sudoers'' ci-dessous n'est pas complet. Seul les éléments illustrant cet exemple ont été mis en évidence.</note> | ||
+ | |||
+ | Pour ce faire, on éditera le fichier /etc/sudoers ainsi : | ||
+ | <file root>visudo</file> | ||
+ | <file> | ||
+ | # | ||
+ | # This file MUST be edited with the 'visudo' command as root. | ||
+ | # | ||
+ | # See the man page for details on how to write a sudoers file. | ||
+ | # | ||
+ | |||
+ | Defaults env_reset | ||
+ | |||
+ | # Définition d'un Alias pour deux utilisateurs | ||
+ | User_Alias MESADMINS = jojo,zozo | ||
+ | |||
+ | # Définition de deux Alias de commandes | ||
+ | Cmnd_Alias ETEINDRE = /sbin/shutdown, /sbin/reboot, /sbin/halt | ||
+ | Cmnd_Alias PAQUETS = /usr/bin/dpkg, /usr/bin/apt-get, /usr/bin/aptitude | ||
+ | |||
+ | # Les utilisateurs faisant partie de l'Alias MESADMINS peuvent installer/enlever des paquets et | ||
+ | # redémarrer/éteindre le système. | ||
+ | MESADMINS ALL = ETEINDRE, PAQUETS | ||
+ | </file> | ||
+ | |||
+ | === tâche cron et sudo === | ||
+ | utiliser sudo dans une tâche cron, par nature non interactive, est une aberration. Si la tâche doit s'exécuter avec les privilèges root, il faut la créer avec root. Merci **raleur** :-) | ||
===== Lien et remerciements ===== | ===== Lien et remerciements ===== | ||