# [Commandes Linux] Sudo

## Introduction

Sudo est une commande linux permettant d'exécuter des commandes en tant que super-administrateur (root).

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/Ngyimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/Ngyimage.png)

## Syntaxe générale

Voici l'utilisation la plus basique de **sudo** :

```bash
sudo <COMMAND>
```

Et un exemple où l'on exécute une commande nécessitant les droits root :

```bash
sudo apt update
```

<span style="text-decoration: underline;">Remarque :</span> Selon la configuration faite de **sudo**, le mot de passe de votre utilisateur peut vous être demandé lors l'utilisation de la commande **sudo**.

<span style="text-decoration: underline;">Remarque bis :</span> La saisie de ce mot de passe ne sera pas affichée dans le terminal par sécurité.

## Quelques options pratiques

- Ouvrir un shell avec les droits root :

```bash
sudo -i
```

- Lister les droits **sudo** de l'utilisateur actif :

```bash
sudo -l
```

- Exécuter une commande en tant qu'un autre utilisateur (potentiellement différent de root) :

```bash
sudo -u <USER> <COMMAND>
```

## Installation et configuration

Afin de pouvoir utiliser **sudo**, il faut installer le paquet **sudo**.

#### Installation

- Debian / Ubuntu :

```bash
apt install sudo
```

- Fedora / CentOS / Alma Linux / Rocky Linux / RHEL :

```bash
dnf install sudo
```

- Arch Linux / Manjaro :

```bash
pacman -S sudo
```

#### Configuration

Pour donner les droits **sudo** à votre utilisateur, il suffit de l'ajouter au **groupe sudo** ou **wheel** (selon les systèmes) :

```
newgrp sudo
```

```bash
usermod -aG sudo <USER>
```

```bash
usermod -aG wheel <USER>
```

Cependant il peut être intéressant d'ajouter une entrée pour votre utilisateur dans le fichier **/etc/sudoers** :

```bash
<USER> ALL=(ALL:ALL) ALL
```

Pour ne plus demander le mot de passe de l'utilisateur lors de l'utilisation de **sudo**, remplacez l'entrez ci-dessus par celle-ci :

```bash
<USER> ALL=(ALL:ALL) NOPASSWD: ALL
```

Si vous souhaitez autoriser seulement l'exécution d'un programme spécifique à un utilisateur en tant que root :

```bash
<USER> ALL=(ALL) ALL: <PATH_TO_BIN>
```

Et voici sans demander le mot de passe de l'utilisateur :

```bash
<USER> ALL=(ALL) NOPASSWD: <PATH_TO_BIN>
```