Quelles sont les différences entre les commandes su et sudo ?

Supposons que vous deviez effectuer des tâches administratives sur votre serveur Linux tout en suivant les consignes de sécurité standard. Quelles sont vos options ? Il existe trois options différentes pour l’accès administratif : Connectez-vous en tant que root, c’est-à-dire un superutilisateur ; déplacer votre identité à la racine ; ou effectuer des tâches spécifiques assignées en tant que root. Voici un résumé de chaque stratégie :

  • Connectez-vous en tant que root. Votre première connexion au système se fait en tant qu’utilisateur root, ce qui vous donne des privilèges illimités. Il s’agit d’une mauvaise pratique de sécurité.
  • Connectez-vous en tant qu’utilisateur non privilégié et passez en root. Vous êtes connecté en tant qu’utilisateur standard mais en utilisant le su — changer ou changer d’utilisateur — commande pour basculer votre identité vers root. Encore une fois, vous obtenez des privilèges illimités, et encore une fois, c’est une mauvaise pratique de sécurité. Ce processus est souvent appelé “root” dans la documentation.
  • Effectuez les tâches assignées avec des privilèges élevés en utilisant le sudo — superutilisateur do — commande. Vos privilèges de connexion et système sont ceux d’un utilisateur standard. Cependant, des tâches spécifiques — ou, éventuellement, toutes les tâches — sont affectées à ce compte. Votre compte est limité aux tâches assignées uniquement.

Cet article examine les utilisations et les différences entre su et sudo commandes d’élévation de privilèges, mettant en évidence des exemples et certaines options de configuration. Cela vous aide à décider quelle option convient le mieux à vos situations d’administration Linux.

Pourquoi ne pas vous connecter en tant que root ?

Privilèges root complets — soit par connexion directe ou su — a un problème. Tout d’abord, lorsque vous entrez des commandes en tant que root, le système ne vous défie pas ou ne vous contre-vérifie pas. Au lieu de cela, il fait exactement ce que vous lui dites de faire – même si une commande plante le système en modifiant la configuration ou en supprimant les fichiers nécessaires. Le système est donc vulnérable à vos erreurs lorsque vous êtes connecté en tant que root. De plus, les applications sont conçues pour s’exécuter avec des privilèges utilisateur standard, et non avec l’autorité root. Les bogues et les logiciels malveillants constituent une plus grande menace pour votre système lorsqu’ils sont exécutés avec les privilèges root.

Le principe du moindre privilège s’applique ici : donnez le moins d’autorité possible pour faire le travail.

Cependant, dans certains cas, vous pouvez décider de « rooter » pour accomplir vos tâches. Une façon de le faire est de se connecter en tant qu’utilisateur standard, puis de passer au compte root. Voici comment.

Utilisation su

Une fonctionnalité utile de Linux est la possibilité de passer d’un compte utilisateur à un autre sans se déconnecter du premier utilisateur. Cette fonctionnalité peut être étendue pour inclure le contexte de l’environnement de l’utilisateur. La su la commande est simple.

Pointe: Observez l’invite de commande. L’invite de l’utilisateur root s’affiche #et l’invite pour les utilisateurs non privilégiés s’affiche $.

La connexion en tant que root, au lieu de changer votre identité d’un utilisateur non privilégié en root, donne essentiellement les mêmes résultats. Dans tous les cas, vos privilèges incluent un accès administratif complet et potentiellement dangereux.

Il existe deux façons d’utiliser la commande. La première bascule vers un nouvel utilisateur, couvrant le contexte de l’utilisateur actuel, tandis que la seconde approche bascule le nouvel utilisateur vers le propre contexte de cet utilisateur. Les figures suivantes montrent deux méthodes.

Figure 1. Notez que la commande su root préserve le répertoire actuel de l’utilisateur.

La su exemple racine

Dans cette approche, la commande est su, l’argument est racine et aucune option n’est spécifiée. Le mot de passe racine est requis. Après l’avoir entré, il apparaît que vous êtes l’utilisateur root. Cependant, notez le répertoire de travail actuel. Il s’agit du répertoire personnel du premier utilisateur — ici, l’utilisateur initial non privilégié est user1.

Comparez cela avec la figure 2.

Capture d'écran du transfert de su root à un nouvel utilisateur dans le contexte de cet utilisateur
Figure 2. Notez que la commande su – root se déplace vers le répertoire personnel du nouvel utilisateur.

La su – racine par exemple

Il ajoute un tiret entre le su commande et la racine argument, modifie le contexte utilisateur. Notez l’espace de chaque côté du tiret.

La figure 2 montre à quoi cela ressemble si vous exécutez la commande et examinez le répertoire actuel.

La différence réside dans la reconnaissance des variables et des paramètres spécifiques à la racine. Je n’utilise presque jamais le su – racine syntaxe. Si j’ai décidé de m’enraciner, je préfère avoir un environnement racine complet.

Il y a une astuce su, d’ailleurs. Parce que l’utilisation la plus courante de su se déplacera à la racine, si vous n’ajoutez pas le racine argument de nom d’utilisateur à su, Le logiciel suppose que vous voulez root.

À cette fin, les deux exemples ci-dessous sont les mêmes :

$ su – root
$ su -

Il existe trois scénarios de défi de mot de passe su:

  1. Généralement utilisateur root. Vous êtes invité à saisir le mot de passe de l’utilisateur racine.
  2. Racine à l’utilisateur standard. Vous n’êtes pas sollicité pour le mot de passe utilisateur standard.
  3. Utilisateur moyen à utilisateur moyen. Vous êtes invité à saisir le mot de passe de l’utilisateur vers lequel vous basculez.

Déléguer avec sudo

Pensez à utiliser sudo — un moyen de permettre à un utilisateur d’exécuter temporairement un programme avec des privilèges de sécurité étendus — pour attribuer des tâches spécifiques au lieu d’élever complètement les privilèges root à l’échelle du système. La délégation permet d’affecter des tâches spécifiques à des utilisateurs ou des groupes spécifiques. Les tâches ne peuvent normalement être effectuées que par l’utilisateur root, mais avec la délégation, un utilisateur standard est autorisé à les exécuter.

La figure 3 montre des exemples d’utilisation sudod’abord sans utiliser la délégation, puis avec.

Capture d'écran de la commande sudo pour créer un autre compte utilisateur
Figure 3. La commande sudo permet à cet utilisateur standard de créer un autre compte utilisateur.

L’identité de l’utilisateur ne change pas ; la commande spécifiée est exécutée uniquement avec des privilèges élevés. Si l’utilisateur tente d’utiliser sudo avec un privilège non délégué, l’utilisateur est toujours refusé.

Alors, comment un administrateur système délègue-t-il des privilèges ? Utilisez le fichier sudoers.

Le fichier sudoers

Délégation de privilège par sudo est géré dans le fichier /etc/sudoers. Vous pouvez associer des actions et des identités pour fournir des tâches administratives spécifiques à des utilisateurs spécifiques.

Il est techniquement possible d’éditer le fichier sudoers à l’aide de n’importe quel éditeur, mais il est fortement recommandé d’utiliser le Visudo commande pour lancer l’éditeur. Son avantage est sa fonction de vérification de la syntaxe. Des erreurs dans le fichier sudoers peuvent entraîner des problèmes de délégation. L’éditeur visudo aide à éliminer ces erreurs en lançant l’éditeur de texte par défaut pour votre système – très probablement Vim ou nano.

Lancez l’éditeur avec le Visudo commande:

$ sudo visudo

Notez que vous avez besoin de privilèges root ou de privilèges délégués pour modifier le fichier sudoers.

Le fichier sudoers est une ressource utile qui contient de nombreuses explications et exemples. Vous devriez pouvoir trouver la syntaxe de toute délégation commune. Voici deux scénarios d’affectation que vous rencontrerez probablement tout de suite :

  1. Seul l’utilisateur1 a la possibilité d’exécuter ajout d’utilisateur, mod utilisateur et userdel comme les racines : user1 ALL=(racine) /usr/sbin/useradd, /usr/sbin/usermod, /user/sbin/userdel.
  2. N’importe quel membre du groupe admin peut exécuter n’importe quelle commande : %admins TOUS=(TOUS) TOUS.

Le fichier sudoers offre de nombreuses possibilités, plus que cet article ne peut en couvrir. Cependant, deux paramètres particuliers se distinguent. Le premier contrôle la durée pendant laquelle l’authentification par mot de passe est reconnue, et le second contrôle si les délégués sont interrogés pour leur mot de passe.

Développer le défi du mot de passe sudo

En règle générale, les utilisateurs sont invités à saisir leur mot de passe lorsqu’ils exécutent une commande désignée à l’aide du sudo. La modification du fichier sudoers vous permet de gérer la durée de validité de cette authentification. S’il est défini pour une courte période, l’utilisateur est souvent mis au défi, ce qui peut être frustrant. Prolonger le temps fonctionne sudo plus pratique à utiliser. Cet exemple reconnaît l’authentification de l’utilisateur 1 pendant 30 minutes au lieu des cinq minutes par défaut :

Defaults:user1 timestamp_timeout=30

Utilisation sudo sans mot de passe

Le normal sudo La fonction demande aux utilisateurs leurs mots de passe — notez qu’il ne s’agit pas du mot de passe de l’utilisateur root — lorsqu’ils essaient d’utiliser un privilège attribué. Ce paramètre est une bonne idée, mais il est possible de le remplacer et de permettre aux utilisateurs normaux d’effectuer des tâches sans entrer leurs mots de passe. Remarque : L’utilisateur est correctement authentifié auprès du système lors de la connexion.

Contournez le défi du mot de passe en ajoutant le NOPASSWD valeur dans l’entrée utilisateur dans le fichier sudoers, comme indiqué ci-dessous :

user1 ALL=(ALL) NOPASSWD:ALL

Sud journaux

Un de plus sudo L’avantage est qu’il enregistre son utilisation. Lorsque les utilisateurs utilisent des privilèges, sudo consigne les commandes. L’emplacement des fichiers journaux varie selon la distribution. Pour les distributions basées sur Red Hat Enterprise Linux, consultez /var/log/security ; pour Ubuntu, voir var/log/auth.log.

Gérer les privilèges administratifs

Cet article traite de “l’utilisateur” comme s’il s’agissait d’un tiers anonyme. En réalité, les paramètres du fichier sudoers s’appliquent souvent à vous. Souvent, les administrateurs configurent leurs propres serveurs via sudo pour leur permettre d’effectuer des tâches assignées sur leurs propres systèmes. Par conséquent, des valeurs telles que temps libre et le mot de passe sont des paramètres avec lesquels vous devrez peut-être vivre régulièrement.

En fait, de nombreuses distributions Linux désactivent le compte utilisateur root par défaut, implémentant le sudo structure pour accomplir les tâches administratives. Ubuntu Linux en fait partie, par exemple.

Ce n’est généralement pas une bonne idée de se connecter à un serveur Linux en tant que root, donc lors de l’examen su et sudose sentir à l’aise d’utiliser sudo d’utiliser des privilèges système spécifiques et de limiter votre utilisation de su – racine pour aider à atténuer la menace d’erreurs et de logiciels malveillants.

Leave a Reply

Your email address will not be published. Required fields are marked *