Fatmawati Achmad Zaenuri / Shutterstock
le sudo
La commande vous permet d’exécuter des commandes sous Linux comme si vous étiez quelqu’un d’autre, comme root
. sudo
vous permet également de contrôler qui peut accéder root's
capacités, avec granularité. Donnez aux utilisateurs un accès complet ou laissez-les utiliser un petit sous-ensemble de commandes. Nous vous montrons comment.
sudo et autorisations racine
Nous avons tous entendu (la simplification excessive) que tout dans Linux est un fichier. En vérité, pratiquement tout dans le système d’exploitation, depuis les processus, les fichiers, les répertoires, les sockets et les tuyaux, communique avec le noyau via un descripteur de fichier. Ainsi, même si tout est un fichier, la plupart des objets du système d’exploitation sont gérés, ils l’étaient. Dans la mesure du possible, la conception des systèmes d’exploitation de type Linux et Unix adhère à ce principe.
Le concept de «tout est un fichier» a une grande portée sous Linux. Il est alors facile de voir comment les autorisations de fichiers sous Linux sont devenues l’un des piliers des privilèges et droits des utilisateurs. Si vous possédez un fichier ou un répertoire (un type de fichier spécial), vous pouvez en faire ce que vous voulez, notamment le modifier, le renommer, le déplacer et le supprimer. Vous pouvez également définir les autorisations sur le fichier afin que d’autres utilisateurs ou groupes d’utilisateurs puissent lire, modifier ou exécuter le fichier. Tout le monde est régi par ces autorisations.
Tous ceux qui, à l’exception du superutilisateur, sont appelés root
. le root
compte est un compte spécialement privilégié. Il n’est lié par les autorisations sur aucun des objets du système d’exploitation. L’utilisateur root peut faire n’importe quoi à n’importe quoi et, à peu près, à tout moment.
Bien sûr, toute personne ayant accès à root's
mot de passe peut faire de même. Ils pourraient faire des ravages soit par malveillance, soit accidentellement. En fait, le root
l’utilisateur peut également faire des ravages en faisant une erreur. Personne n’est infaillible. C’est des trucs dangereux.
C’est pourquoi il est désormais recommandé de se connecter en tant que root
du tout. Connectez-vous avec un compte utilisateur régulier et utilisez sudo
à élevez vos privilèges pour la courte durée vous en avez besoin. Souvent, il s’agit simplement d’émettre une seule commande.
La liste des sudoers
sudo
était déjà installé sur les ordinateurs Ubuntu 18.04.3, Manjaro 18.1.0 et Fedora 31 utilisés pour rechercher cet article. Ce n’est pas une surprise. sudo
existe depuis le début des années 80 et est devenu le moyen standard de fonctionnement des super-utilisateurs pour presque toutes les distributions.
Lorsque vous installez une distribution moderne, l’utilisateur que vous créez pendant l’installation est ajouté à une liste d’utilisateurs appelés. Ce sont les utilisateurs qui peuvent utiliser le sudo
commander. Parce que vous avez sudo
pouvoirs, vous pouvez les utiliser pour ajouter d’autres utilisateurs à la liste des sudoers.
Bien sûr, il est imprudent de donner le statut de super-utilisateur complet bon gré mal gré, ou à quiconque n’a qu’un besoin partiel ou spécifique. La liste des sudoers vous permet de spécifier les commandes que les différents utilisateurs sont autorisés à utiliser sudo
avec. De cette façon, vous ne leur donnez pas les clés du royaume, mais ils peuvent toujours accomplir ce dont ils ont besoin.
Exécution d’une commande en tant qu’autre utilisateur
À l’origine, cela s’appelait «super-utilisateur», car vous pouviez faire des choses en tant que super-utilisateur. Sa portée a été élargie maintenant et vous pouvez utiliser sudo
pour exécuter une commande comme si vous étiez n’importe quel utilisateur. Il a été renommé pour refléter cette nouvelle fonctionnalité. Il s’appelle désormais «utilisateur de remplacement».
Utiliser sudo
pour exécuter une commande en tant qu’autre utilisateur, nous devons utiliser le -u
(utilisateur) option. Ici, nous allons exécuter le qui suis je commande en tant qu’utilisateur mary
. Si vous utilisez le sudo
commande sans le -u
option, vous exécuterez la commande comme root
.
Et bien sûr, parce que vous utilisez sudo
vous serez invité à entrer votre mot de passe.
sudo -u mary whoami
La réponse de whoami
nous indique que le compte utilisateur exécutant la commande est mary
.
Vous pouvez utiliser le sudo
commande pour vous connecter en tant qu’un autre utilisateur sans connaître son mot de passe. Vous serez invité à entrer votre propre mot de passe. Nous devons utiliser le -i
(connexion) option.
sudo -i -u mary
pwd
whoami
ls -hl
exit
Vous êtes connecté en tant que mary
. Les fichiers «.bashrc», «.bash_aliases» et «.profile» du compte utilisateur mary sont traités exactement comme si le propriétaire du compte utilisateur mary s’était connecté.
- L’invite de commande change pour refléter ceci est une session pour le compte d’utilisateur
mary
. - le
pwd
commander les reprotes dans lesquels vous êtes maintenantmary's
répertoire personnel. whoami
nous indique que vous utilisez un compte utilisateurmary
.- Les fichiers du répertoire appartiennent au
mary
compte d’utilisateur. - le
exit
la commande vous renvoie à votre session de compte utilisateur normale.
Modification du fichier sudoers
Pour ajouter des utilisateurs à la liste des personnes pouvant utiliser sudo
, vous devez modifier le sudoers
fichier. Il est extrêmement important que vous ne le fassiez jamais qu’en utilisant le visudo
commander. le visudo
La commande empêche plusieurs personnes d’essayer de modifier le fichier sudoers à la fois. Ça aussi vérifie et analyse la syntaxe sur le contenu du fichier lorsque vous les enregistrez.
Si vos modifications ne réussissent pas les tests, le fichier n’est pas enregistré à l’aveugle. Vous obtenez des options. Vous pouvez annuler et abandonner les modifications, revenir en arrière et modifier à nouveau les modifications ou forcer l’enregistrement des modifications incorrectes. La dernière option est une très mauvaise idée. Ne soyez pas tenté de faire ça. Vous pouvez vous retrouver dans une situation où il est accidentellement verrouillé sudo
.
Bien que vous démarriez le processus d’édition à l’aide du visudo
commander, visudo
n’est pas un éditeur. Il appelle l’un de vos éditeurs existants pour effectuer les modifications de fichier. Sur Manjaro et Ubuntu, le visudo
commande lancée l’éditeur simple nano
. Sur Fedora, visudo
lancé le plus capable –mais moins intuitif–vim
.
Si vous préférez utiliser nano
sur Fedora, vous pouvez le faire facilement. Tout d’abord, installez nano
:
sudo dnf installer nano
Et alors visudo
devait être invoqué avec cette commande:
sudo EDITOR=nano visudo
Cela ressemble à un bon candidat pour un alias. le nano
L’éditeur est ouvert avec le fichier sudoers chargé dedans.
Ajout d’utilisateurs au groupe sudo
Utilisation visudo
pour ouvrir le fichier sudoers. Utilisez soit cette commande, soit celle décrite ci-dessus pour spécifier l’éditeur de votre choix:
sudo visudo
Faites défiler le fichier sudoers jusqu’à ce que vous voyiez la définition du %sudo
entrée.
Le signe de pourcentage indique qu’il s’agit d’une définition de groupe et non d’une définition d’utilisateur. Sur certaines distributions, le %sudo
la ligne a un hachage #
au début de la ligne. Cela fait de la ligne un commentaire. Si tel est le cas, supprimez le hachage et enregistrez le fichier.
le %sudo
la ligne se décompose comme ceci:
- % sudo: Le nom du groupe.
- TOUT =: Cette règle s’applique à tous les hôtes de ce réseau.
- (TOUS: TOUS): les membres de ce groupe peuvent exécuter des commandes comme tous les utilisateurs et tous les groupes.
- Tout: les membres de ce groupe peuvent exécuter toutes les commandes.
Pour reformuler légèrement cela, les membres de ce groupe peuvent exécuter n’importe quelle commande, comme n’importe quel utilisateur ou groupe, sur cet ordinateur ou sur tout autre hôte de ce réseau. Donc, un moyen simple de donner à quelqu’un les privilèges root et la possibilité d’utiliser sudo
, consiste à les ajouter au sudo
groupe.
Nous avons deux utilisateurs, Tom et Mary, avec des comptes d’utilisateurs tom
et mary
respectivement. Nous ajouterons un compte utilisateur tom
à la sudo
groupe avec le usermod
commander. le -G
(groups) option spécifie le groupe que nous allons ajouter le tom
rendre des comptes à. le -a
(ajouter) option ce groupe à la liste des groupes le compte utilisateur tom
est déjà dedans. Sans cette option, le compte utilisateur tom
serait placé dans le nouveau groupe mais supprimé de tout autre groupe.
sudo usermod -a -G sudo tom
Vérifions dans quels groupes Mary appartient:
groups
Le compte utilisateur mary
est seulement dans le mary
groupe.
Vérifions avec Tom:
groups
le tom
compte d’utilisateur – et par conséquent, Tom – fait partie des groupes tom
et sudo
.
Essayons d’amener Mary à faire quelque chose qui exige sudo
privilèges.
sudo less /etc/shadow
Mary ne peut pas regarder à l’intérieur du fichier restreint «/ etc / shadow». Elle reçoit un léger reproche pour avoir essayé d’utiliser sudo
sans autorisation. Voyons comment Tom s’en sort:
sudo less /etc/shadow
Dès que Tom entre son mot de passe, on lui montre le fichier / etc / shadow.
Juste en l’ajoutant à la sudo
groupe, il a été élevé au rang d’élite de ceux qui peuvent utiliser sudo
. Complètement illimité.
Donner aux utilisateurs des droits sudo restreints
Tom a été donné plein sudo
droits. Il peut faire tout ce qui root
—Ou n’importe qui d’autre dans le sudo
groupe – peut faire. Cela pourrait lui donner plus de pouvoir que ce que vous êtes heureux de transmettre. Il est parfois nécessaire qu’un utilisateur exécute une fonction qui nécessite root
privilèges, mais il n’y a pas de raison valable pour qu’ils aient sudo
accès. Vous pouvez atteindre cet équilibre en les ajoutant au fichier sudoers et en répertoriant les commandes qu’ils peuvent utiliser.
Rencontrons Harry, propriétaire du compte utilisateur harry
. Il n’est pas dans le sudo
groupe, et il n’a pas sudo
privilèges.
groups
Il est utile pour Harry de pouvoir installer un logiciel, mais nous ne voulons pas qu’il ait plein sudo
droits. OK, pas de problème. allumons visudo
:
sudo visudo
Faites défiler le fichier jusqu’à ce que vous dépassiez les définitions de groupe. Nous allons ajouter une ligne pour Harry. Comme il s’agit d’une définition et non d’une définition de groupe, nous n’avons pas besoin de commencer la ligne par un signe de pourcentage.
L’entrée pour le compte utilisateur harry est:
harry ALL=/usr/bin/apt-get
Notez qu’il y a un onglet entre «harry» et «ALL =».
Cela se lit comme un compte d’utilisateur harry
peut utiliser les commandes répertoriées sur tous les hôtes connectés à ce réseau. Il y a une commande répertoriée, qui est «/ usr / bin / apt-get». Nous pouvons accorder à Harry l’accès à plus d’une commande en les ajoutant à la liste des commandes, séparées par des virgules.
Ajoutez la ligne au fichier sudoers et enregistrez le fichier. Si vous souhaitez vérifier que la ligne est syntaxiquement correcte, nous pouvons demander visudo
pour analyser le fichier et vérifier la syntaxe pour nous, en utilisant le -c
(cocher uniquement) option:
sudo visudo -c
Les contrôles ont lieu et visudo
rapporte que tout va bien. Harry devrait maintenant pouvoir utiliser apt-get
pour installer le logiciel mais doit être refusé s’il essaie d’utiliser toute autre commande nécessitant sudo
.
sudo apt-get install finger
Approprié sudo
les droits ont été accordés à Harry et il est en mesure d’installer le logiciel.
Que se passe-t-il si Harry essaie d’utiliser une commande différente qui nécessite sudo
?
sudo shutdown now
Harry est empêché d’exécuter la commande. Nous lui avons accordé avec succès un accès spécifique et restreint. Il peut utiliser la commande désignée et rien d’autre.
Utilisation des alias d’utilisateurs sudoers
Si nous voulons donner à Mary les mêmes privilèges, nous pourrions ajouter une ligne dans le fichier sudoers pour le compte utilisateur mary
exactement de la même manière que nous l’avons fait avec Harry. Une autre façon, plus soignée, d’obtenir la même chose est d’utiliser un User_Alias
.
dans le fichier sudoers, un User_Alias
contient une liste de noms de compte utilisateur. Le nom du User_Alias
peut ensuite être utilisé dans une définition pour représenter tous ces comptes d’utilisateurs. Si vous souhaitez modifier les privilèges de ces comptes d’utilisateurs, vous n’avez qu’une seule ligne à modifier.
Créons un User_Alias
et utilisez-le dans notre fichier sudoers.
sudo visudo
Scroll down in the file until you come to the User_Alias specification line.
Ajouter le User_Alias
en tappant:
User_Alias INSTALLERS = harry, mary
Chaque élément est séparé par un espace et non par une tabulation. La logique se décompose comme suit:
- User_Alias: Cela raconte
visudo
ça va être unUser_Alias
. - INSTALLATEURS: Il s’agit d’un nom arbitraire pour cet alias.
- = Harry, Mary: La liste des utilisateurs à inclure dans cet alias.
Nous allons maintenant modifier la ligne que nous avons ajoutée précédemment pour le compte utilisateur harry
:
harry ALL=/usr/bin/apt-get
Modifiez-le pour qu’il se lit comme suit:
INSTALLERS ALL=/usr/bin/apt-get
Cela signifie que tous les comptes utilisateurs contenus dans la définition des « INSTALLATEURS » User_Alias
peut exécuter le apt-get
commander. Nous pouvons tester cela avec Mary, qui devrait maintenant pouvoir installer le logiciel.
sudo apt-get install colordiff
Mary peut installer le logiciel car elle est dans la section «INSTALLATEURS» User_Alias
, et cela User_Alias
a obtenu ces droits.
Trois astuces sudo rapides
Lorsque vous oubliez d’ajouter sudo
à une commande, tapez
sudo !!
Et la dernière commande sera répétée avec sudo
ajouté au début de la ligne.
Une fois que vous avez utilisé sudo
et authentifié avec votre mot de passe, vous n’aurez plus à utiliser votre mot de passe avec sudo
commandes pendant 15 minutes. Si vous souhaitez que votre authentification soit immédiatement oubliée, utilisez:
sudo -k
Jamais demandé où tu peux voir échoué sudo
tentatives de commande? Ils vont dans le fichier «/var/log/auth.log». Vous pouvez le visualiser avec:
less /var/log/auth.log
Nous pouvons voir l’entrée du compte utilisateur Mary qui était connectée à TTY pts / 1 lorsqu’elle a essayé d’exécuter le shutdown
commande en tant qu’utilisateur «root».
Avec une grande puissance…
… Vient la capacité d’en déléguer une partie à d’autres. Vous savez maintenant comment responsabiliser les autres utilisateurs de manière sélective.