Exécution de commandes en tant que superutilisateur avec sudo
- CONTENU
Découvrez les concepts de base de
sudo
et comment l'utiliser en tant qu'utilisateur ordinaire.- MOTIF
Certaines commandes nécessitent des privilèges d'administrateur. Pour exécuter une commande avec des droits d'administrateur, vous pouvez utiliser la commande
sudo
.- EFFORT
La lecture de cet article vous prendra au maximum 20 minutes. Si vous avez une question spécifique, vous pouvez passer directement au chapitre correspondant.
- OBJECTIF
Comprendre les concepts de base de
sudo
et exécuter des commandes avecsudo
pour certains cas d'utilisation.- CONDITIONS REQUISES
Privilèges
root
ousudo
. Ils ne sont disponibles que si vous êtes l'administrateur du système. Pour plus d'informations, reportez-vous à la Section 1, « Concepts de base desudo
».Le paquet sudo doit être installé. Il est disponible sous SLE Micro par défaut.
1 Concepts de base de sudo
#
Découvrez les concepts de base de sudo
et son fonctionnement sur les systèmes SLE Micro.
sudo
est une commande Linux utilisée pour exécuter temporairement des programmes en tant qu'un autre utilisateur. Il s'agit de l'abréviation de substitute user and do
et emprunte les privilèges d'un autre utilisateur, par exemple l'utilisateur root
. De cette façon, sudo
vous permet d'accomplir les tâches d'administration du système sans vous connecter en tant que root
.
1.1 sudo
sur les systèmes Linux en général #
En tant qu'utilisateur ordinaire sous Linux, vous disposez d'autorisations réduites qui sont suffisantes pour la plupart des tâches. L'utilisateur root
est le superutilisateur Linux et l'équivalent de l'administrateur.
sudo
permet à des utilisateurs (non-root
) spécifiés ou à un groupe d'utilisateurs d'exécuter des tâches privilégiées, telles que l'appel de fonctions système en tant que root
ou un autre utilisateur. Grâce à un fichier de configuration, l'administrateur système peut contrôler quels utilisateurs sont autorisés à exécuter des commandes sudo
et pour quelles tâches.
1.2 sudo
sur les systèmes SLE Micro #
Pour des raisons de sécurité, tous les systèmes SLE Micro distinguent l'utilisateur ordinaire de l'utilisateur root
. En tant qu'utilisateur ordinaire, vous ne pouvez pas écrire dans des répertoires système ou installer des programmes. Tout utilisateur ayant accès au mot de passe root
peut obtenir ces privilèges et endommager le système par accident ou avec de mauvaises intentions.
Par exemple, vous êtes connecté en tant qu'utilisateur ordinaire et vous accédez accidentellement à un site Web malveillant. Il est alors impossible à un attaquant d'installer des logiciels malveillants sur votre système dans votre dos, car vous êtes connecté en tant qu'utilisateur ordinaire, autrement dit sans aucune autorisation d'administration.
Comme expliqué ci-dessus, il est déconseillé d'être connecté en permanence en tant qu'utilisateur root
pour des raisons de sécurité. Une approche plus sûre consiste à rester connecté en tant qu'utilisateur ordinaire et d'exécuter une commande restreinte précédée de sudo
.
sudo
nécessite des droits d'administrateur
Sur une machine mono-utilisateur, sur laquelle vous avez défini votre propre mot de passe root
, vous disposez des droits requis pour administrer votre système à l'aide de la commande sudo
et configurer vous-même les paramètres sudo
.
Pour plus d'informations sur la configuration de sudo
, reportez-vous au document https://documentation.suse.com/smart/systems-management/html/sudo-configure-superuser-privileges/index.html.
Dans un environnement multi-utilisateur, comme dans les entreprises, les privilèges sudo
sont gérés par un administrateur système et les autorisations de l'utilisateur root
peuvent être limitées. Il se peut que vous ne soyez pas autorisé à modifier certains répertoires ou fichiers système, même lorsque vous exécutez la commande avec sudo
.
1.3 Fonctionnement de sudo
#
Lorsque vous exécutez une commande précédée de sudo
, le système vous demande le mot de passe du compte root
. Une fois l'authentification réussie, la commande est exécutée avec les privilèges de superutilisateur.
Selon la configuration sudo
, les privilèges élevés persistent un certain temps et restent applicables tant que vous travaillez dans la même session de terminal. Il n'est donc pas nécessaire d'indiquer à nouveau un mot de passe lorsque vous exécutez une autre commande sudo
.
Pour exécuter une commande avec sudo
, utilisez cette syntaxe :
>
sudo [command]
L'exemple suivant explique comment la commande sudo
est utilisée pour ouvrir le centre de contrôle YaST directement dans le terminal. Des droits d'administrateur sont nécessaires pour ouvrir YaST et, par conséquent, l'ouverture n'est possible qu'avec la commande sudo
.
sudo
#>
yast
Absolute path to 'yast' is '/usr/sbin/yast', so running it may require superuser privileges (eg. root).1>
sudo
yast
[sudo] password for root:2
Lorsque seule la commande | |
Si vous faites précéder la commande Une fois l'authentification réussie, le s'ouvre. |
Les privilèges élevés persistent un certain temps, de sorte qu'il n'est pas nécessaire d'indiquer à nouveau un mot de passe pour exécuter la commande sudo
suivante.
2 Exécution d'une commande précédée de sudo
#
En tant qu'utilisateur ordinaire, vous pouvez exécuter n'importe quelle commande en tant que root
en ajoutant sudo
devant celle-ci. Vous êtes alors invité à fournir le mot de passe root
. Si l'authentification réussit, la commande s'exécute en tant que root
.
Lorsque vous exécutez une commande précédée de sudo
, le système vous demande le mot de passe du compte root
. Une fois l'authentification réussie, la commande est exécutée avec les privilèges de superutilisateur.
Selon la configuration sudo
, les privilèges élevés persistent un certain temps et restent applicables tant que vous travaillez dans la même session de terminal. Il n'est donc pas nécessaire d'indiquer à nouveau un mot de passe lorsque vous exécutez une autre commande sudo
.
sudo
#
La procédure suivante décrit comment utiliser la commande sudo
pour copier un fichier dans un répertoire où seul l'utilisateur root
dispose de droits d'édition.
Ouvrez un terminal et créez un fichier test avec :
>
touch test.txt
Essayez de copier le fichier dans le répertoire
/usr/local/bin/
avec :>
cp test.txt /usr/local/bin
Le terminal renvoie, par exemple :
cp: cannot create regular file '/usr/local/bin/test.txt': Permission denied
Ce message apparaît également si les privilèges requis n'ont pas été accordés à
sudo
.À présent, entrez la même commande précédée de
sudo
:>
sudo
cp test.txt /usr/local/bin
Vous êtes invité à fournir le mot de passe
root
. Notez que le mot de passe n'apparaît pas lors de la saisie, ni en texte clair ni en caractères de masquage.[sudo] password for root:
Une fois l'authentification réussie, le fichier test est copié dans
/usr/local/bin
.
Vous avez exécuté votre première commande sudo
.
3 Commandes sudo
courantes #
En ajoutant sudo
devant n'importe quelle commande, vous pouvez exécuter des commandes avec des autorisations élevées. Vous pouvez également exécuter des commandes en étant un autre utilisateur et utiliser ses variables d'environnement.
Cette section fournit des exemples de commandes courantes qui nécessitent souvent des privilèges d'administrateur.
- Répéter la dernière commande avec
sudo
Pour répéter la dernière commande en tant qu'administrateur, exécutez
sudo !!
, puis entrez le mot de passe. Par exemple, un utilisateur sans privilèges d'administrateur ne peut pas créer de répertoire sous le répertoire/etc/
. Pour le créer, exécutezsudo !!
.>
mkdir /etc/test/
mkdir: cannot create directory ‘/etc/test/’: Permission denied>
sudo
!!
sudo mkdir /etc/test/ [sudo] password for root:>
ls -alrt /etc | grep test
drwxr-xr-x 1 root root 0 Apr 20 12:48 test- Gérer les paquets à l'aide de
sudo
et dezypper
Pour exécuter des commandes de gestion de paquets en tant qu'administrateur, ajoutez
sudo
devant la commande :>
sudo
zypper [--GLOBAL-OPTIONS] <COMMAND> [--COMMAND-OPTIONS] [ARGUMENTS]
Par exemple, pour installer la plate-forme de conteneurisation Docker CE à partir de son dépôt de paquets officiel, exécutez les commandes suivantes avec
sudo
:>
sudo
zypper addrepo https://download.docker.com/linux/suse/docker-ce
>
sudo
zypper refresh
>
sudo
zypper search docker-ce
>
sudo
zypper install docker-ce
Il n'est pas nécessaire d'ajouter
sudo
devant les commandeszypper
qui ne modifient pas le système ou ne fournissent pas d'accès privilégié aux informations. Par exemple, vous pouvez répertorier les dépôts pour les paquets logiciels installés sur votre système sans utilisersudo
:>
zypper lr
- Gérer les services système à l'aide de
sudo
et desystemctl
Dans les systèmes qui utilisent
systemd
pour la gestion des services, vous pouvez utiliser la commandesystemctl
avecsudo
. Par exemple, pour redémarrer le service Apache Web Server, exécutez :>
sudo
systemctl restart apache2
Il n'est pas nécessaire d'ajouter
sudo
devant les commandessystemctl
qui ne modifient pas le système ou ne fournissent pas d'accès privilégié aux informations. Par exemple, vous pouvez afficher l'état de Network Manager sans utilisersudo
:>
systemctl status NetworkManager
● NetworkManager.service - Network Manager Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/system/NetworkManager.service.d └─NetworkManager-ovs.conf Active: active (running) since DAY YYYY-MM-DD HH:MM:SS TIMEZONE; 1h 21min ago Docs: man:NetworkManager(8) [...]- Modifier un compte utilisateur à l'aide de
sudo
et deusermod
Pour exécuter la commande
usermod
afin de modifier des comptes utilisateur, utilisez :>
sudo
usermod [OPTION] USERNAME
Par exemple, pour définir le nombre de jours sur
30
en vue de la désactivation définitive du compte utilisateurtux
après l'expiration du mot de passe, exécutez :>
sudo
usermod --inactive 30 tux
- Modifier la propriété des fichiers et des répertoires à l'aide de
sudo
et dechown
Pour transférer la propriété des fichiers et des répertoires du propriétaire actuel à un nouveau propriétaire, utilisez :
>
sudo
chown [OPTION] [OWNER:[GROUP]] FILE
Par exemple, pour attribuer à
tux
la propriété des fichiers et des sous-répertoires du répertoire/home/test/tux-files
, exécutez :>
sudo
chown tux /home/test/tux-files/ --recursive
Vous pouvez tester le changement de propriété en exécutant la commande suivante :
>
ls -alrt /home/test/tux-files/ --recursive
- Exécuter une commande en tant qu'autre utilisateur à l'aide de
sudo -s
Au lieu d'utiliser la commande
su
pour prendre l'identité d'un autre utilisateur et exécuter des commandes, vous pouvez utiliser la commandesudo -s
. Un shell exécuté par la commandesudo -s
hérite de l'environnement de l'utilisateur actuel. La commandesudo -s
offre également quelques mesures de contrôle des privilèges.Pour exécuter une commande en tant qu'autre utilisateur, utilisez :
>
sudo
-s -u USERNAME COMMAND
Par défaut, la commande s'exécute à partir du répertoire de l'utilisateur précédent, car l'utilisateur cible hérite de l'environnement de l'utilisateur précédent.
Par exemple, pour répertorier de manière récurrente les fichiers et les sous-répertoires du répertoire
/home/test/tux-files/
en tant qu'utilisateur cibletux
, exécutez :>
sudo
-s -u tux ls -alrt /home/test/tux-files/ --recursive
Lorsque vous utilisez l'approche
sudo -s
pour exécuter une commande en tant qu'autre utilisateur, la commande est consignée dans votre historique.- Exécuter une commande en tant qu'autre utilisateur avec un environnement propre à l'aide de
sudo -i
Lorsque vous utilisez la commande
sudo -s
, l'utilisateur cible hérite de l'environnement de l'utilisateur précédent. Vous pouvez empêcher cet héritage en utilisant la commandesudo -i
, où l'utilisateur cible obtient un environnement nettoyé et démarre à partir de son propre répertoire$HOME
.Pour exécuter une commande en tant qu'autre utilisateur avec un environnement propre, utilisez :
>
sudo
-i -u USERNAME COMMAND
La commande
sudo -i
exécute le shell en tant que shell de connexion interactif de l'utilisateur cible. Par conséquent, il existe des scripts de démarrage du shell tels que des fichiers.profile
et.bash_profile
.Par exemple, pour lister les fichiers et sous-répertoires du répertoire
/home/test/tux-files/
en tant quetux
, exécutez la commande suivante :>
sudo
-i -u tux ls -alrt /home/test/tux-files/
Lorsque vous utilisez l'approche
sudo -i
pour exécuter une commande en tant qu'autre utilisateur, la commande est consignée dans votre historique.
4 Différence entre les commandes sudo
et su
#
Découvrez la différence entre les commandes sudo
et su
quand les utiliser.
Sur les systèmes Linux, vous pouvez faire précéder une commande par sudo
ou su
. Les deux vous permettent d'exécuter des commandes en tant que root
.
4.1 Caractéristiques de la commande sudo
#
sudo
permet d'exécuter une commande en tant queroot
. Selon la configuration, vous ne devez pas entrer le mot de passeroot
, mais uniquement celui de l'utilisateur. De cette façon, aucune information sensible ne doit être partagée avec tous les autres utilisateurs (ordinaires).Le fichier de configuration
sudo
permet à l'administrateur système de contrôler les utilisateurs autorisés à utilisersudo
et de limiter l'utilisation à certaines tâches.sudo
met en cache le mot de passe pendant un certain temps. Une fois ce délai écoulé, vous êtes de nouveau invité à entrer le mot de passe lorsque vous exécutez une autre commandesudo
.Toutes les commandes exécutées avec
sudo
sont consignées individuellement. Le fichier journal effectue le suivi de la date et de l'heure d'exécution, de l'utilisateur qui a exécuté la commande et de la commande proprement dite.
4.2 Caractéristiques de la commande su
#
su
vous permet d'exécuter une commande en tant queroot
, mais vous oblige à connaître le mot de passeroot
.Il ne peut pas être configuré pour limiter l'accès à certains utilisateurs et tâches et pour élever les privilèges de toute personne connaissant le mot de passe
root
.Les privilèges sont élevés durant toute la session de terminal. Tant que vous restez dans la session, vous n'êtes plus invité à entrer le mot de passe.
Les commandes exécutées avec
su
ne sont pas consignées individuellement, car toutes les opérations ne peuvent être consignées qu'avec le compte utilisateur.
5 Mentions légales #
Copyright © 2006–2024 SUSE LLC et contributeurs. Tous droits réservés.
Il est autorisé de copier, distribuer et/ou modifier ce document conformément aux conditions de la licence de documentation libre GNU version 1.2 ou (à votre discrétion) 1.3, avec la section permanente qu'est cette mention de copyright et la licence. Une copie de la version de licence 1.2 est incluse dans la section intitulée « Licence de documentation libre GNU ».
Pour les marques commerciales SUSE, consultez le site Web https://www.suse.com/company/legal/. Toutes les autres marques de fabricants tiers sont la propriété de leur détenteur respectif. Les symboles de marque (®, ™, etc.) désignent des marques commerciales de SUSE et de ses sociétés affiliées. Des astérisques (*) désignent des marques commerciales de fabricants tiers.
Toutes les informations de cet ouvrage ont été regroupées avec le plus grand soin. Cela ne garantit cependant pas sa complète exactitude. Ni SUSE LLC, ni les sociétés affiliées, ni les auteurs, ni les traducteurs ne peuvent être tenus responsables des erreurs possibles ou des conséquences qu'elles peuvent entraîner.