|
Size: 13630
Comment: sync with English version
|
Size: 10300
Comment: sync with English version
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 86: | Line 86: |
| Maintenant, si vous souhaitez autoriser certains utilisateurs à exécuter certains programmes, voici un exemple rapide (pour plus d'informations, lisez le manuel). | Maintenant, si vous souhaitez autoriser certains utilisateurs à exécuter certains programmes, voici un exemple rapide (pour plus d'informations, lisez le manuel) que vous pouvez inclure dans un fichier /etc/sudoers.d, en utilisant visudo -f /etc/sudoers.d/myfile. ~-{{{#!plain User_Alias MYADMINS = jdoe |
| Line 88: | Line 90: |
| ~-{{{#!plain # /etc/sudoers # # 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 Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # Host alias specification User_Alias MYADMINS = toto # User alias specification # Cmnd alias specification Cmnd_Alias SHUTDOWN = /sbin/reboot, /sbin/poweroff Cmnd_Alias PKGMGMT = /usr/bin/dpkg, /usr/bin/apt-get, /usr/bin/aptitude # User privilege specification |
Cmnd_Alias SHUTDOWN = /sbin/reboot, /sbin/poweroff Cmnd_Alias PKGMGMT = /usr/bin/dpkg, /usr/bin/apt-get, /usr/bin/aptitude |
| Line 112: | Line 95: |
# Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL #Default rule for root. root ALL=(ALL) ALL #includedir /etc/sudoers.d |
|
| Line 123: | Line 98: |
=== PATH non configuré === Voici une erreur classique qui survient dans l'utilisation de sudo pour installer un paquet : {{{ dpkg: warning: 'ldconfig' not found in PATH or not executable. dpkg: warning: 'start-stop-daemon' not found in PATH or not executable. dpkg: error: 2 expected programs not found in PATH or not executable. Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin. }}} Le fichier /etc/sudoers fourni par le paquet contient cette ligne : {{{ Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" }}} Les anciennes versions ne contenaient pas cette ligne. Dans le cas où vous auriez modifié le fichier local /etc/sudoers (et beaucoup le font) et puis, lors de la mise à jour, conservé la version modifiée en local, alors cette ligne est absente. Le fichier ne modifie plus votre PATH quand vous utilisez sudo. Le résultat le plus probable est que le PATH n'est pas configuré comme il faut et donc il n'inclut pas les répertoires systèmes. Pour corriger cela, il faut intégrer vos changements locaux au nouveau fichier /etc/sudoers installé par le paquet. Une autre solution est de placer vos changements locaux dans un nouvel emplacement dans /etc/sudoers.d/ sous la forme d'un fichier qui doit se nommer {{{/etc/sudoers.d/local-sudoers}}}. Voir DebianBug:639841 pour plus de détails. |
|
| Line 159: | Line 115: |
| Ce message signifie exactement ce qu'il dit : l'utilisateur qui est en fonction n'est pas autorisé à exécuter la commande donnée sur cette machine. Une raison possible qui peut introduire une confusion est que l'administrateur a seulement ajouté l'utilisateur toto à un groupe privilégié - mais vous utilisez encore une vieille session qui n'a pas l'information de la nouvelle appartenance au groupe et donc qui n'a pas les nouveaux droits pour se servir de sudo. Dans ce cas, l'utilisateur est habituellement prévenu qu'il doit quitter totalement la session puis se reconnecter, bien qu'il soit parfois possible de s'en sortir en exécutant la commande pour « se reconnecter à chaud » avec {{{su - $USER}}}. | Ce message signifie exactement ce qu'il dit : l'utilisateur qui est en fonction n'est pas autorisé à exécuter la commande donnée sur cette machine. Une raison possible qui peut introduire une confusion est que l'administrateur a seulement ajouté l'utilisateur toto à un groupe privilégié - mais vous utilisez encore une vieille session qui n'a pas l'information de la nouvelle appartenance au groupe et donc qui n'a pas les nouveaux droits pour se servir de sudo. Dans ce cas, l'utilisateur est habituellement prévenu qu'il doit quitter totalement la session puis se reconnecter, bien qu'il soit parfois possible de s'en sortir en exécutant la commande pour « se reconnecter à chaud » avec {{{su - $USER}}} ou bien en changeant de groupe avec {{{newgrp sudo}}}. |
| Line 163: | Line 119: |
| Le fichier {{{/etc/sudoers}}} standard à partir de la version 1.8.2-1 de Wheezy se termine avec la ligne : | Le fichier {{{/etc/sudoers}}} standard se termine avec la ligne : |
| Line 171: | Line 127: |
| Il est également recommandé d'apporter des modifications locales aussi dans un extrait de code. |
|
| Line 175: | Line 133: |
| L'explication que l'on donne habituellement est que cette configuration est faite pour que seuls les administrateurs puissent modifier le fichier et cela seulement avec la commande {{{visudo}}}. Néanmoins, cette théorie ne tient pas la route. Être en mode 0440 ne sert à rien pour empêcher de faire {{{sudo nano /etc/sudoers}}} - la plupart des éditeurs de texte vous laisseront modifier le fichier sans râler à cause de la marque lecture seule. En plus, chaque fois que vous massacrez le fichier {{{/etc/sudoers}}}, la réparation est aussi simple que la commande {{{su -c visudo}}}, ce qui n'est rien comparé à la procédure de récupération qu'il faut mettre en œuvre si vous 'cassez' un fichier comme {{{/etc/inittab}}} (mode 0644). Donc, s'il y a une bonne raison pour ces droits non-orthodoxes, elle reste mystérieuse - toute information est bienvenue. | L'explication est qu'il a été configuré de cette manière pour motiver les administrateurs à ne le modifier que via la commande {{{visudo,}}} qui fournit une vérification supplémentaire avant de laisser le nouveau fichier en place. Vous pourriez penser que le correctif pour un {{{/etc/sudoers}}} mutilé peut être aussi simple que {{{su -c visudo}}}, mais sudo est souvent utilisé dans un endroit où se connecter à root simplement avec {{{su}}} n'est pas possible car vous ne connaissez tout simplement pas le mot de passe root. |
| Line 177: | Line 135: |
| === Mauvais HOME (et mauvaise configuration du profil) === Si on rencontre un problème quand on utilise {{{sudo}}} dans son shell et que son $HOME (et la configuration du profil) ne fonctionne pas comme prévu parce que votre nouveau HOME est /root, il faut savoir que dans Squeeze la configuration par défaut de {{{sudo}}} rétablit toutes les variables d'environnement. Pour rétablir l'ancien comportement qui préservait les variables d'environnement du $HOME de l'utilisateur, il faut ajouter ceci à son fichier de configuration {{{/etc/sudoers}}} : ~-{{{#!plain Defaults env_keep += HOME }}}-~ |
Attention, la plupart des éditeurs de texte vous permettront de modifier le fichier sans se plaindre du bit en lecture seule, vous n'obtiendrez donc peut-être pas automatiquement cette protection supplémentaire. |
| Line 201: | Line 153: |
| Pour plus d'informations, lisez la [[http://www.sudo.ws/sudo/stable.html#1.7.4|liste originale des changements de la version 1.7.4]]. |
|
| Line 211: | Line 161: |
| === bash: useradd: command not found === Utilisez ~-{{{#!plain $ su -l }}}-~ pour démarrer le shell superutilisateur avec un environnement identique à un shell utilisateur « normal ». Ceci permet l'initialisation de la variable d'environnement $PATH pour l'utilisateur « superutilisateur » (root) au lieu de simplement de l'hériter d'un utilisateur « normal » (non sudo) qui n'a pas /sbin dans son $PATH. Voir ~-{{{#!plain $ man su }}}-~ Ceci permet d'activer sudo après une nouvelle installation de Debian 10 : ~-{{{#!plain $ su -l # adduser USERNAME sudo # exit }}}-~ Puis, déconnectez-vous de l'environnement de bureau et reconnectez-vous. Vous pouvez vérifier le résultat en entrant ~-{{{#!plain $ groups }}}-~ ---- |
Translation(s): العربية - English - Español - Français - Italiano - Русский
Root > sudo
Sudo (Parfois considéré comme l'abréviation de Super-user do) est un programme dont l'objectif de permettre à l'administrateur du système d'autoriser certains utilisateurs à exécuter des commandes en tant que superutilisateur (ou qu'un autre utilisateur). La philosophie qui sous-tend cela est de donner aussi peu que possible de droits, mais de permettre quand même aux utilisateurs de faire leur travail. Sudo est aussi un moyen efficace d'enregistrer qui a exécuté quelle commande et quand.
Pour ajouter l'utilisateur toto au groupe sudo :
# adduser toto sudo
Une fois que l'utilisateur a été ajouté au nouveau groupe, il doit se déconnecter puis se reconnecter pour que l'appartenance au nouveau groupe soit effective. En effet, l'appartenance à un groupe est accordée à un utilisateur au moment de sa connexion. Une des erreurs les plus communes est que les utilisateurs se rajoutent à un groupe mais oublient de se déconnecter puis de se reconnecter : ils rencontrent alors des problèmes parce que leur appartenance n'est pas effective. On peut vérifier les groupes auxquels on appartient avec la commande id.
Pourquoi sudo ?
Utiliser sudo est meilleur (plus sûr) que d'ouvrir une session en tant que superutilisateur pour un certain nombre de raisons dont :
Personne n'a à connaitre le mot de passe du superutilisateur (sudo demande le mot de passe de l'utilisateur courant). Des droits supplémentaires peuvent être accordés temporairement à des utilisateurs puis retirés sans qu'il soit besoin de changer de mot de passe.
Il est facile de n'exécuter que les commandes qui nécessitent des droits spéciaux avec sudo et le reste du temps, on travaille en tant qu'utilisateur non-privilégié, ce qui réduit les dommages que l'on peut commettre par erreur.
- Contrôler et enregistrer : quand une commande sudo est exécutée, le nom de l'utilisateur et la commande sont enregistrés.
Pour toutes les raisons ci-dessus, la possibilité de basculer en superutilisateur en utilisant sudo -i (ou sudo su) est habituellement désapprouvé parce que cela annule les avantages cités ci-dessus.
Utilisateurs et sudo
Dans sa configuration par défaut Debian permet aux utilisateurs dans le groupe sudo d'exécuter n'importe quelle commande via sudo.
Vérifier l'appartenance au groupe sudo
Une fois connecté comme utilisateur, vous pouvez vérifier si l'utilisateur appartient ou non au groupe sudo en utilisant soit la commande id soit la commande groups. Par exemple, l'utilisateur foo tapera
$ groups
et obtiendra en sortie
foo sudo
Si sudo n'est pas présent à l'affichage en sortie, l'utilisateur n'appartient pas à ce groupe. De même, la commande id, plus complexe, devrait sortir quelque chose comme
uid=1001(foo) gid=1001(foo) groups=1001(foo),27(sudo)
Ajouter un utilisateur existant à partir de la ligne de commande
Pour ajouter l'utilisateur foo au groupe sudo :
$ sudo adduser foo sudo
Autrement, vous pouvez d'abord vous connecter comme superutilisateur (par exemple, sudo su -) et ensuite exécuter les mêmes commandes sans le préfixe sudo :
# adduser foo # adduser foo sudo
Après s'être ajouté à un nouveau groupe, l'utilisateur doit se déconnecter et se reconnecter afin que le changement pour le nouveau groupe soit effectif. C'est une erreur assez répandue de s'ajouter à un groupe mais de ne pas ensuite se déconnecter et reconnecter, ce qui occasionne des problèmes car le groupe n'est pas encore assigné ; vérifiez l'appartenance aux groupes.
Créer des utilisateurs avec sudo
Vous pouvez également créer des utilisateurs avec l'appartenance au groupe sudo :
Créer un nouvel utilisateur pendant l'installation de l'OS
Depuis Squeeze, si vous donnez au superutilisateur (root) un mot de passe vide durant l'installation, sudo sera installé et le premier utilisateur sera capable de l'utiliser pour obtenir l'accès du superutilisateur (actuellement, l'utilisateur sera ajouté au groupe sudo). Le système configurera également gksu et aptitude pour utiliser sudo. Vous devriez toujours [#Vérifier_l'appartenance_au_groupe_sudo|vérifiez l'appartenance aux groupes]] après vous être connecté comme l'utilisateur de l'installation.
Créer un nouvel utilisateur à partir de la ligne de commande
Un utilisateur qui est déjà membre du groupe sudo peut créer un autre utilisateur (par exemple foo) comme membre du groupe sudo à partir de la ligne de commande :
$ sudo adduser foo -G sudo
(ou connectez-vous d'abord en tant que superutilisateur comme dans la section précédente). Vous devez alors vous connecter en tant qu'utilisateur nouvellement créé et vérifiez l'appartenance aux groupes.
Aperçu de configuration
Maintenant, si vous souhaitez autoriser certains utilisateurs à exécuter certains programmes, voici un exemple rapide (pour plus d'informations, lisez le manuel) que vous pouvez inclure dans un fichier /etc/sudoers.d, en utilisant visudo -f /etc/sudoers.d/myfile. User_Alias MYADMINS = jdoe
Cmnd_Alias SHUTDOWN = /sbin/reboot, /sbin/poweroff
Cmnd_Alias PKGMGMT = /usr/bin/dpkg, /usr/bin/apt-get, /usr/bin/aptitude
# Users listed above (MYADMINS) can run package managers and reboot the system.
MYADMINS ALL = PKGMGMT, SHUTDOWN
Problèmes et conseils
Désolé, l'utilisateur toto n'est pas autorisé à exécuter la commande ...
Une session classique se déroule comme ceci :
$ sudo test We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for toto: Sorry, user toto is not allowed to execute '/usr/bin/test' as root on localhost.
Ce message signifie exactement ce qu'il dit : l'utilisateur qui est en fonction n'est pas autorisé à exécuter la commande donnée sur cette machine. Une raison possible qui peut introduire une confusion est que l'administrateur a seulement ajouté l'utilisateur toto à un groupe privilégié - mais vous utilisez encore une vieille session qui n'a pas l'information de la nouvelle appartenance au groupe et donc qui n'a pas les nouveaux droits pour se servir de sudo. Dans ce cas, l'utilisateur est habituellement prévenu qu'il doit quitter totalement la session puis se reconnecter, bien qu'il soit parfois possible de s'en sortir en exécutant la commande pour « se reconnecter à chaud » avec su - $USER ou bien en changeant de groupe avec newgrp sudo.
La directive inclue
Le fichier /etc/sudoers standard se termine avec la ligne :
#includedir /etc/sudoers.d
Cela permet à d'autres paquets de fournir des bouts de code dans /etc/sudoers.d/<nom de paquet> qui modifient la configuration de sudo. On peut croire qu'il est nécessaire de modifier la ligne pour retirer le caractère # initial (le dièse), mais non, le '#' fait partie de la commande !
Il est également recommandé d'apporter des modifications locales aussi dans un extrait de code.
sudoers est en lecture seule
Oui, le fichier /etc/sudoers est intentionnellement en lecture seule, même pour le superutilisateur !
L'explication est qu'il a été configuré de cette manière pour motiver les administrateurs à ne le modifier que via la commande visudo, qui fournit une vérification supplémentaire avant de laisser le nouveau fichier en place. Vous pourriez penser que le correctif pour un /etc/sudoers mutilé peut être aussi simple que su -c visudo, mais sudo est souvent utilisé dans un endroit où se connecter à root simplement avec su n'est pas possible car vous ne connaissez tout simplement pas le mot de passe root.
Attention, la plupart des éditeurs de texte vous permettront de modifier le fichier sans se plaindre du bit en lecture seule, vous n'obtiendrez donc peut-être pas automatiquement cette protection supplémentaire.
Demander le mot de passe du compte administrateur (« root »)
Si vous souhaitez que le mot de passe du compte administrateur (« root ») soit demandé à chaque utilisation de sudo à la place du mot de passe de l'utilisateur, ajoutez la ligne :
Defaults rootpw
Aucune invite de mot de passe pour l'utilisateur sudo
Si vous voulez que les membres du groupe sudo exécutent des commandes sans mot de passe, ajoutez la ligne :
%sudo ALL=(ALL) NOPASSWD: ALL
Personnaliser le délai d'expiration du cache des informations d'identification
Par défaut, après avoir demandé un mot de passe, vos informations d'identification sont mises en cache par sudo durant 15 minutes. Vous pouvez changer cela en utilisant la commande visudo et personnaliser le délai d'expiration pour un utilisateur spécifique :
Defaults:foobar timestamp_timeout=30
Voir aussi
Les pages du Manuel : sudoers(5), sudo(8), visudo(8), sudoedit(8), sudoreplay(8)
Doas - un outil similaire, plus léger, minimaliste et de configuration plus simple
CategoryRoot | CategorySystemSecurity | CategorySystemAdministration
