Differences between revisions 24 and 25
Revision 24 as of 2021-12-01 20:02:24
Size: 10148
Editor: vauss
Comment: sync with English version
Revision 25 as of 2021-12-10 17:05:14
Size: 10134
Editor: ?FranLou
Comment: Des détails . 3 fois "vérifiez l'appartenance aux groupes" me semble trop, non ?
Deletions are marked like this. Additions are marked like this.
Line 13: Line 13:
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}}}. Une fois que l'utilisateur a été ajouté au groupe sudo, il doit se déconnecter puis se reconnecter pour que son appartenance au nouveau 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 au groupe n'est pas effective. On peut vérifier les groupes auxquels on appartient avec la commande {{{id}}}.
Line 21: Line 21:
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. Pour toutes les raisons ci-dessus, la possibilité de ''basculer'' en superutilisateur en utilisant {{{sudo -i}}} (ou {{{sudo su}}}) est habituellement désapprouvée parce que cela annule les avantages cités ci-dessus.
Line 25: Line 25:
Dans sa configuration par défaut Debian permet aux utilisateurs dans le groupe `sudo` d'exécuter n'importe quelle commande via `sudo`. Dans sa configuration par défaut Debian permet aux utilisateurs du groupe `sudo` d'exécuter n'importe quelle commande via `sudo`.
Line 29: Line 29:
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 Une fois connecté comme utilisateur, vous pouvez vérifier l'appartenance ou non au groupe `sudo` en utilisant soit la commande {{{id}}} soit la commande {{{groups}}}. Par exemple, l'utilisateur `foo` tapera
Line 70: Line 70:
Depuis [[fr/DebianSqueeze|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. Depuis [[fr/DebianSqueeze|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.


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 groupe sudo, il doit se déconnecter puis se reconnecter pour que son appartenance au nouveau 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 au groupe 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ée parce que cela annule les avantages cités ci-dessus.

Utilisateurs et sudo

Dans sa configuration par défaut Debian permet aux utilisateurs du 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 l'appartenance 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é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


CategoryRoot | CategorySystemSecurity | CategorySystemAdministration