Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
sudoers [Le 09/08/2015, 15:02]
beaver
sudoers [Le 12/09/2023, 19:29] (Version actuelle)
Amiralgaby ancienne révision (Le 31/08/2022, 23:58) restaurée
Ligne 1: Ligne 1:
-{{tag>Hardy Lucid  Oneiric precise quantal ​administration sécurité}}+{{tag>Xenial ​administration sécurité}}
 ----- -----
  
 ====== Configuration avancée de l'​utilitaire sudo ====== ====== Configuration avancée de l'​utilitaire sudo ======
  
-**[[:​sudo|L'​utilitaire « sudo »]]**, ​filtrant les tâches d'​administration dans Ubuntu, peut être paramétré finement pour autoriser ou refuser ​l'​exécution de tâches privilégiées. Plus que simplement autoriser l'​exécution de toutes les tâches administratives à un groupe d'​utilisateurs par l'​authentification par mot de passe, ''​sudo''​ peut permettre ​à un utilisateur ​particulier ​ou un groupe d'utilisateurs particulier d'exécuter une ou des tâches ​bien précises, ​avec ou sans saisie ​du mot de passe. ​D'autres paramètres,​ tels le délai ​d'attente avant qu'une ré-authentification soit nécessairel'​endroit où est enregistré le journal d’événements ​et le niveau ​de courtoisie ​de ''​sudo'',​ sont aussi paramétrables.+**[[:​sudo|L'​utilitaire « sudo »]]**, ​par le jeu de paramètres dont il dispose, peut autoriser ou refuser à un utilisateur ou à un groupe d'utilisateur l'exécution de tâches ​privilégiées ​avec ou sans saisie ​d'​un ​mot de passe. ​Cette gestion des droits accordés aux utilisateurs est consignée dans le fichier ///​etc/​**sudoers**//​. Le présent document n'est cependant pas le manuel ​d'utilisation de ce fichier. Son objectif est d'indiquer comment le modifier dans le contexte des distributions Ubuntu, et de donner quelques exemples ​de configuration adaptés à un environnement domestique ou à une PME/PMI.
  
-Le présent document n'a pas pour but de remplacer le manuel ​du fichier ///​etc/​**sudoers**//​. Il vous indique comment modifier ce fichier dans Ubuntu ​et ses variantes, et vous donne quelques trucs et astuces ​de configuration utiles pour votre environnement domestique ou de PME/PMI.+D'autres paramètres,​ destinés aux administrateurs ​de systèmes, concernent également la durée de validité de l'​authentification des utilisateurs,​ la localisation ​du journal des événements ​et le niveau ​de courtoisie ​de ''​sudo''​.
  
 +===== Modification du fichier /​etc/​sudoers =====
  
 +==== /​etc/​sudoers.d/​ ====
 +
 +<note warning>
 +Confer le fichier ///​etc/​sudoers.d/​**README**//​
 +
 +La gestion de ''​sudo''​ est améliorée dans les dernières versions (Debian version 1.7.2). ​
 +C'est à dire pour toutes les versions d'​Ubuntu supportées.
 +</​note>​
 +
 +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''​.
 +
 +Pour modifier le fonctionnement de la commande ''​sudo'',​ l'​administrateur du système ne modifie plus le fichier ///​etc/​**sudoers**//​ mais positionne des fichiers de personnalisation dans le répertoire ///​etc/​**sudoers.d**//​.
 +
 +=== avantages ===
 +
 +vous pouvez définir autant de fichiers que de modifications (voir le §2). Le nom est libre et peut donc faire référence à l'​élément personnalisé. Exemples : **monfichier** , **10-sysctl** , **20-userX** , **30-apt**.
 +
 +  - Vous disposez d'un aperçu des modifications en listant simplement le contenu du répertoire ///​etc/​**sudoers.d**//​.
 +  - l'​administrateur peut annuler à tout moment une autorisation particulière de la commande ''​sudo''​ en supprimant le fichier de personnalisation correspondant. ​
 +  - En supprimant tous les fichiers de personnalisation,​ vous êtes certain de revenir à la configuration par défaut de ''​sudo''​ qui sera restée d'​origine.
 +  - Cette configuration peut se mettre à jour sans perdre vos modifications locales.
 +
 +pour ce faire
 +<code bash>
 +sudo visudo -f /​etc/​sudoers.d/​monfichier
 +</​code>​
 +  ​
 +
 +==== /​etc/​sudoers ====
 +
 +Si il est toujours préférable de privilégier d'​écrire ses modifications locales dans [[#​etcsudoersd|/​etc/​sudoers.d]] il est toujours possible de surcharger directement le fichier /​etc/​sudoers.
  
-===== Modification du fichier /​etc/​sudoers ===== 
 La configuration de ''​sudo''​ est enregistrée dans le fichier de configuration ///​etc/​**sudoers**//​. La configuration de ''​sudo''​ est enregistrée dans le fichier de configuration ///​etc/​**sudoers**//​.
 +
  
 La modification de ce fichier s'​effectue à travers un utilitaire de vérification appelé **visudo**. <code bash> sudo visudo </​code>​Il effectue une vérification de l'​intégrité du fichier après modification avant de l'​enregistrer. En cas d'​erreur lors de la modification,​ le nouveau fichier n'est pas enregistré,​ ce qui vous évite de vous retrouver dans l'​impossibilité de corriger votre erreur. Enfin, il s'​assure que ce fichier conserve ses droits Unix originaux, ce qui garantit le bon fonctionnement de ''​sudo''​. \\ La modification de ce fichier s'​effectue à travers un utilitaire de vérification appelé **visudo**. <code bash> sudo visudo </​code>​Il effectue une vérification de l'​intégrité du fichier après modification avant de l'​enregistrer. En cas d'​erreur lors de la modification,​ le nouveau fichier n'est pas enregistré,​ ce qui vous évite de vous retrouver dans l'​impossibilité de corriger votre erreur. Enfin, il s'​assure que ce fichier conserve ses droits Unix originaux, ce qui garantit le bon fonctionnement de ''​sudo''​. \\
Ligne 25: Ligne 57:
 === configurer l'​éditeur par défaut === === configurer l'​éditeur par défaut ===
 pour changer l'​éditeur en ligne de commande, par défaut, il suffit de lancer : pour changer l'​éditeur en ligne de commande, par défaut, il suffit de lancer :
-  sudo update-alternatives ​ --config editor+  sudo update-alternatives --config editor
  
 et de sélectionner l'​éditeur de votre choix, dans la liste des [[:​editeur_de_texte#​editeurs_en_ligne_de_commande|éditeurs de texte]] déjà installés. et de sélectionner l'​éditeur de votre choix, dans la liste des [[:​editeur_de_texte#​editeurs_en_ligne_de_commande|éditeurs de texte]] déjà installés.
Ligne 36: Ligne 68:
 Si par exemple , //jérome// fait partie du groupe //paris// et que vous mettez que //jérome// peut executer la commande //ls//, puis que plus loin vous mettez que le groupe //paris// ne peut pas executer la commande //ls//, //jérome// ne pourra pas executer la commande //ls// (du moins pas avec sudo) car la dernière ligne qui le concerne refuse l'​execution de ls ! D'où l'​importance de __**bien situer la ligne que vous souhaitez inclure**__,​ notamment **par rapport aux lignes déjà pré-définies pour les groupes admin et sudo** !</​note>​ Si par exemple , //jérome// fait partie du groupe //paris// et que vous mettez que //jérome// peut executer la commande //ls//, puis que plus loin vous mettez que le groupe //paris// ne peut pas executer la commande //ls//, //jérome// ne pourra pas executer la commande //ls// (du moins pas avec sudo) car la dernière ligne qui le concerne refuse l'​execution de ls ! D'où l'​importance de __**bien situer la ligne que vous souhaitez inclure**__,​ notamment **par rapport aux lignes déjà pré-définies pour les groupes admin et sudo** !</​note>​
  ​...telle que la suivante :  ​...telle que la suivante :
-<​file>​identifiant ALL = (user) commande,​autrecommande +<​file>​identifiant ALL = (user) ​/​chemin/​complet/​commande,/​chemin/​complet/​autrecommande 
-%groupe ALL = (user) commande,​!autrecommande</​file>​+%groupe ALL = (user) ​/​chemin/​complet/​commande,!/​chemin/​complet/​autrecommande</​file>​
   * ''​identifiant''​ représente un identifiant utilisateur du système Ubuntu. Un seul identifiant doit être précisé par ligne ;   * ''​identifiant''​ représente un identifiant utilisateur du système Ubuntu. Un seul identifiant doit être précisé par ligne ;
   * ''​%groupe''​ désigne un groupe d'​utilisateurs du système Ubuntu. Le nom du groupe doit donc être précédé d'un symbole de pourcentage (''​%''​). Un seul groupe doit être précisé par ligne ;   * ''​%groupe''​ désigne un groupe d'​utilisateurs du système Ubuntu. Le nom du groupe doit donc être précédé d'un symbole de pourcentage (''​%''​). Un seul groupe doit être précisé par ligne ;
   * ''​ALL''​ désigne la ou les machines dans lesquelles les commandes suivantes sont autorisées ou refusées pour cet utilisateur ou ce groupe d'​utilisateurs. Le mot-clé ''​ALL''​ désigne l'​ensemble des machines de votre 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 ;   * ''​ALL''​ désigne la ou les machines dans lesquelles les commandes suivantes sont autorisées ou refusées pour cet utilisateur ou ce groupe d'​utilisateurs. Le mot-clé ''​ALL''​ désigne l'​ensemble des machines de votre 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)+  *  ​''​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.   *  ''​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 précédées d'un point d'​exclamation (''​!''​) sont refusées, alors que celles sans point d'​exclamation sont autorisées ;
Ligne 48: Ligne 80:
 ==== Exécuter des tâches d'​administration sans mot de passe ==== ==== Exécuter des tâches d'​administration sans mot de passe ====
 À la fin du fichier, ajoutez une ligne d'​instruction telle que la suivante : À la fin du fichier, ajoutez une ligne d'​instruction telle que la suivante :
-<​file>​identifiant ALL = commande, NOPASSWD: autrecommande +<​file>​identifiant ALL = (ALL) /​chemin/​complet/​commande, NOPASSWD: ​/​chemin/​complet/​autrecommande 
-%groupe ALL = NOPASSWD: commande,​autrecommande</​file>​+%groupe ALL = (ALL) NOPASSWD: ​/​chemin/​complet/​commande,/​chemin/​complet/​autrecommande</​file>​
 Toutes les commandes situées à la droite du mot-clé ''​NOPASSWD:''​ peuvent être exécutées par l'​utilisateur ou le groupe d'​utilisateurs précisé en début d'​instruction. Celles restées à sa gauche sont toujours soumises à l'​authentification par mot de passe. Toutes les commandes situées à la droite du mot-clé ''​NOPASSWD:''​ peuvent être exécutées par l'​utilisateur ou le groupe d'​utilisateurs précisé en début d'​instruction. Celles restées à sa gauche sont toujours soumises à l'​authentification par mot de passe.
  
Ligne 63: Ligne 95:
 Après avoir créé le groupe codeclavier,​ pensez à utiliser un numéro spécial pour éviter les conflits avec les groupes utilisateurs,​ vous ajoutez cette ligne dans le fichier /​etc/​sudoers. Après avoir créé le groupe codeclavier,​ pensez à utiliser un numéro spécial pour éviter les conflits avec les groupes utilisateurs,​ vous ajoutez cette ligne dans le fichier /​etc/​sudoers.
 <code bash> <code bash>
- ​%codeclavier ​   ALL = NOPASSWD: /​bin/​changecode+ ​%codeclavier ​   ALL = (ALL) NOPASSWD: /​bin/​changecode
 </​code>​ </​code>​
 et maintenant le petit script évidemment mis dans /​bin/​code.clavier.sh et maintenant le petit script évidemment mis dans /​bin/​code.clavier.sh
Ligne 74: Ligne 106:
  ​setkeycodes 0x2b 86  ​setkeycodes 0x2b 86
 </​code>​ </​code>​
-Et miracle, il marche. Si vous ajoutez un lien dans /​etc/​profile.d/,​ il sera exécuté à votre connexion en tout transparence!!!+Et miracle, il marche. Si vous ajoutez un lien dans /​etc/​profile.d/,​ il sera exécuté à votre connexion en toute transparence!!!
 </​note>​ </​note>​
  
-====Exécuter un programme ​avec un autre user====+====Exécuter un programme ​en tant qu'un autre 'user'====
 La commande sudo permet d'​exécuter un programme en tant qu'un autre utilisateur. La commande sudo permet d'​exécuter un programme en tant qu'un autre utilisateur.
 Par exemple, la ligne : Par exemple, la ligne :
-<​file>​foo ​     ALL=(bar) NOPASSWD: program</​file>​+<​file>​foo ​     ALL=(bar) NOPASSWD: ​/​chemin/​complet/​program</​file>​
 permet à foo d'​utiliser program en tant que bar sans qu'on ne lui demande son mot de passe. permet à foo d'​utiliser program en tant que bar sans qu'on ne lui demande son mot de passe.
  
Ligne 133: Ligne 165:
 <​file>​pkexec visudo</​file>​ <​file>​pkexec visudo</​file>​
  
-<​note>​ +<​note>​Ou bien d'​utiliser [[https://www.psychocats.net/​ubuntu/​fixsudo|la solution suivante]]((source http://​askubuntu.com/​questions/​73864/​how-to-modify-a-invalid-etc-sudoers-file-it-throws-out-an-error-and-not-allowi)).</​note>​
- +
-//(source http://​askubuntu.com/​questions/​73864/​how-to-modify-a-invalid-etc-sudoers-file-it-throws-out-an-error-and-not-allowi)// +
- +
-Ou bien d'​utiliser la solution suivante ​ (testé et copié de http://www.psychocats.net/​ubuntu/​fixsudo)</​note>​+
   ​   ​
 ==== Redémarrer en mode recovery ==== ==== Redémarrer en mode recovery ====
Ligne 146: Ligne 174:
  
 ==== Remonter les disques en écriture ==== ==== Remonter les disques en écriture ====
-  mount -o rw,remount /+  mount -o remount,rw /
   ​   ​
-==== Remonter les disques en écriture ​====+==== Editer / corriger le fichier '​sudoers'  ​====
 Faire les opérations souhaitées comme éditer le fichier à la main : Faire les opérations souhaitées comme éditer le fichier à la main :
  
Ligne 154: Ligne 182:
       nano /​etc/​sudoers       nano /​etc/​sudoers
       ​       ​
-Voir http://​www.psychocats.net/​ubuntu/​fixsudo pour d'​autres possibilités.+Voir [[https://​www.psychocats.net/​ubuntu/​fixsudo|ici]] ​pour d'​autres possibilités.
  
 ===== Aller plus loin... ===== ===== Aller plus loin... =====
 Consultez la page de manuel officiel du fichier ///​etc/​**sudoers**//​ : Consultez la page de manuel officiel du fichier ///​etc/​**sudoers**//​ :
   * En ligne : [[http://​www.sudo.ws/​sudo/​sudoers.man.html|Sudoers Manual]] ;   * En ligne : [[http://​www.sudo.ws/​sudo/​sudoers.man.html|Sudoers Manual]] ;
-  * Copie locale : ''​man sudoers''​ +  * Copie locale : ''​man sudoers''​ Ce document regorge d'​options supplémentaires et d'​exemples pour personnaliser grandement le comportement de ''​sudo''​.
-Ce document regorge d'​options supplémentaires et d'​exemples pour personnaliser grandement le comportement de ''​sudo''​. +
   * **(fr)** [[http://​guide.andesi.org/​html/​ksudo.html|Comment donner certains droits root à un utilisateur (Sudo)]]   * **(fr)** [[http://​guide.andesi.org/​html/​ksudo.html|Comment donner certains droits root à un utilisateur (Sudo)]]
 +--------
 +
 +
  • sudoers.1439125353.txt.gz
  • Dernière modification: Le 09/08/2015, 15:02
  • par beaver