Qu'est-ce que sudo sous Linux. Qu'est-ce que Sudo (su). Autoriser un utilisateur à exécuter une commande sans saisir de mot de passe

Sudo est un programme qui permet aux administrateurs d'accorder des droits root limités aux utilisateurs et de conserver un journal de l'activité root. La philosophie de base est d’accorder le moins de droits possible tout en permettant aux personnes d’accomplir normalement leurs tâches. La différence avec la commande su est que l'utilisateur saisit le mot de passe de son compte plutôt que le mot de passe de l'utilisateur root.

Sudo sur Debian a un délai d'attente de quinze minutes (peut-être) après avoir entré le mot de passe. Cela signifie que lorsque vous entrez pour la première fois le mot de passe root, vous disposez de 15 minutes pendant lesquelles vous pouvez exécuter la commande suivante sans entrer le mot de passe. Le délai d'attente peut être réinitialisé immédiatement à l'aide de la commande sudo -k.

Installer sudo sur Debian 7

aptitude installer sudo

Un fichier de configuration est créé lors de l'installation /etc/sudoers et répertoire /etc/sudoers.d, dont nous parlerons un peu plus tard.

options de la commande sudo

-k- vous permet de réinitialiser le délai d'attente jusqu'à ce que vous deviez saisir à nouveau le mot de passe. Si vous spécifiez une commande pouvant nécessiter un mot de passe, le délai d'attente sera réinitialisé spécifiquement pour cette commande.
-h- un petit indice sera affiché sur la sortie standard.
-V- la version de sudo et des plugins sera affichée. Si vous exécutez en tant que root, tous les paramètres seront affichés.
-g groupe - vous permet de spécifier à partir de quel groupe la commande sera lancée.
-H- spécifie le répertoire qui sera spécifié dans la variable d'environnement HOME.
-je- simule l'entrée initiale. Si la commande n'est pas spécifiée, elle vous connectera afin que vous puissiez devenir root au lieu d'utiliser sudo su.
-l[l]- si la commande n'est pas spécifiée, alors une liste des commandes disponibles pour l'utilisateur appelant (ou l'utilisateur spécifié avec le paramètre -U) sera affichée. Si une commande est spécifiée et qu'elle est disponible, le chemin complet de la commande et les paramètres disponibles seront affichés. Si la commande n'est pas disponible, sudo se terminera avec l'état 1. Si vous utilisez l'option -ll ou spécifiez -l deux fois, un format de sortie plus détaillé sera utilisé.
-s- le shell spécifié dans la variable d'environnement SHELL sera lancé. Si une commande est spécifiée, elle sera transmise au shell en cours d'exécution pour exécution.
-U utilisateur- avec le paramètre -l, permet d'afficher les privilèges d'un utilisateur spécifique. Par défaut, root et les utilisateurs disposant de tous les privilèges (TOUS) ont accès aux listes de privilèges.
-u utilisateur- la commande spécifiée sera exécutée en tant qu'utilisateur spécifié, et non en tant que root.
-v- vous permet de prolonger le délai d'attente de 15 minutes ou tout ce qui est spécifié dans sudoers), mais de n'exécuter aucune commande.

La plupart des options disponibles sont répertoriées ici, mais pas toutes. Pour voir la liste complète, utilisez la commande mec sudo.

Configurer sudo sur Debian 7

Il est recommandé de définir tous les paramètres utilisateur dans les fichiers du répertoire /etc/sudoers.d, pas dans le fichier principal /etc/sudoers. Autrement dit, vous pouvez créer un fichier avec n'importe quel nom dans le répertoire /etc/sudoers.d et y répertoriez déjà les paramètres nécessaires.

Déposer /etc/sudoers il est recommandé de modifier à l'aide de l'utilitaire visudo, puisqu'il verrouille le fichier et vérifie l'exactitude des directives lors de la fermeture. visudo utilise un éditeur de texte par défaut, qui peut être remplacé dans sudoers directive comme :

La commande sudo est très importante pour gérer les droits d'accès dans le système d'exploitation Linux. Grâce à cette petite commande, vous pouvez accorder à d'autres utilisateurs l'autorisation d'effectuer certaines actions au nom de l'administrateur, sans leur donner le mot de passe de superutilisateur lui-même. De plus, vous n'avez pas besoin d'être toujours sous un compte superutilisateur pour effectuer occasionnellement des actions administratives.

Il semblerait qu'une si petite équipe, avec un minimum de capacités et une utilisation la plus simple possible, mais en réalité, elle peut faire bien plus. Dans cet article, nous verrons comment sudo est configuré sous Linux pour contrôler l'accès aux fonctions du système et aux capacités des utilisateurs.

Avant de passer à la configuration de l'accès à l'utilitaire sudo, regardons son fonctionnement. Il existe deux façons d'obtenir les droits d'administrateur sous Linux. Vous pouvez passer à l'utilisateur root à l'aide de la commande su, ou vous pouvez transmettre la commande souhaitée en paramètre à l'utilitaire sudo, qui l'exécutera avec les droits d'administrateur. De plus, la deuxième méthode est préférable, car vous n'oublierez pas ce que vous utilisez et ne ferez rien d'inutile.

Le nom de l'équipe signifie utilisateur remplaçant faire ou le super utilisateur le fait. L'utilitaire vous permet d'exécuter des programmes en tant qu'autre utilisateur, mais le plus souvent en tant qu'utilisateur root. L'utilitaire a été développé en 1980 par Bob Cogshell et Cliff Spencer. Pendant ce temps, de nombreux développeurs ont changé et de nombreuses fonctionnalités ont été ajoutées.

sudo fonctionne grâce au drapeau d'accès SUID. Si cet indicateur est défini pour un programme, alors il est exécuté non pas au nom de l'utilisateur qui l'a lancé, mais au nom du propriétaire, étant donné que le fichier appartient à sudo, alors l'utilitaire est exécuté en tant que root. Il lit ensuite ses paramètres, demande le mot de passe de l'utilisateur et décide si l'utilisateur peut être autorisé à exécuter des commandes en tant qu'administrateur. Si oui, alors la commande passée en paramètre est exécutée.

Maintenant que vous connaissez la théorie, voyons comment configurer sudo sous Linux.

Configuration de sudo sous Linux

Tous les paramètres sudo se trouvent dans le fichier /etc/sudores. Ici, vous pouvez configurer de nombreux paramètres, en commençant par qui sera autorisé à exécuter des commandes au nom du superutilisateur et en terminant par la limitation de l'ensemble des commandes disponibles.

Pour ouvrir un fichier pour le modifier, tapez la commande suivante en tant que superutilisateur :

Vous pouvez également spécifier l'éditeur de texte dans lequel vous souhaitez éditer le fichier de configuration :

EDITEUR=nano visudo

Nous examinerons ensuite les paramètres les plus intéressants que vous pouvez définir dans ce fichier. Mais d’abord, regardons la syntaxe de base des fichiers. Il se compose de deux types de chaînes, ce sont des alias qui permettent de créer des listes d'utilisateurs et des drapeaux, ainsi que les règles elles-mêmes, qui précisent comment la commande sudo se comportera. La syntaxe de l'alias ressemble à ceci :

tapez nom_alias = élément1, élément2, élément3

Le type spécifie quel type d'Alice doit être créé, le nom est le nom qui sera utilisé et la liste des éléments spécifie les éléments qui seront implicites en faisant référence à ce nom.

La description des autorisations utilisateur a une syntaxe légèrement différente :

hôte utilisateur = (autre_utilisateur : groupe)équipes

L'utilisateur précise l'utilisateur ou le groupe pour lequel nous créons la règle, l'hôte est l'ordinateur pour lequel cette règle s'appliquera. Un autre utilisateur - sous le couvert de quel utilisateur le premier peut exécuter des commandes et le dernier peut exécuter des commandes autorisées. Un alias peut être utilisé à la place de n'importe lequel des paramètres. Et maintenant, configuration de sudo dans Debian et d'autres distributions.

Paramètres de base

L'alias Defaults vous permet de définir les paramètres standard pour le fonctionnement de l'utilitaire, que nous examinerons dans cette section. Un tel alias commence par le mot Defaults, suivi du nom du drapeau. S'il y a un symbole ! devant le nom, cela signifie que le drapeau doit être activé, sinon désactivez-le :

Désactivez l'introduction la première fois que vous l'utilisez :

Valeurs par défaut ! Conférence

Le superutilisateur ne peut pas faire sudo :

Valeurs par défaut !root_sudo

Maintenant, si vous essayez d'exécuter sudo sudo, rien ne fonctionnera :

Modifiez le répertoire personnel de l'utilisateur cible, en laissant le dossier de l'utilisateur actuel comme répertoire personnel par défaut :

Valeurs par défaut set_home

Enregistrez la liste des groupes de l'utilisateur actuel :

Valeurs par défaut !preserve_groups

Demander le mot de passe superutilisateur au lieu du mot de passe utilisateur :

Définissez le nombre de tentatives de mot de passe avant la fermeture de sudo, la valeur par défaut est 3 :

Valeurs par défaut passwd_tries=5

Le nombre de minutes qui s'écouleront avant que sudo ne demande à nouveau un mot de passe est de 5 par défaut. Si vous définissez la valeur sur 0, il vous demandera toujours un mot de passe, quelle que soit la durée d'utilisation de l'utilitaire :

Valeurs par défaut timestamp_timeout=10

Le paramètre suivant spécifie le nombre de minutes pendant lesquelles sudo attendra qu'un mot de passe soit retapé s'il est mal saisi :

Valeurs par défaut passwd_timeout=10

Vous pouvez modifier le message qui s'affiche lorsque vous êtes invité à saisir un mot de passe :

Passprompt par défaut="Votre mot de passe :"

Vous pouvez spécifier un autre utilisateur, non root, à partir duquel toutes les commandes seront exécutées, pour cet usage :

Valeurs par défaut runas_default="user"

Vous pouvez enregistrer toutes les tentatives de connexion à sudo :

Fichier journal par défaut =/var/log/sudo

Ensuite, nous essayons de vérifier le fonctionnement du journal :

sudo chat /var/log/sudo

Ce sont tous les paramètres sudo les plus intéressants dont vous pourriez avoir besoin. Nous verrons ensuite comment définir les droits d'accès sudo pour les utilisateurs.

Configuration des utilisateurs sudo

Nous avons déjà évoqué ci-dessus la syntaxe de mise en place des actions pour les utilisateurs ; ici tout est plus compliqué qu'avec les alias, mais vous pouvez le comprendre. Par exemple, permettons à n'importe quel utilisateur d'utiliser sudo, depuis n'importe quel hôte, et d'exécuter n'importe quelle commande :

TOUS TOUT = (TOUS) TOUS

Une telle équipe est très dangereuse ; elle permet à tout le monde et à tout. Le premier ALL est d'autoriser tous les utilisateurs, le deuxième ALL est pour tous les hôtes, le troisième ALL est d'autoriser la connexion en tant qu'utilisateur et le quatrième est d'autoriser l'exécution de n'importe quelle commande. Mais une autre construction est beaucoup plus souvent utilisée :

%roue TOUT = (TOUS) TOUT

Cela signifie la même chose que le précédent, sauf qu'ici nous n'autorisons pas tous les utilisateurs à utiliser sudo, mais uniquement ceux qui sont membres du groupe wheel.

%wheel ALL = (racine) ALL

Ici, nous avons déjà limité le choix possible des utilisateurs au seul utilisateur root. Vous pouvez également préciser le groupe d'utilisateurs au nom duquel il peut exécuter des commandes :

%wheel ALL = (root:admins) TOUS

Cela signifie que vous pouvez exécuter la commande en tant que root ou en tant qu'utilisateur du groupe admins. Nous pouvons également spécifier des commandes que l'utilisateur peut exécuter. Par exemple:

%wheel ALL = (racine) /bin/mount, /bin/umount

L'utilisateur ne peut exécuter les commandes mount et umount qu'en tant que superutilisateur. Rendons maintenant les choses encore plus intéressantes, l'utilisateur peut exécuter mount et umount sans mot de passe, et toutes les autres commandes avec un mot de passe :

%wheel ALL = (racine) ALL
%wheel ALL = (racine) NOPASSWD : /bin/mount, /bin/umount

Vous pouvez également restreindre les utilisateurs par hôte, par exemple, nous autorisons l'utilisation de sudo uniquement à partir de l'hôte 1 :

%wheel host1 = (racine) TOUS

Reste à réfléchir à la manière d'utiliser les alias. Les alias peuvent être des types suivants :

  • Alias_utilisateur- alias des utilisateurs qui utiliseront sudo ;
  • Runas_Alias- alias des utilisateurs pour le compte desquels les commandes seront exécutées ;
  • Alias_hôte- pseudonyme de l'hôte ;
  • Cmnd_Alias- alias de commande ;

Par exemple, créons quatre alias et utilisons-les dans notre règle :

User_Alias ​​​​Utilisateurs = user1,user2,user3
Runas_Alias ​​​​Admins = root,admin
Host_Alias ​​​​Hôtes = hôte1,hôte2
Cmd_Alias ​​​​Cmds = /bin/mount,/bin/umount

Utilisateurs hôtes = (administrateurs) Cmds

Cela signifie que les utilisateurs de la liste Utilisateurs pourront exécuter des commandes Cmds au nom des utilisateurs Amdins sur les hôtes Hosts.

Il reste encore quelques mots à dire sur les drapeaux. L'indicateur NOPASSWD vous indique de ne pas demander de mot de passe lors de l'exécution de cette règle. Par exemple, pour permettre à tous les utilisateurs d'exécuter la commande mount avec sudo sans mot de passe :

ALL ALL = (racine) NOPASSWD : /bin/mount

Vous pouvez également empêcher l'exécution de cette commande particulière en utilisant l'indicateur NOEXEC :

TOUS TOUS = (racine) NOEXEC /bin/mount

Vous pouvez vérifier si le fichier /etc/sudores a été correctement configuré et voir toutes les règles créées à l'aide de la commande :

Tous les indicateurs et paramètres installés sont affichés ici, ainsi que les autorisations de cet utilisateur.

Conclusions

Dans cet article, nous avons vu comment configurer sudo sous Linux. Comme vous pouvez le constater, malgré le fait qu'il s'agisse d'un utilitaire très simple, il cache de nombreux paramètres utiles que vous pouvez utiliser sur votre système. Si vous avez des questions, posez-les dans les commentaires !

Si vous utilisez périodiquement la commande sudo, je suis sûr que vous avez remarqué une particularité dans son fonctionnement : après avoir saisi avec succès votre mot de passe, vous pouvez utiliser sudo plusieurs fois sans saisir de mot de passe du tout. Mais après un certain temps, la commande sudo recommence à demander un mot de passe.

Ce comportement n'a rien à voir avec le nombre de commandes exécutées via sudo, mais avec le temps. Oui, par défaut, sudo ne vous demandera pas de mot de passe pendant 15 minutes après sa vérification réussie. Après ces 15 minutes, sudo vous demandera de saisir à nouveau votre mot de passe.

Cependant, vous pouvez modifier le comportement décrit si vous le souhaitez. Pour cela, ouvrez le fichier de configuration /etc/sudoers à l'aide de la commande suivante :

Sudo visudo

Après cela, vous devez vous rendre à la ligne

Valeurs par défaut env_reset

et ajoutez la variable suivante avec la nouvelle valeur (en gras) à la fin de cette ligne :

Valeurs par défaut env_reset ,timestamp_timeout=[nouvelle valeur]

Le champ "[nouvelle valeur]" doit être remplacé par le nombre de minutes pendant lesquelles votre session sudo doit exister. Par exemple, j'ai utilisé la valeur 40.

Si vous souhaitez qu'on vous demande un mot de passe à chaque fois que vous utilisez la commande sudo, vous pouvez définir cette variable sur 0. Et si vous avez besoin que la session sudo dure éternellement, vous pouvez définir cette variable sur -1.

Attention, l'utilisation d'une valeur de -1 pour la variable en question est fortement déconseillée.

mot de passe sudo

Comme vous l'avez peut-être remarqué, aucun symbole n'est affiché lors du processus de saisie du mot de passe, pas même les astérisques habituels. Bien que ce ne soit pas un gros problème, certains utilisateurs souhaitent voir au moins des étoiles pour diverses raisons.

Heureusement, le mode mot de passe correspondant est assez simple à activer. Il vous suffit de modifier la ligne suivante dans votre fichier /etc/sudoers :

Valeurs par défaut env_reset

par ligne

Valeurs par défaut env_reset,pwfeedback

Désormais, des astérisques seront affichés lors de la saisie de votre mot de passe lors de l'utilisation de l'utilitaire sudo.

Quelques options de commande sudo importantes

Outre l'option -u (dont nous avons parlé au début de cet article), il existe plusieurs autres options de commande sudo importantes qui méritent d'être mentionnées. Nous en discuterons quelques-uns dans cette section.

Option -k

Disons que vous venez d'exécuter une commande en utilisant sudo et que vous avez entré votre mot de passe. Comme vous le savez, par défaut, sudo ne demandera pas de mot de passe pendant les 15 prochaines minutes. Supposons maintenant que vous deviez donner à quelqu'un l'accès à votre terminal sans pouvoir utiliser sudo. Que peut-on faire dans ce cas ?

Heureusement, il existe une option -k qui vous permet de forcer la fermeture de votre session sudo. Voici ce qui est écrit à propos de ce paramètre sur la page de manuel sudo :

-k, --reset-horodatage

Lorsqu'il est utilisé sans commande, vous permet de réinitialiser les paramètres utilisateur mis en cache. En d’autres termes, la prochaine fois que vous appellerez sudo, un mot de passe vous sera demandé. Cette option ne nécessite pas de mot de passe et a été ajoutée spécifiquement pour permettre aux utilisateurs de supprimer les informations d'autorisation sudo du fichier .logout.

Lorsqu'elle est utilisée conjointement avec une commande ou une option nécessitant un mot de passe, vous pouvez être invité à saisir un mot de passe car cette option entraînera l'ignorance des informations d'autorisation sudo mises en cache. Par conséquent, sudo vous demandera à nouveau un mot de passe (si la politique de sécurité l'exige) et ne mettra pas à jour les informations d'autorisation mises en cache.

option -s

Il peut arriver que pendant que vous travaillez, vous deviez exécuter de nombreuses commandes nécessitant les privilèges root et que vous ne souhaitiez pas taper le préfixe sudo devant chacune d'elles. De plus, vous ne souhaiterez pas configurer la durée de la session sudo en éditant le fichier de configuration /etc/sudoers.

Dans ce cas, l’option -s peut s’avérer utile. Voici la description de cette option dans la page de manuel sudo :

-s, --shell

Lancez un shell de commande dont le chemin binaire est spécifié par la variable d'environnement SHELL, si elle existe, ou un shell de commande dont le chemin binaire est spécifié dans les paramètres du compte de l'utilisateur appelant. Si une commande est utilisée, elle sera transmise à ce shell pour une exécution ultérieure à l'aide de l'option standard -c. Si aucune commande n'est donnée, l'utilisateur aura accès au shell de commande interactif en cours d'exécution.

Ainsi, ce paramètre fait ce qui suit :

  1. Lance un nouveau shell de commande dont le chemin d'accès au fichier binaire est spécifié à l'aide de la variable d'environnement $SHELL. Si la variable d'environnement $SHELL est vide, le shell de commande est lancé dont le chemin d'accès au fichier binaire est précisé dans la ligne décrivant les paramètres du compte utilisateur actuel dans le fichier /etc/passwd.
  2. Si vous transmettez la commande avec l'option -s (par exemple, en exécutant sudo -s whoami), la commande suivante est exécutée : sudo /bin/bash -c whoami .
  3. Si vous n'essayez d'exécuter aucune de vos commandes (c'est-à-dire que vous exécutez simplement sudo -s), vous avez accès à un shell de commande interactif avec les privilèges root.

Notez que l'option -s vous donne un shell de commande avec les privilèges root, mais sans l'environnement root - ce shell utilisera votre fichier .bashrc. Essentiellement, cela signifie que, par exemple, lorsque vous exécutez la commande whoami à l'aide de ce shell, elle imprimera votre nom d'utilisateur plutôt que root.

Option -je

L'option -i est similaire à l'option -s dont nous venons de parler. Il existe cependant certaines différences entre eux. L'une des principales différences est que l'option -i vous donne également l'environnement de l'utilisateur root, de sorte que votre fichier .bashrc (de l'utilisateur) est ignoré. Ceci est comparable à l’utilisation du compte utilisateur root sans se connecter en tant que root. De plus, vous n'aurez pas besoin de saisir votre mot de passe root.

Remarque importante : N'oubliez pas qu'il existe également une commande su qui vous permet de l'exécuter en tant qu'autres utilisateurs (par défaut, vous devenez root). Cette commande nécessite le mot de passe de l'utilisateur root. Pour éviter d'avoir à saisir le mot de passe de cet utilisateur, vous pouvez également utiliser le préfixe sudo (c'est-à-dire la commande sudo su) ; dans ce cas, vous devrez saisir votre mot de passe. Cependant, les commandes su et sudo su présentent quelques différences ; afin de les comprendre, ainsi que de vous familiariser avec la comparaison de ces commandes avec la commande sudo -i, il suffit de vous référer à la discussion disponible sur ce lien.

Conclusion

J'espère que vous avez au moins une compréhension de base du fonctionnement de la commande sudo, ainsi que de la manière de modifier son comportement par défaut. Essayez vous-même les modifications apportées à /etc/sudoers et consultez la discussion (liée dans le paragraphe précédent) si vous souhaitez en savoir un peu plus sur cette commande.

La séparation des droits d'accès est l'un des paradigmes de sécurité les plus importants mis en œuvre dans les systèmes d'exploitation Linux et de type Unix. Les utilisateurs réguliers travaillent avec des droits limités ; Cela réduit leur impact sur leur propre environnement et sur le système d’exploitation dans son ensemble.

L'utilisateur root dispose des privilèges de superutilisateur. Ce compte administrateur n'a pas les restrictions présentes sur les comptes d'utilisateurs réguliers. D'autres utilisateurs peuvent être en mesure d'exécuter des commandes en tant que root dans un certain nombre de cas spécifiques.

Ce guide vous montre comment transférer correctement et en toute sécurité les privilèges root sur votre système.

Note Remarque : ce didacticiel a été réalisé sur un serveur Ubuntu 12.04, mais la plupart des distributions Linux modernes se comporteront de la même manière.

Pour terminer le didacticiel, vous devez d'abord terminer la configuration initiale du serveur :

Connectez-vous au serveur en tant qu'utilisateur non root.

Comment obtenir les droits root

Il existe trois manières principales d'obtenir les privilèges de superutilisateur, dont la difficulté varie.

Connectez-vous en tant que root

Le moyen le plus simple est bien sûr de vous connecter en tant que root.

Si vous vous connectez via SSH, fournissez l'adresse IP ou le nom d'hôte :

ssh racine@adresse_IP_ou_domaine

Lorsque vous y êtes invité, entrez votre mot de passe root.

commande su

Il n'est pas recommandé d'utiliser constamment le compte root, car, disposant de droits d'accès absolus, vous pouvez accidentellement causer des dommages irréparables au système.

Par conséquent, le système dispose de la commande su, qui permet à un utilisateur ordinaire d'obtenir les droits root à tout moment.

Note: La commande su est l'abréviation de utilisateur remplaçant.

Donc pour rooter il suffit de taper :

Le système demandera le mot de passe de l'utilisateur root, après quoi il ouvrira l'accès à la session shell de l'utilisateur root.

Après avoir terminé toutes les tâches nécessitant les droits root, vous pouvez revenir à la session précédente :

commande sudo

La dernière façon d'obtenir les privilèges root consiste à utiliser la commande sudo.

La commande sudo permet d'exécuter des commandes spécifiques en tant que root sans avoir à ouvrir une nouvelle session.

sudo command_to_execute

Note: Contrairement à su, la commande sudo ne demande pas le mot de passe root, mais plutôt le mot de passe de l'utilisateur appelant la commande.

Pour des raisons de sécurité, la commande sudo n'est pas disponible par défaut ; son accès doit être configuré. Si vous avez suivi le guide de configuration initiale du serveur, vous savez déjà comment procéder.

Qu’est-ce que Visudo ?

La commande sudo est configurée à l'aide du fichier /etc/sudoers.

Important! Ne modifiez jamais ce fichier à l’aide d’un éditeur de texte classique ! Pour ce faire, vous devez utiliser Visudo.

Une syntaxe incorrecte ajoutée à ce fichier peut complètement rompre la répartition des droits entre les utilisateurs. Par conséquent, la commande visudo est utilisée pour travailler avec ce fichier.

La commande visudo ouvre un fichier dans un éditeur de texte classique, mais vérifie sa syntaxe lors de l'enregistrement du fichier. Cela évite les erreurs de configuration.

Généralement, visudo ouvre le fichier /etc/sudoers dans l'éditeur vi. Sur un système Ubuntu, visudo utilise nano.

Pour configurer la commande visudo pour utiliser vi sur un système Ubuntu, exécutez la commande :

sudo update-alternatives --config éditeur

Il existe 3 choix pour l'éditeur alternatif (fournissant /usr/bin/editor).
Statut de priorité du chemin de sélection
————————————————————
* 0 /bin/nano 40 mode automatique
1 /bin/nano 40 mode manuel
2 /usr/bin/vim.basic 30 mode manuel
3 /usr/bin/vim.tiny 10 mode manuel

Sélectionnez le numéro correspondant à l'éditeur de texte que vous souhaitez utiliser.

Sur CentOS, cette valeur peut être modifiée en ajoutant la ligne suivante à ~/.bashrc :

export EDITOR=/chemin/vers/éditeur

Pour mettre à jour vos paramètres, saisissez :

Pour ouvrir /etc/sudoers, saisissez :

Modification du fichier sudoers

Ainsi, dans l'éditeur de texte de votre choix, le fichier sudoers s'ouvrira à l'écran.

Vous trouverez ci-dessous les paramètres du fichier système Ubuntu 12.04 (les lignes commentées sont omises et les modifications apportées lors de la configuration initiale du serveur sont enregistrées).

Note: Le fichier CentOS sudoers est beaucoup plus volumineux ; Certains de ses paramètres ne sont pas décrits dans ce manuel.

Valeurs par défaut env_reset
Valeurs par défaut secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
racine ALL=(TOUS:TOUS) TOUS
démo ALL=(ALL:ALL) ALL
%admin TOUS=(TOUS) TOUS
%sudo ALL=(TOUS:TOUS) TOUS

Paramètres standards

La première ligne, Defaults env_reset, réinitialise l'environnement du terminal pour supprimer toutes les variables utilisateur. Cette mesure de sécurité est utilisée pour éliminer les effets potentiellement nuisibles des variables d'environnement de la session sudo.

Le deuxième paramètre, Defaults secure_path=..., spécifie le chemin (PATH, points dans le système de fichiers où le système d'exploitation recherchera les applications) pour les opérations sudo. Cela empêche l’utilisation de chemins utilisateur potentiellement dangereux.

Paramètres des droits des utilisateurs

Les troisième et quatrième paramètres devraient vous être familiers. Vous avez ajouté vous-même la quatrième ligne, mais peut-être ne l’avez-vous pas examinée en détail.

  • démo ALL=(ALL:ALL) ALL
  • Le premier champ précise le nom de l'utilisateur à qui cette règle doit être appliquée (dans ce cas il s'agit d'une démo).
  • Le premier ALL signifie que la règle s'appliquera à tous les hôtes.
  • Le deuxième ALL signifie que l'utilisateur spécifié peut exécuter des commandes dans n'importe quelle session utilisateur.
  • Le troisième ALL signifie que l'utilisateur spécifié peut exécuter des commandes dans n'importe quel groupe.
  • Le dernier ALL indique que ces règles doivent être appliquées à toutes les commandes.

Cela signifie que les utilisateurs root et démo peuvent exécuter toutes les commandes en utilisant sudo avec leur mot de passe.

Paramètres de privilèges de groupe

Les deux dernières lignes sont similaires aux paramètres de privilèges utilisateur, mais elles sont responsables des droits de groupe.

Les noms de groupes commencent par le symbole %.

Comme vous pouvez le voir, le groupe d'administrateurs peut exécuter n'importe quelle commande en tant qu'utilisateur ou hôte. Le groupe sudo a des droits similaires, mais il peut également exécuter la commande comme n'importe quel groupe.

Règles personnalisées

Une fois que vous êtes familiarisé avec la syntaxe de base des fichiers, essayez de créer vous-même quelques règles.

Création d'alias

Le fichier sudoers peut être structuré plus facilement en utilisant divers alias.

Par exemple, vous pouvez créer trois groupes d'utilisateurs différents avec des droits combinés :

User_Alias ​​​​GROUPONE = abby, brent, carl
User_Alias ​​​​GROUPTWO = brent, doris, eric,
User_Alias ​​​​GROUPTHREE = doris, felicia, subvention

Les noms de groupes doivent commencer par une lettre majuscule. Après cela, vous pouvez donner aux utilisateurs GROUPTWO le droit de modifier la base de données apt-get :

GROUPTWO ALL = /usr/bin/apt-get update

Si la règle ne spécifie pas d'utilisateur ni de groupe, sudo est par défaut root.

Vous pouvez ensuite autoriser les utilisateurs de GROUPTHREE à arrêter et redémarrer la machine ; Pour ce faire, vous devez créer un alias de commande :

Cmnd_Alias ​​​​POWER = /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart
GROUPE TROIS TOUS = PUISSANCE

L'alias de commande POWER contient des commandes permettant d'arrêter et de redémarrer la machine.

Vous pouvez également créer un alias, Exécuter en tant que, qui remplace la partie de la règle qui spécifie l'utilisateur dans la session duquel la commande doit être exécutée.

Runas_Alias ​​​​WEB = www-data, apache
GROUPONE TOUS = (WEB) TOUS

Désormais, tout utilisateur du groupe GROUPONE peut exécuter des commandes dans les sessions utilisateur www-data ou apache.

Note Remarque : N'oubliez pas que les règles créées précédemment sont prioritaires en cas de conflit de règles.

Règles de blocage

Il existe plusieurs façons de contrôler le comportement de sudo et sa réponse aux appels.

Par exemple, la commande updateb en combinaison avec le package mlocate est relativement inoffensive. Pour qu'un utilisateur ordinaire puisse l'exécuter avec les privilèges de superutilisateur sans saisir de mot de passe, vous pouvez créer la règle suivante :

GROUPONE TOUS = NOPASSWD : /usr/bin/updatedb

La commande NOPASSWD signifie que le système ne demandera pas de mot de passe. Il existe également une commande PASSWD qui effectue le comportement inverse et est utilisée par défaut.

NOPASSWD s'applique à l'intégralité de la règle, sauf si la commande PASSWD la remplace. Par exemple, la ligne pourrait ressembler à ceci :

GROUPTWO ALL = NOPASSWD : /usr/bin/updatedb, PASSWD : /bin/kill

Une autre commande pratique est NOEXEC, utilisée pour empêcher le comportement dangereux de certains programmes. Par exemple, certaines commandes, comme less, peuvent appeler d'autres commandes :

Cette commande exécute n'importe quelle commande avec les privilèges de l'utilisateur en cours d'exécution, ce qui peut être très dangereux.

Pour éviter ce comportement, vous pouvez utiliser la ligne suivante :

nom d'utilisateur ALL = NOEXEC : /usr/bin/less

Plus d'informations

Cette section contient divers conseils utiles pour travailler avec sudo.

Si vous avez spécifié un utilisateur ou un groupe dans le paramètre Exécuter en tant que, vous pouvez exécuter des commandes dans la session de cet utilisateur en utilisant respectivement les indicateurs -u et –g :

Commande sudo -u run_as_user
Commande sudo -g run_as_group

Par défaut, sudo stocke les informations d'identification dans un terminal pendant un certain temps. Cela signifie que vous n’aurez pas à saisir à nouveau votre mot de passe pendant cette période.

Si pour des raisons de sécurité vous souhaitez réinitialiser ce timer, utilisez la commande :

Pour connaître les droits de l'utilisateur, saisissez :

Cette commande listera toutes les autorisations spécifiées dans le fichier /etc/sudoers pour un utilisateur donné.

Si un utilisateur normal essaie d'exécuter une commande d'administrateur sans le préfixe sudo, la commande ne fonctionnera pas. Pour éviter d'avoir à retaper la commande, utilisez une fonction bash qui répète la commande :

Un double point d'exclamation répétera la dernière commande.

Conclusion

Vous disposez désormais de compétences de base avec le fichier sudoers et les autorisations root.

Lorsque vous travaillez avec des droits de superutilisateur, n'oubliez pas que les utilisateurs réguliers ne disposent pas de tels droits par défaut pour des raisons de sécurité. N'abusez pas des droits root, sinon vous pourriez accidentellement causer des dommages irréparables au système.

Balises: ,

Parfois, pour résoudre un problème, vous devez ouvrir un terminal et exécuter des commandes en tant que superutilisateur (sudo ou su), également appelé ROOT. Bien que certains d’entre eux puissent être réalisés à l’aide d’une interface graphique.

Vous pouvez découvrir pourquoi Root est nécessaire et utilisé dans les systèmes Unix, et nous discuterons plus en détail de la façon dont sudo ou su sont utilisés dans les systèmes Linux.

Supposons que nous devions effectuer une tâche non standard pour laquelle les outils graphiques ne nous aideront pas. De plus, la ligne de commande est un outil très flexible ; ici, vous pouvez voir le résultat des commandes et comprendre ce qui ne va pas. Et surtout, les commandes du terminal sont standard pour toutes les distributions Linux.

Il existe donc deux manières principales d'obtenir les droits de superutilisateur (Root) - sudo ou su

La commande sudo est utilisée dans les systèmes de type Debian ou dans le plus populaire Ubuntu, "su" est utilisé dans presque toutes les autres distributions Linux.

La saisie de sudo dans le système d'exploitation Ubuntu nécessite la saisie du mot de passe Root puis, après une saisie réussie, donne les droits de superutilisateur pour la durée de l'exécution d'une seule commande. Avant toutes les commandes ultérieures nécessitant les droits Root sur les systèmes de type Debian, vous devez saisir à nouveau « sudo ». Et dans d'autres distributions Linux, où la commande "su" est utilisée, elle donne un accès root complet, après avoir saisi le mot de passe, jusqu'à ce que vous saisissiez "logout" ou fermiez le terminal.

Sur les systèmes de type Debian (Ubuntu), il existe une astuce qui peut accorder un accès root complet jusqu'à ce que vous fermiez le terminal. Ceci est nécessaire si vous exécutez de nombreuses commandes en tant que Root, et vous n'aurez pas à saisir « sudo » avant chaque commande. Pour ce faire, commandez :

Par exemple, nous devons rechercher tous les utilisateurs existants dans le système, voir leurs répertoires et attribuer les droits du répertoire souhaité d'un utilisateur à un autre. Pour ce faire, si j'utilisais Ubuntu, la commande dans le terminal serait :

Sudo du -sch /home/*

Ceci serait suivi du mot de passe Root :

16K /home/lost+found 27G /home/pavel 34G /home/pavelubuntu 50G /home/pavelzen 110G total

Je sais que je suis l'utilisateur du répertoire /home/pavelzen, mais je dois également devenir propriétaire du répertoire /home/pavelubuntu. Pour ce faire, je dois à nouveau saisir « sudo » avant la commande.

Et pour les autres systèmes : je commanderais d’abord

mot de passe et ensuite

Du-sch /home/*

Chown -R pavelzen : /home/pavelubuntu

C'est ainsi que les terminaux et les superutilisateurs apparaissent sur les systèmes Linux.