GNU/Linux >> Tutoriels Linux >  >> Linux

10 conseils rapides sur la commande sudo pour les systèmes Linux

Aperçu

sudo signifie superutilisateur faire . Il permet aux utilisateurs autorisés d'exécuter la commande en tant qu'un autre utilisateur. Un autre utilisateur peut être un utilisateur régulier ou un superutilisateur. Cependant, la plupart du temps, nous l'utilisons pour exécuter une commande avec des privilèges élevés.

La commande sudo fonctionne conjointement avec les politiques de sécurité, la politique de sécurité par défaut est sudoers et elle est configurable via /etc/sudoers dossier. Ses politiques de sécurité sont hautement extensibles. On peut développer et distribuer ses propres politiques sous forme de plugins.

En quoi c'est différent de su

Sous GNU/Linux, il existe deux façons d'exécuter une commande avec des privilèges élevés :

  • Utiliser su commande
  • Utiliser sudo commande

su signifie changer d'utilisateur . En utilisant su, nous pouvons passer à l'utilisateur root et exécuter la commande. Mais il y a peu d'inconvénients avec cette approche.

  • Nous devons partager le mot de passe root avec un autre utilisateur.
  • Nous ne pouvons pas donner un accès contrôlé car l'utilisateur root est un superutilisateur
  • Nous ne pouvons pas auditer ce que fait l'utilisateur.

sudo résout ces problèmes de manière unique.

  1. Tout d'abord, nous n'avons pas besoin de compromettre le mot de passe de l'utilisateur root. L'utilisateur régulier utilise son propre mot de passe pour exécuter la commande avec des privilèges élevés.
  2. Nous pouvons contrôler l'accès de l'utilisateur sudo, ce qui signifie que nous pouvons restreindre l'utilisateur à n'exécuter que certaines commandes.
  3. En plus de cela, toutes les activités de l'utilisateur sudo sont enregistrées, nous pouvons donc toujours vérifier quelles actions ont été effectuées. Sur GNU/Linux basé sur Debian, toutes les activités sont enregistrées dans /var/log/auth.log fichier.

Les sections ultérieures de ce didacticiel éclairent ces points.

Travailler avec sudo

Maintenant, nous avons une bonne compréhension de sudo. Mettons-nous la main à la pâte avec la pratique. Pour la démonstration, j'utilise Ubuntu. Cependant, le comportement avec une autre distribution devrait être identique.

Autoriser l'accès sudo

Ajoutons un utilisateur régulier en tant qu'utilisateur sudo. Dans mon cas, le nom d'utilisateur est linuxtechi

1) Modifiez le fichier /etc/sudoers comme suit :

$ sudo visudo

2) Ajoutez la ligne ci-dessous pour autoriser l'accès sudo à l'utilisateur linuxtechi :

linuxtechi ALL=(ALL) ALL

Dans la commande ci-dessus :

  • linuxtechi indique le nom d'utilisateur
  • Tout d'abord demande à ALL d'autoriser l'accès sudo depuis n'importe quel terminal/machine
  • Deuxièmement (ALL) indique à la commande sudo d'être autorisée à s'exécuter en tant qu'utilisateur quelconque
  • Le troisième ALL indique que toutes les commandes peuvent être exécutées en tant que root

Exécuter la commande avec des privilèges élevés

Pour exécuter la commande avec des privilèges élevés, ajoutez simplement le mot sudo à la commande comme suit :

$ sudo cat /etc/passwd

Lorsque vous exécutez cette commande, elle vous demandera le mot de passe de linuxtechi et non le mot de passe de l'utilisateur root.

Exécuter la commande en tant qu'un autre utilisateur

En plus de cela, nous pouvons utiliser sudo pour exécuter la commande en tant qu'autre utilisateur. Par exemple, dans la commande ci-dessous, l'utilisateur linuxtechi exécute la commande en tant qu'utilisateur devesh :

$ sudo -u devesh whoami
[sudo] password for linuxtechi:
devesh

Comportement de commande intégré

L'une des limitations de sudo est que la commande intégrée de Shell ne fonctionne pas avec. Par exemple, l'historique est intégré à la commande, si vous essayez d'exécuter cette commande avec sudo, l'erreur de commande introuvable sera signalée comme suit :

$ sudo history
[sudo] password for linuxtechi:
sudo: history: command not found

Accéder au shell racine

Pour surmonter le problème ci-dessus, nous pouvons accéder au shell root et exécuter n'importe quelle commande à partir de là, y compris celle intégrée de Shell.

Pour accéder au shell root, exécutez la commande ci-dessous :

$ sudo bash

Après avoir exécuté cette commande, vous remarquerez que le signe d'invite se transforme en caractère dièse (#).

Recettes

Dans cette section, nous discuterons de quelques recettes utiles qui vous aideront à améliorer votre productivité. La plupart des commandes peuvent être utilisées pour effectuer des tâches quotidiennes.

Exécuter la commande précédente en tant qu'utilisateur sudo

Supposons que vous vouliez exécuter la commande précédente avec des privilèges élevés, alors l'astuce ci-dessous sera utile :

$ sudo !4

La commande ci-dessus exécutera la 4ème commande de l'historique avec des privilèges élevés.

Si vous souhaitez exécuter la commande précédente avec les privilèges root à l'aide de la commande sudo, utilisez la commande suivante,

$ sudo !!

commande sudo avec Vim

Plusieurs fois, nous modifions les fichiers de configuration du système et lors de la sauvegarde, nous nous rendons compte que nous avons besoin d'un accès root pour le faire. Parce que cela, nous pouvons perdre nos changements. Il n'y a pas lieu de paniquer, nous pouvons utiliser la commande ci-dessous dans Vim pour sortir de cette situation :

:w !sudo tee %

Dans la commande ci-dessus :

  • Les deux-points (:) indiquent que nous sommes en mode ex de Vim
  • Le point d'exclamation (!) indique que nous exécutons une commande shell
  • sudo et tee sont les commandes shell
  • Le signe de pourcentage (%) indique toutes les lignes à partir de la ligne actuelle

Exécuter plusieurs commandes à l'aide de sudo

Jusqu'à présent, nous n'avons exécuté qu'une seule commande avec sudo, mais nous pouvons exécuter plusieurs commandes avec. Séparez simplement les commandes à l'aide d'un point-virgule (;) comme suit :

$ sudo -- bash -c 'pwd; hostname; whoami'

Dans la commande ci-dessus :

  • Le double tiret (–) arrête le traitement des commutateurs de ligne de commande
  • bash indique le nom du shell à utiliser pour l'exécution
  • Les commandes à exécuter sont suivies de l'option –c

Exécuter la commande sudo sans mot de passe

Lorsque la commande sudo est exécutée pour la première fois, elle demandera un mot de passe et, par défaut, le mot de passe sera mis en cache pendant les 15 prochaines minutes. Cependant, nous pouvons remplacer ce comportement et désactiver l'authentification par mot de passe à l'aide du mot-clé NOPASSWD comme suit :

linuxtechi ALL=(ALL) NOPASSWD: ALL

Restreindre l'utilisateur à exécuter certaines commandes

Pour fournir un accès contrôlé, nous pouvons restreindre l'utilisateur sudo à n'exécuter que certaines commandes. Par exemple, la ligne ci-dessous permet l'exécution des commandes echo et ls uniquement

linuxtechi ALL=(ALL) NOPASSWD: /bin/echo /bin/ls

Ajouter une ligne ou une chaîne de texte à un fichier à l'aide de la commande sudo

Il existe certains scénarios dans lesquels nous devons ajouter quelques lignes à un fichier existant avec un utilisateur local disposant des droits sudo,

$ echo 'chaîne de texte' | sudo tee -a

L'exemple est montré ci-dessous :

[email protected]:~$ echo "deb http://ftp.de.debian.org/debian buster main contrib" | sudo tee -a /etc/apt/sources.list
deb http://ftp.de.debian.org/debian buster main contrib
[email protected]:~$

Autre moyen d'ajouter des lignes ou du texte à un fichier existant à l'aide de la commande sudo,

sudo sh -c 'echo "deb http://ftp.de.debian.org/debian buster main contrib" >> /etc/apt/sources.list'

Insights sur sudo

Laissez-nous en savoir plus sur la commande sudo pour en savoir plus.

$ ls -l /usr/bin/sudo
-rwsr-xr-x 1 root root 145040 Jun 13  2017 /usr/bin/sudo

Si vous observez attentivement les autorisations de fichiers, setuid bit est activé sur sudo. Lorsqu'un utilisateur exécute ce binaire, il s'exécutera avec les privilèges de l'utilisateur propriétaire du fichier. Dans ce cas, il s'agit de l'utilisateur root.

Pour le démontrer, nous pouvons utiliser la commande id comme suit :

$ id
uid=1002(linuxtechi) gid=1002(linuxtechi) groups=1002(linuxtechi)

Lorsque nous exécutons la commande id sans sudo, l'identifiant de l'utilisateur linuxtechi sera affiché.

$ sudo id
uid=0(root) gid=0(root) groups=0(root)

Mais si nous exécutons la commande id avec sudo, l'identifiant de l'utilisateur root sera affiché.

Conclusion

Le point à retenir de cet article est que sudo offre un accès plus contrôlé aux utilisateurs réguliers. En utilisant ces techniques, plusieurs utilisateurs peuvent interagir avec GNU/Linux de manière sécurisée.

Lire aussi :Comment créer des liens matériels et logiciels (liens symboliques) sur les systèmes Linux


Linux
  1. 3 conseils pour imprimer avec Linux

  2. 8 conseils pour la ligne de commande Linux

  3. 8 exemples de commandes Quick Date sous Linux

  4. Apprivoiser la commande tar :conseils pour gérer les sauvegardes sous Linux

  5. Exemples de commandes sudo sous Linux

10 conseils sur la commande 'dmesg' pour Linux Geeks

10 exemples de commandes ncat (nc) utiles pour les systèmes Linux

11 exemples de commandes Split utiles pour les systèmes Linux

18 exemples de commandes rapides ‘lsof’ pour Linux Geeks

Commande Sudo sous Linux

Principes de base de la ligne de commande Linux :sudo