Différences
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 | ||
sudoers [Le 09/01/2018, 20:53] Arbiel [Configuration avancée de l'utilitaire sudo] |
sudoers [Le 12/09/2023, 19:29] (Version actuelle) Amiralgaby ancienne révision (Le 31/08/2022, 23:58) restaurée |
||
---|---|---|---|
Ligne 6: | Ligne 6: | ||
**[[: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. | **[[: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. | ||
- | 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". | + | 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 26: | 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 42: | Ligne 73: | ||
* ''%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 49: | 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 = /chemin/complet/commande, NOPASSWD: /chemin/complet/autrecommande | + | <file>identifiant ALL = (ALL) /chemin/complet/commande, NOPASSWD: /chemin/complet/autrecommande |
- | %groupe ALL = NOPASSWD: /chemin/complet/commande,/chemin/complet/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 64: | 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 75: | 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 : | ||
Ligne 134: | Ligne 165: | ||
<file>pkexec visudo</file> | <file>pkexec visudo</file> | ||
- | <note>Ou bien d'utiliser [[http://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> | + | <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> |
| | ||
==== Redémarrer en mode recovery ==== | ==== Redémarrer en mode recovery ==== | ||
Ligne 145: | Ligne 176: | ||
mount -o remount,rw / | 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 151: | Ligne 182: | ||
nano /etc/sudoers | nano /etc/sudoers | ||
| | ||
- | Voir [[http://www.psychocats.net/ubuntu/fixsudo|ici]] pour d'autres possibilités. | + | Voir [[https://www.psychocats.net/ubuntu/fixsudo|ici]] pour d'autres possibilités. |
===== Aller plus loin... ===== | ===== Aller plus loin... ===== |