Accéder au contenuNavigation Accéder à la page : page précédente [raccourci clavier p] / page suivante [raccourci clavier n]
documentation.suse.com / Configuration des privilèges de superutilisateur avec sudo

Configuration des privilèges de superutilisateur avec sudo

Date de publication : 12 déc 2024
CONTENU

Familiarisez-vous avec les bases de la configuration de sudo et apprenez à déléguer les privilèges de superutilisateur avec sudo.

MOTIF

Certaines commandes nécessitent des privilèges d'administrateur ou root. L'utilisation de sudo vous permet de déléguer à certains utilisateurs ou groupes les privilèges nécessaires pour exécuter ces commandes.

EFFORT

La lecture de cet article vous prendra au maximum 20 minutes. L'écriture de votre première règle de configuration sudo ne prend que quelques minutes, mais l'établissement d'une configuration sudo fonctionnelle qui soit opérationnelle dans l'ensemble de votre environnement prendra beaucoup plus de temps, selon la complexité de votre configuration.

OBJECTIF

Comprendre les principes de base de la configuration sudo. Traiter les cas d'utilisation courants pour la configuration sudo. Apprendre à travailler avec des utilisateurs, des groupes d'utilisateurs et des alias dans des configurations sudo. Se familiariser avec les meilleures pratiques et le dépannage de sudo.

CONDITIONS REQUISES

1 Présentation de la configuration sudo

sudo fournit un moyen de déléguer de manière sécurisée et efficace des privilèges de superutilisateur à certains utilisateurs ou groupes.

Certaines opérations sur un système Linux nécessitent des privilèges d'administrateur ou root. Les utilisateurs privés qui gèrent leur propre système n'ont pas à déléguer de privilèges de superutilisateur, car l'administrateur et l'utilisateur ordinaire sont la même personne dans ce scénario. Toutefois, dès qu'un système fait partie d'un plus vaste environnement comptant plusieurs utilisateurs, groupes et hôtes, il devient essentiel de garder le contrôle de qui est autorisé à faire quoi et où. En même temps, il est important de fournir à tous les utilisateurs et groupes les privilèges nécessaires pour effectuer leurs tâches.

sudo est conçu pour vous aider dans cette mission. Il offre les avantages suivants :

Amélioration de la sécurité du système

sudo offre un contrôle précis sur les utilisateurs, les groupes, les hôtes et les commandes et augmente ainsi la sécurité du système en réduisant le risque de dommages intentionnels ou accidentels par un intrus ou un utilisateur système.

Suivi d'audit complet

Chaque fois qu'un utilisateur change de privilège, cette information apparaît dans le journal du système et toutes les opérations effectuées par cet utilisateur avec des privilèges élevés peuvent être retracées.

Possibilité de déléguer des tâches root spécifiques

À l'aide de sudo, les administrateurs système peuvent permettre à des utilisateurs individuels ou à des groupes d'effectuer certaines tâches sans devoir entrer le mot de passe root et à basculer vers le compte root.

Important
Important : comment lire cet article

Cet article fournit des informations détaillées de configuration sudo. Cependant, il ne fournit aucun conseil sur la façon de créer une stratégie sudo exhaustive et sécurisée. Les stratégies liées à la sécurité sont très complexes et dépendent fortement de l'environnement pour lequel elles sont créées.

2 Création de configurations sudo personnalisées

Apprenez à créer un simple exemple de configuration sudo personnalisée et à le développer étape par étape. Créez des groupes et utilisez des alias pour que votre configuration personnalisée reste simple et efficace.

Avertissement
Avertissement : les exemples de configuration sont fournis à des fins de démonstration uniquement

Les exemples de règles décrits ci-dessous sont fournis uniquement à des fins de démonstration. Utilisez-les pour comprendre la syntaxe générale des fichiers de configuration sudo. Ne les utilisez pas dans des configurations réelles, car ils ne reflètent pas la complexité de ces environnements.

2.1 Meilleures pratiques de configuration sudo

Avant de commencer, voici quelques règles de base pour la gestion des configurations sudo :

Utilisez toujours visudo pour modifier les fichiers de configuration sudo

Toute modification de la configuration sudo doit être effectuée à l'aide de la commande visudo. visudo est un outil personnalisé qui vous permet d'éditer les fichiers de configuration sudo et d'exécuter des vérifications de syntaxe de base, en veillant à garder intacte la configuration et son fonctionnement. Une configuration sudo erronée peut empêcher l'accès d'un utilisateur à son propre système.

Créez toujours les configurations personnalisées sous /etc/sudoers.d/

Les configurations personnalisées doivent résider sous /etc/sudoers.d/ afin que sudo puisse les extraire. Les paramètres des fichiers de configuration personnalisés sont prioritaires sur ceux de la configuration par défaut dans /etc/sudoers.

Tenez toujours compte de l'ordre dans lequel les configurations sont lues

Pour vous assurer que les configurations personnalisées sont lues dans le bon ordre, ajoutez-leur un numéro en préfixe. Utilisez des zéros au début pour établir l'ordre dans lequel les fichiers sont lus. Par exemple, 01_myfirstconfig est analysé avant 10_myotherconfig. Si une directive a été définie dans un fichier qui est lu avant un autre fichier contenant des informations contradictoires, la dernière directive lue est appliquée.

Utilisez toujours des noms de fichiers descriptifs

Utilisez des noms qui indiquent la finalité du fichier de configuration. Cela vous aide à suivre ce que votre configuration sudo est censée faire.

Astuce
Astuce : configuration sudo et systèmes de fichiers immuables

Un système de fichiers immuable est un système de fichiers impossible à modifier une fois installé. Il est accessible en lecture seule. Si le produit SUSE que vous utilisez repose sur un système de fichiers immuable, la configuration sudo par défaut fournie avec le produit est installée sous /usr/etc/sudoers et tous les ajustements préconfigurés se trouvent sous /usr/etc/sudoers.d/.

Vos propres configurations personnalisées sont situées sous /etc/sudoers.d/ et sont prioritaires sur tout ce qui se trouve à l'emplacement /usr/etc/sudoers.d/. La commande visudo ouvre /usr/etc/sudoers et enregistre le fichier modifié à l'emplacement /etc/sudoers, s'il n'y avait pas encore de fichier sudoers. Si un fichier était déjà présent, visudo ouvre et écrit dans ce fichier. L'instance située sous /etc/ est prioritaire sur celle qui est conservée à l'emplacement /usr/etc/. De cette façon, les ajustements de configuration effectués par l'utilisateur ne seront pas endommagés lors des mises à jour.

2.2 Création d'un fichier de configuration spécifique à l'utilisateur

Créez un fichier de configuration sudo qui permet à un utilisateur standard (tux) d'employer la commande useradd avec son propre mot de passe au lieu du mot de passe root.

Exemple 1 : création d'un fichier de configuration spécifique à l'utilisateur
  1. En tant qu'administrateur système (root), créez un fichier de configuration personnalisé qui contient les nouvelles directives spécifiques à l'utilisateur en démarrant visudo. Utilisez une numérotation ainsi qu'un nom descriptif :

    # visudo -f /etc/sudoers.d/02_usermanagement
  2. Créez une règle qui permet à tux d'exécuter le fichier binaire /usr/sbin/useradd dans tout l'environnement auquel cette configuration sudo s'applique :

    tux1 ALL2 = /usr/sbin/useradd3

    1

    Spécifiez l'utilisateur ou le groupe. Répertoriez les utilisateurs par nom ou #UID et les groupes par %GROUPNAME. Si vous disposez de plusieurs éléments ici, séparez-les par des virgules. Pour refuser des entrées, utilisez !.

    2

    Spécifiez un ou plusieurs hôtes (séparés par des virgules). Utilisez des noms d'hôte (complets) ou des adresses IP. Ajoutez ALL pour appliquer ce paramètre globalement à tous les hôtes. Utilisez ! pour les interdictions.

    3

    Spécifiez un ou plusieurs exécutables (séparés par des virgules). Lorsque vous les spécifiez, veillez à respecter les règles suivantes :

    /usr/sbin/useradd

    Sans ajouter d'options supplémentaires, cela permet d'exécuter toutes les commandes useradd possibles.

    /usr/sbin/useradd -c

    Si vous spécifiez explicitement une option, cette option est la seule autorisée. Aucune autre ne sera disponible pour l'utilisateur que vous avez spécifié ci-dessus.

    /usr/sbin/useradd ""

    Cette syntaxe permet à l'utilisateur d'invoquer une simple commande useradd sans aucune option.

    Dans l'exemple ci-dessus, vous pouvez autoriser toutes les options et sous-commandes ou les limiter à quelques-unes pour des raisons de sécurité, mais interdire à un utilisateur de spécifier une quelconque option est inutile dans ce contexte.

  3. Pour permettre à l'utilisateur d'utiliser son propre mot de passe au lieu du mot de passe root, ajoutez la ligne suivante :

    Defaults:tux !targetpw

    Lorsqu'il est actif, cet indicateur demande à l'utilisateur d'entrer le mot de passe de l'utilisateur cible, c'est-à-dire root. Cet indicateur est activé par défaut sur n'importe quel système SLE Micro. Annulez-le en utilisant ! pour demander à l'utilisateur d'entrer simplement son propre mot de passe au lieu du mot de passe root.

  4. Enregistrez la configuration, quittez l'éditeur, puis ouvrez un deuxième shell pour vérifier si sudo respecte votre nouvelle configuration.

2.3 Création de configurations personnalisées en regroupant des éléments

Modifiez la configuration de l'Exemple 1, « création d'un fichier de configuration spécifique à l'utilisateur » de sorte qu'un groupe d'utilisateurs nommés puisse exécuter la commande useradd sans avoir besoin du mot de passe root. Ajoutez également usermod et userdel à la liste des commandes disponibles pour ce groupe.

Exemple 2 : création de configurations personnalisées en regroupant des éléments
  1. Pour modifier l'exemple de configuration, ouvrez-le en tant qu'administrateur système avec visudo.

    # visudo /etc/sudoers.d/02_usermanagement
  2. Ajoutez d'autres utilisateurs à la règle dans une liste séparée par des virgules :

    tux, wilber ALL = /usr/sbin/useradd
  3. Pour permettre aux utilisateurs répertoriés d'exécuter plusieurs commandes, spécifiez-les sous forme de liste séparée par des virgules :

    tux, wilber ALL = /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel
  4. Pour permettre aux utilisateurs répertoriés dans la liste d'utiliser leur propre mot de passe au lieu du mot de passe root, ajoutez la ligne suivante :

    Defaults:tux, wilber !targetpw

    Lorsqu'il est actif, cet indicateur demande aux utilisateurs de la liste d'entrer le mot de passe de l'utilisateur cible, c'est-à-dire de l'utilisateur root. Cet indicateur est activé par défaut sur n'importe quel système SLE Micro. Annulez-le en utilisant ! pour demander aux utilisateurs de la liste d'entrer simplement leur propre mot de passe au lieu du mot de passe root.

  5. Enregistrez la configuration, quittez l'éditeur, puis ouvrez un deuxième shell pour vérifier si sudo respecte votre nouvelle configuration.

2.4 Simplification des configurations grâce à l'application d'alias

Les alias permettent de simplifier davantage votre configuration personnalisée de l'Exemple 2, « création de configurations personnalisées en regroupant des éléments ». Le regroupement d'éléments est utile dans une certaine mesure, mais l'utilisation d'alias globaux pour les utilisateurs, les commandes et les hôtes est le moyen le plus efficace de conserver une configuration sudo propre et légère.

L'utilisation d'alias et de groupes au lieu de listes est une méthode bien plus efficace pour gérer les modifications apportées à votre configuration. Si un utilisateur quitte ses fonctions, il suffit de le retirer de la déclaration User_Alias globale de votre fichier de déclaration d'alias au lieu de parcourir séparément tous les fichiers de configuration personnalisés pour le supprimer. La même procédure s'applique à tout autre type d'alias (Host_Alias, Cmnd_Alias et Runas_Alias).

Exemple 3 : simplification des configurations grâce à l'application d'alias
  1. Créez un nouveau fichier pour stocker vos définitions d'alias globales :

    # visudo /etc/sudoers.d/01_aliases
  2. Ajoutez la ligne suivante pour créer l'alias TEAMLEADERS :

    User_Alias    TEAMLEADERS = tux, wilber
  3. Ajoutez la ligne suivante pour créer l'alias USERMANAGEMENT :

    Cmnd_Alias    USERMANAGEMENT = /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel
  4. Enregistrez vos modifications, puis quittez visudo.

  5. En tant qu'administrateur système, lancez visudo pour modifier l'exemple de fichier de configuration :

    # visudo -f /etc/sudoers.d/02_usermanagement
  6. Supprimez la règle précédente et remplacez-la par la règle suivante qui utilise les alias que vous venez de définir ci-dessus :

    TEAMLEADERS ALL = USERMANAGEMENT
  7. Pour permettre à tous les utilisateurs définis par User_Alias d'utiliser leur propre mot de passe au lieu du mot de passe root, ajoutez la ligne suivante :

    Defaults:TEAMLEADERS !targetpw
  8. Enregistrez la configuration, quittez l'éditeur, puis ouvrez un deuxième shell pour vérifier si sudo respecte votre nouvelle configuration.

Note
Note : informations supplémentaires

Pour obtenir une description plus détaillée de la syntaxe de configuration de sudo, reportez-vous à la Section 7, « Référence de configuration sudo » et à la page de manuel de sudo.

3 Modification du timeout de l'invite de mot de passe sudo

Apprenez à modifier les paramètres de timeout pour exécuter des commandes qui nécessitent des privilèges root sans avoir à entrer le mot de passe root pour chaque commande.

Lorsque vous exécutez une commande précédée de sudo pour la première fois, vous êtes invité à entrer le mot de passe root. Ce mot de passe reste valide pendant un certain temps. Une fois qu'il a expiré, l'utilisateur est de nouveau invité le saisir. Pour prolonger ou raccourcir le timeout lors de l'exécution de commandes nécessitant des privilèges root, apportez les modifications suivantes à votre fichier de configuration sudo.

Avertissement
Avertissement : n'accordez pas un accès illimité sans mot de passe aux privilèges root

Pour des raisons de sécurité, n'accordez pas un accès illimité aux privilèges root. Définissez plutôt un timeout raisonnable pour éviter toute utilisation abusive du compte root par un intrus.

Procédure 1 : modification du timeout pour les invites de mot de passe sudo
  1. En tant qu'administrateur système, créez un fichier de configuration sudo pour la configuration de l'horodatage avec :

    # visudo --f=/etc/sudoers.d/timestamp_timeout

    Une fois l'authentification réussie avec le mot de passe root, le fichier est ouvert.

  2. Activez l'édition et ajoutez la ligne timestamp_timeout=. Entrez une valeur pour l'horodatage.

    Par exemple, pour réduire le timeout à trois minutes, entrez :

    timestamp_timeout=3

    Si l'horodatage est défini sur zéro, vous êtes invité à entrer le mot de passe root pour chaque exécution d'une commande sudo.

  3. Enregistrez les modifications, puis fermez le fichier.

Vous avez créé un fichier de configuration sudo et raccourci le paramètre de timeout pour l'exécution des commandes sudo.

4 Démarrage d'un shell avec des privilèges root

Démarrez un shell avec des privilèges root permanents à l'aide de la commande sudo -s ou sudo -i. Avec les deux commandes, vous n'êtes invité à entrer le mot de passe root qu'une seule fois.

4.1 Différence entre les commandes sudo -s et sudo -i

Le fait de devoir entrer sudo à chaque fois que vous voulez exécuter une commande en tant que root peut devenir fastidieux. À la place, vous pouvez utiliser l'un des mécanismes intégrés pour démarrer un shell avec des privilèges root permanents. Pour cela, deux options de commande sont disponibles :

  • sudo -s lance le shell avec l'environnement de l'utilisateur actuel et offre quelques mesures de contrôle des privilèges. Pour exécuter cette commande, entrez le mot de passe root.

  • sudo -i démarre le shell en tant que shell de connexion interactif avec un environnement propre. Pour exécuter cette commande, entrez le mot de passe root.

Avec les deux commandes, le shell démarre avec un nouvel environnement et vous êtes connecté en tant qu'utilisateur root. Lorsque vous exécuterez d'autres commandes dans ce shell avec des privilèges élevés, il ne sera pas nécessaire de ressaisir le mot de passe. Vous quittez cet environnement lorsque vous fermez le shell et vous devez à nouveau saisir le mot de passe pour exécuter une autre commande sudo.

4.2 Démarrage d'un shell avec sudo -s

La commande sudo -s lance un shell interactif sans connexion. Une fois l'authentification réussie avec le mot de passe root, toutes les commandes suivantes sont exécutées avec des privilèges élevés.

La variable d'environnement SHELL ou le shell par défaut de l'utilisateur spécifie le shell qui s'ouvre. Si cette variable est vide, le shell défini dans /etc/passwd est sélectionné.

Par défaut, la commande sudo -s s'exécute à partir du répertoire de l'utilisateur précédent, car l'utilisateur cible hérite de l'environnement de l'utilisateur précédent. La commande est également consignée dans votre historique.

Pour démarrer un shell avec des privilèges élevés de façon permanente, entrez la commande suivante :

tux:~ > sudo -s
[sudo] password for root:
root:/home/tux # exit
tux:~ > 

L'invite passe de > à # .

Vous avez démarré un shell avec des privilèges élevés de façon permanente. Toutes les commandes suivantes sont exécutées sans que vous ayez à entrer de nouveau le mot de passe.

4.3 Démarrage d'un shell avec sudo -i

La commande sudo -i est similaire à l'option de ligne de commande sudo -s, mais elle lance un shell de connexion interactif. Lorsque vous utilisez la commande sudo -s, l'utilisateur cible hérite de l'environnement de l'utilisateur précédent. Vous pouvez empêcher cet héritage en utilisant la commande sudo -i, où l'utilisateur cible obtient un environnement nettoyé et démarre à partir de son propre répertoire $HOME.

Pour exécuter une commande avec sudo -i, entrez ceci :

tux:~ > sudo -i
[sudo] password for root:
root:~ # exit
tux:~ > 

Vous avez démarré un shell avec des privilèges élevés en permanence et la commande est consignée dans votre historique. Toutes les commandes suivantes sont exécutées sans que vous ayez à entrer de nouveau le mot de passe.

5 Meilleures pratiques sudo

Découvrez quelques-unes des meilleures pratiques sudo pour contrôler l'accès au système et permettre aux utilisateurs d'être productifs.

Testez et auditez minutieusement vos configurations sudo

Pour créer une structure de configuration sudo vraiment efficace et sécurisée, établissez une routine pour effectuer régulièrement des tests et des audits. Identifiez les failles possibles et trouvez des solutions pour y remédier. Ne laissez pas la facilité d'utilisation prendre le pas sur la sécurité.

Conservez les configurations sudo personnalisées dans des fichiers distincts

Le principal fichier de configuration de stratégie pour sudo est /etc/sudoers. Ce fichier est fourni par les paquets système et les modifications apportées peuvent empêcher les mises à jour. Par conséquent, créez des fichiers de configuration distincts contenant vos paramètres personnalisés sous le répertoire /etc/sudoers.d/. Ceux-ci sont extraits par défaut par une directive dans /etc/sudoers.

Limitez le timeout sudo.

Pour des raisons de sécurité, n'accordez pas un accès illimité aux privilèges root. Définissez plutôt un timeout raisonnable pour éviter toute utilisation abusive du compte root par un intrus. Pour plus d'informations, reportez-vous à la Section 3, « Modification du timeout de l'invite de mot de passe sudo ».

Utilisez la commande visudo

Utilisez la commande visudo pour éditer le fichier /etc/sudoers en toute sécurité, car elle vérifie la syntaxe du fichier avant d'enregistrer les modifications. Il s'agit d'une méthode préventive pour corriger les erreurs qui peuvent nuire au système. Outre la vérification de la syntaxe de base, vous pouvez également exécuter visudo -c pour vérifier si l'ensemble de votre structure de configuration sudo est analysée dans le bon ordre et sans erreur.

Gérez les utilisateurs en groupes plutôt qu'individuellement

Veillez à ce que votre configuration sudo reste la plus simple et la plus gérable possible. Gérez les utilisateurs en les ajoutant à des groupes, puis en accordant des privilèges à ces groupes plutôt qu'à des utilisateurs individuels. Cela vous permet d'ajouter ou de supprimer des utilisateurs en modifiant simplement les paramètres du groupe au lieu d'avoir à rechercher l'utilisateur dans votre configuration.

Exemple de règle qui permet à tous les utilisateurs d'un exemple de groupe %admingrp d'exécuter toutes les commandes :

%admingrp ALL = (ALL) ALL
Restreignez le chemin d'accès aux fichiers binaires

Avec la directive secure_path, limitez les zones dans lesquelles les utilisateurs peuvent exécuter des commandes. L'exemple suivant illustre le paramètre par défaut fourni avec SLE Micro.

Defaults secure_path="/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin:/usr/local/sbin"
Préservez la transparence de la journalisation sudo

sudo consigne les événements dans le fichier journal standard où ses entrées peuvent facilement être ignorées. Ajoutez la règle suivante à votre configuration pour spécifier un fichier journal sudo dédié.

Defaults logfile=/var/log/sudo.log

6 Dépannage

Apprenez à déboguer et à résoudre les problèmes de configuration sudo.

6.1 Les configurations personnalisées sous /etc/sudoers.d/ sont ignorées

La directive #includedir dans /etc/sudoers ignore les fichiers qui se terminent par le caractère ~ ou qui contiennent le caractère .. Cela permet d'éviter les problèmes avec les fichiers de configuration fournis par le gestionnaire de paquets (contenant .), ou avec les fichiers temporaires ou de sauvegarde d'un éditeur (se terminant par ~). Assurez-vous que les noms de vos fichiers de configuration personnalisés ne contiennent ni ne se terminent par ces caractères. Si c'est le cas, renommez-les.

6.2 Conflit de directives personnalisées

L'ordre dans lequel les fichiers de configuration sont lus détermine le moment auquel une directive de configuration sudo est appliquée. Les directives d'un fichier situé sous /etc/sudoers.d/ sont prioritaires sur les mêmes directives dans /etc/sudoers. Si les directives personnalisées indiquées dans /etc/sudoers.d/ ne fonctionnent pas, vérifiez l'ordre dans lequel les fichiers sont lus à l'aide de visudo -c. Ajustez l'ordre, si nécessaire.

6.3 Verrouillage en raison d'une configuration sudo défaillante

Si vous avez accidentellement endommagé la configuration sudo de votre système et que vous vous êtes exclu de sudo, utilisez su - et le mot de passe root pour démarrer un shell root. Exécutez visudo -c pour rechercher les erreurs, puis corrigez-les à l'aide de visudo.

7 Référence de configuration sudo

Cette section fournit une référence de configuration de base de sudo qui vous aide à comprendre et à gérer les configurations sudo par défaut et personnalisées.

7.1 Syntaxe de configuration sudoers

Les fichiers de configuration sudoerscontiennent deux types d'options : des chaînes et des indicateurs. Bien que les chaînes puissent contenir n'importe quelle valeur, les indicateurs peuvent être activés (ON) ou désactivés (OFF). Les constructions de syntaxe les plus importantes pour les fichiers de configuration sudoers sont les suivantes :

# Everything on a line after # is ignored1
Defaults !insults # Disable the insults flag2
Defaults env_keep += "DISPLAY HOME" # Add DISPLAY and HOME to env_keep3
tux ALL = NOPASSWD: /usr/bin/frobnicate, PASSWD: /usr/bin/journalctl4

1

Il existe deux exceptions : #include et #includedir sont des commandes habituelles. La version la plus récente n'utilise plus le #. Au lieu de celui-ci, les directives d'inclusion sont désormais précédées de @. La notation # est toujours prise en charge pour des raisons de compatibilité avec les versions précédentes.

2

Supprimez le caractère ! pour activer l'indicateur souhaité.

3

Indiquez la liste des variables d'environnement à conserver lorsque env_reset est activé.

4

Règle complexe qui indique que l'utilisateur tux a besoin d'un mot de passe pour exécuter /usr/bin/journalctl et qu'il n'en a pas besoin pour exécuter /usr/bin/frobnicate sur tous les hôtes.

Indicateurs et options utiles
targetpw

Si cette option est définie, sudo vous invite à saisir le mot de passe utilisateur spécifié dans l'option -u ou le mot de passe root, si -u n'est pas utilisé. La valeur par défaut est ON (Activé).

Defaults targetpw # Turn targetpw flag ON
rootpw

Si cette option est définie, sudo vous invite à saisir le mot de passe root. La valeur par défaut est OFF (Désactivé).

Defaults !rootpw # Turn rootpw flag OFF
env_reset

Si cette valeur est définie, sudo crée un environnement minimal avec TERM, PATH, HOME, MAIL, SHELL, LOGNAME, USER, USERNAME et SUDO_*. En outre, les variables répertoriées dans env_keep sont importées de l'environnement d'appel. La valeur par défaut est ON (Activé).

Defaults env_reset # Turn env_reset flag ON
env_keep

Liste des variables d'environnement à conserver lorsque l'indicateur env_reset est ON (Activé).

# Set env_keep to contain EDITOR and PROMPT
Defaults env_keep = "EDITOR PROMPT"
Defaults env_keep += "JRE_HOME" # Add JRE_HOME
Defaults env_keep -= "JRE_HOME" # Remove JRE_HOME
env_delete

Liste des variables d'environnement à supprimer lorsque l'indicateur env_reset est OFF (Désactivé).

# Set env_delete to contain EDITOR and PROMPT
Defaults env_delete = "EDITOR PROMPT"
Defaults env_delete += "JRE_HOME" # Add JRE_HOME
Defaults env_delete -= "JRE_HOME" # Remove JRE_HOME

7.2 Règles sudoers de base

Chaque règle respecte le schéma suivant ([] indique les parties facultatives) :

#Who      Where         As whom      Tag                What
User_List Host_List = [(User_List)] [NOPASSWD:|PASSWD:] Cmnd_List
Syntaxe des règles sudoers
User_List

Un ou plusieurs identificateurs (séparés par des virgules) : un nom d'utilisateur, un groupe au format %GROUPNAME ou un ID utilisateur au format #UID. La négation peut être spécifiée avec le préfixe !.

Host_List

Un ou plusieurs identificateurs (séparés par des virgules) : un nom d'hôte (complet) ou une adresse IP. La négation peut être spécifiée avec le préfixe !. ALL est un choix courant pour Host_List.

NOPASSWD:|PASSWD:

L'utilisateur n'est pas invité à entrer de mot de passe lors de l'exécution des commandes correspondant à Cmd_List après NOPASSWD:.

PASSWD: est la valeur par défaut. Il ne doit être spécifié que lorsque PASSWD: et NOPASSWD: sont sur la même ligne :

tux ALL = PASSWD: /usr/bin/foo, NOPASSWD: /usr/bin/bar
Cmnd_List

Un ou plusieurs spécificateurs (séparés par des virgules) : chemin d'accès à un exécutable, suivi d'un argument autorisé facultatif.

/usr/bin/foo     # Anything allowed
/usr/bin/foo bar # Only "/usr/bin/foo bar" allowed
/usr/bin/foo ""  # No arguments allowed

ALL peut être utilisé en tant que User_List, Host_List et Cmnd_List.

7.3 Simplification de sudoers grâce aux alias

Les administrateurs peuvent éviter de devoir gérer un ensemble de règles répétitives et individuelles en introduisant des alias pour grouper des éléments. Leur syntaxe est la même que celle des règles. Les types d'alias pris en charge sont les suivants :

User_Alias

Liste de noms d'utilisateurs

Runas_Alias

Groupe d'utilisateurs par UID

Host_Alias

Liste de noms d'hôtes

Cmnd_Alias

Liste de commandes, de répertoires et d'alias

Considérez les alias comme des listes de noms d'utilisateurs, de groupes, de commandes et d'hôtes. Pour illustrer la puissance des alias, prenez cet exemple :

Host_Alias    WEBSERVERS = www1, www2, www31
User_Alias    ADMINS = tux, wilber, suzanne2
Cmnd_Alias    REBOOT = /sbin/halt, /sbin/reboot, /sbin/poweroff3
ADMINS WEBSERVERS = REBOOT4

1

Les trois serveurs sont regroupés en un seul Host_Alias WEBSERVERS. Vous pouvez utiliser des noms d'hôte (complets) ou des adresses IP.

2

Comme pour les hôtes regroupés ci-dessus, des utilisateurs de groupes ou même des groupes d'utilisateurs (comme %wheel) sont répertoriés ici. La négation s'effectue avec le préfixe !, comme d'habitude.

3

Spécifie un groupe de commandes utilisées dans le même contexte.

4

Tous les alias sont regroupés dans une règle unique indiquant que tous les utilisateurs spécifiés par User_Alias peuvent exécuter le groupe de commandes spécifié sous Cmnd_Alias sur tous les hôtes nommés dans Host_Alias.

En résumé, les alias aident les administrateurs à ce que le fichier sudoers reste le plus simple et le plus gérable (et donc le plus sécurisé) possible. Si, par exemple, l'un des utilisateurs a quitté la société, vous pouvez supprimer le nom de cette personne de l'instruction User_Alias et de tout groupe système auquel elle appartenait une seule fois au lieu de devoir rechercher toutes les règles qui contenaient cet utilisateur spécifique.