| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| sudoers [Le 27/11/2019, 11:49] – Correction orthographique "Confère" en "Confer". 176.141.243.180 | sudoers [Le 17/09/2026, 13:14] (Version actuelle) – Mise en forme (https://forum.ubuntu-fr.org/viewtopic.php?pid=22907707#p22907707) avec l’italique et pas seulement le gras nany |
|---|
| ===== Modification du fichier /etc/sudoers ===== | ===== Modification du fichier /etc/sudoers ===== |
| |
| | ==== /etc/sudoers.d/ ==== |
| |
| ATTENTION ! | <note warning> |
| | Confer le fichier ///etc/sudoers.d/**README**// |
| |
| 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> |
| |
| La gestion de ''sudo'' est améliorée dans les dernières versions (Debian version 1.7.2). | 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**//. | 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**//. |
| |
| Premier avantage, 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 : **10-sysctl** **20-userX** **30-apt**. | === avantages === |
| |
| Le deuxième avantage est que la création d'un de ces fichiers ne nécessite aucun droit d'administration. L'intervention de l'administrateur se limite à la copie du(des) fichier(s) sous ///etc/**sudoers.d**// et application du mask 0440. | 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**. |
| |
| Le troisième avantage. Vous disposez d'un aperçu des modifications en listant simplement le contenu du répertoire ///etc/**sudoers.d**//. | - 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. |
| Le quatrième avantage est que 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. |
| Le dernier avantage est qu'en supprimant tous les fichiers de personnalisation, vous êtes certain de revenir à la configuration par défaut de ''sudo''. | |
| |
| | pour ce faire |
| | <code bash> |
| | sudo visudo -f /etc/sudoers.d/monfichier |
| | </code> |
| | |
| |
| L'ancienne méthode reste utilisable. | ==== /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. |
| |
| 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''. \\ |
| À la fermeture du fichier // /etc/sudoers // ouvert par son outil d'édition **visudo**, la nouvelle configuration est automatiquement chargée. | À la fermeture du fichier ///etc/sudoers// ouvert par son outil d'édition **visudo**, la nouvelle configuration est automatiquement chargée. |
| ==== Choisir l'éditeur utilisé par visudo ==== | ==== Choisir l'éditeur utilisé par visudo ==== |
| === A chaque fois === | === A chaque fois === |
| Pour forcer l'utilisation d'un éditeur lors de l'ouverture du fichier ///etc/**sudoers**// par ** visudo **, exécutez dans [[:terminal|une fenêtre de terminal]] l'une des commandes suivantes : | Pour forcer l'utilisation d'un éditeur lors de l'ouverture du fichier ///etc/**sudoers**// par **visudo**, exécutez dans [[:terminal|une fenêtre de terminal]] l'une des commandes suivantes : |
| * **Dans Ubuntu :** ''sudo VISUAL=/usr/bin/gedit visudo'' | * **Dans Ubuntu :** ''sudo VISUAL=/usr/bin/gedit visudo'' |
| * **Dans Kubuntu :** ''sudo VISUAL=/usr/bin/kate visudo'' | * **Dans Kubuntu :** ''sudo VISUAL=/usr/bin/kate visudo'' |
| * **Dans Xubuntu :** ''sudo VISUAL=/usr/bin/mousepad visudo'' | * **Dans Xubuntu :** ''sudo VISUAL=/usr/bin/mousepad visudo'' |
| * **Dans Lubuntu :** ''sudo VISUAL=/usr/bin/leafpad visudo'' | * **Dans Lubuntu :** ''sudo VISUAL=/usr/bin/leafpad visudo'' |
| * **En mode console :** ''sudo EDITOR=/usr/bin/nano visudo'' ** ou ** ''sudo EDITOR=/usr/bin/vim visudo'' | * **En mode console :** ''sudo EDITOR=/usr/bin/nano visudo'' **ou** ''sudo EDITOR=/usr/bin/vim visudo'' |
| === 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 : |
| À __**la fin du fichier**__, ajoutez une ligne d'instruction... | À __**la fin du fichier**__, ajoutez une ligne d'instruction... |
| <note important>En cas de litige entre ligne, ce sera la dernière dans le fichier sudoers qui sera comptée ! | <note important>En cas de litige entre ligne, ce sera la dernière dans le fichier sudoers qui sera comptée ! |
| 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 exécuter la commande //ls//, puis que plus loin vous mettez que le groupe //paris// ne peut pas exécuter la commande //ls//, //jérome// ne pourra pas exécuter la commande //ls// (du moins pas avec sudo) car la dernière ligne qui le concerne refuse l'exécution 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) /chemin/complet/commande,/chemin/complet/autrecommande | <file>identifiant ALL = (user) /chemin/complet/commande,/chemin/complet/autrecommande |
| ==== 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. |
| |
| 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 |
| 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> |
| |
| |
| Si, en tentant d’exécuter une commande sudo, vous obtenez une erreur comme ci-dessous, c'est que votre fichier sudoers est corrompu. | Si, en tentant d’exécuter une commande sudo, vous obtenez une erreur comme ci-dessous, c'est que votre fichier sudoers est corrompu. |
| Comme il est corrompu, vous ne pouvez plus exécuter sudo, et donc plus modifier le fichier ... cercle vicieux | Comme il est corrompu, vous ne pouvez plus exécuter sudo, et donc plus modifier le fichier… cercle vicieux |
| |
| toto@fixe:~$ sudo | toto@fixe:~$ sudo |
| <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 ==== |
| 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... ===== |
| * Copie locale : ''man sudoers'' Ce document regorge d'options supplémentaires et d'exemples pour personnaliser grandement le comportement de ''sudo''. | * Copie locale : ''man sudoers'' 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)]] |
| | |
| -------- | -------- |
| |
| |