07.06.2023

Debian droits de superutilisateur (sudo, visudo)

Informations générales.

Linux les systèmes d'exploitation implémentent le principe de différenciation des privilèges utilisateur, ce qui signifie que différents comptes ont des quantités différentes de droits d'accès aux répertoires, fichiers et programs. Les droits maximum sont accordés au compte racine intégré. Les comptes d'utilisateurs nouvellement créés sont généralement considérablement limités dans l'accès aux fichiers de configuration du système, la gestion des services et l'installation et la suppression de packages logiciels. Cependant, travailler dans le système d'exploitation sous le compte root est fortement déconseillé, principalement pour des raisons de sécurité. Dans ce cas, le sudo L'utilitaire de ligne de commande vient à la rescousse.

La commande sudo permet d'exécuter des commandes individuelles avec des privilèges accrus (par défaut, avec des droits root) à l'aide d'un compte non privilégié. Voyons ce qui est requis pour que cet utilitaire fonctionne.

Installation et configuration

In Ubuntu OS, sudo est activé par défaut, et dans Debian, si le package correspondant n'a pas été sélectionné lors du processus d'installation, l'image suivante sera très probablement :

racine@debian10 : ~ sudo
-bash: sudo: commande introuvable

Vous devez donc installer le package manquant. Mettez à jour les informations du référentiel et installez sudo :

apt-get update
apt-get installer sudo

Nous attendons la fin du processus :

Capture d'écran №1. Debian droits de superutilisateur

Après une installation réussie, vous devrez configurer sudo pour déterminer quels utilisateurs ou groupes pourront utiliser l'élévation de privilèges et dans quelle mesure. Tous ces paramètres sont stockés dans le fichier de configuration / etc / sudoers, cependant, il est fortement déconseillé d'y apporter directement des modifications. À ces fins, une commande spéciale est utilisée :

visa

qui lance un éditeur de texte avec un fichier de configuration :

Capture d'écran №2. Éditeur de texte avec un fichier de configuration

Deux lignes sont chargées d'octroyer les droits :

racine TOUT=(TOUT:TOUT) TOUT
%sudo ALL=(ALL:ALL) ALL

La première ligne définit les droits du compte root, la seconde définit les droits des membres du groupe sudo qui a été créé lors de l'installation du paquet (le % signe devant le nom signifie que le nom appartient à un groupe d'utilisateurs).

En conséquence, nous avons deux façons principales d'accorder au compte d'utilisateur le droit d'utiliser sudo:

Ajoutez un compte utilisateur (par exemple user) au groupe sudo sur le serveur :

usermod –a –G utilisateur sudo

Après avoir modifié l'appartenance au groupe, vous devrez vous reconnecter à ce compte pour appliquer la nouvelle configuration. Cette méthode est recommandée dans les cas où l'utilisateur doit disposer de tous les droits.

Créez une nouvelle entrée dans le fichier, par exemple, pour le compte d'utilisateur. Nous ajoutons une ligne similaire à root :

utilisateur ALL=(ALL:ALL) ALL

L'ajout d'une nouvelle entrée est recommandé dans les cas où la liste des privilèges sera ajustée (plus à ce sujet plus tard). Si nous avons apporté des modifications au fichier, nous devons les enregistrer en appuyant sur le raccourci clavier Ctrl-O et quitter l'éditeur - Ctrl-X.

Vous pouvez maintenant vérifier le bon fonctionnement :

utilisateur@debian10:~$ chat sudo /etc/sudoers
[sudo] mot de passe pour l'utilisateur :

La commande sudo demande le mot de passe de l'utilisateur actuel (dans ce cas, l'utilisateur) - entrez-le, et si tout est fait correctement, nous verrons le contenu du fichier de configuration système.

Réglage fin

Ainsi, un utilisateur ordinaire peut exécuter des commandes avec les droits du compte root sans connaître son mot de passe. C'est très pratique, mais cela peut être dangereux - est-il possible de limiter la gamme de commandes pouvant être exécutées à l'aide de sudo ? Oui, et le même fichier de configuration nous y aidera. On recommence visudo et on comprend plus loin. Nous sommes intéressés par le parameters spécifiés après le nom d'utilisateur :

Capture d'écran №3. Pennsylvanierameters spécifiés après le nom d'utilisateur

Nous allons les analyser plus en détail :

  • TOUTES= (ALL : ALL) ALL - le premier parameter détermine à quel hôte la configuration est appliquée. Lors de l'utilisation d'un serveur dédié, le parameter peut rester inchangé ;
  • TOUS=(TOUS : TOUS)TOUS - le paramLes paramètres entre parenthèses déterminent l'autorité de quel utilisateur (première parameter) et/ ou groupe (deuxième parameter) la commande sera exécutée. Par défaut, sudo exécute la commande en tant que root, mais lors du démarrage avec le commutateur –u, vous pouvez spécifier un compte différent, et avec le commutateur –g, vous pouvez spécifier un autre groupe dont les privilèges seront utilisés au démarrage ;
  • TOUT=(TOUT : TOUT)TOUTES- le troisième parameter détermine à quels fichiers et commandes appartiennent ces paramètres.

Sur la base de ce qui précède, si nécessaire, déterminez la liste des commandes autorisées, remplacez le dernier paraméther TOUTES avec ce dont nous avons besoin, en listant les commandes séparées par des virgules. Par exemple, la ligne :

utilisateur ALL=(ALL:ALL) /sbin/shutdown –r, /bin/cat

donne à l'utilisateur le droit d'utiliser sudo pour redémarrer le serveur avec sudo /sbin/shutdown –r et afficher les fichiers avec sudo /bin/cat. Les autres commandes via sudo ne seront pas exécutées. Par exemple, lorsque vous essayez d'arrêter le serveur avec la commande sudo /sbin/shutdown –h, nous obtenons la réponse :

Désolé, l'utilisateur user n'est pas autorisé à exécuter '/sbin/shutdown -h' en tant que root sur debian10.

Information

Vous pouvez voir la liste des privilèges en exécutant sudo –l (la liste de l'utilisateur actuel s'affichera) ou sudo –l –U user (la liste des privilèges de l'utilisateur s'affichera) :

Capture d'écran №4. La liste des privilèges des utilisateurs

La composition de sudo inclut la commande sudoedit, qui lance immédiatement un éditeur de texte avec le fichier spécifié avec des privilèges élevés, c'est-à-dire au lieu de la commande :

sudo nano / etc / network / interfaces

peut courir:

sudoedit /etc/network/interfaces

Si vous devez travailler en mode privilège élevé pendant une longue période et qu'il n'est pas pratique d'entrer sudo pour chaque commande, vous pouvez exécuter une instance de l'interpréteur de commandes via sudo :

coup de sudo

et continuez à y travailler - toutes les équipes seront lancées avec des droits élevés. Une fois terminé, quittez l'interpréteur avec la commande exit.