Cet article explore les différences entre le sudo
et su
commandes sous Linux. Vous pouvez également regarder cette vidéo pour en savoir plus sur ces commandes. Devenir root de façon permanente avec su
est un "non-non" bien connu dans l'univers *nix. Pourquoi? Parce que devenir root avec su
signifie que vous êtes root, ce qui revient à vous connecter à un terminal en tant qu'utilisateur root avec le mot de passe root. Et c'est dangereux pour de nombreuses raisons.
[ Vous pourriez également apprécier : L'essentiel de la ligne de commande Linux :sudo ]
Travailler en tant que root signifie que vous avez le pouvoir de :
- Supprimer tout ou partie des fichiers
- Modifier les autorisations d'un ou de tous les fichiers
- Modifier le niveau d'exécution du système
- Modifier les comptes utilisateur
- Monter ou démonter des systèmes de fichiers
- Supprimer ou installer un logiciel
- Créer, supprimer et modifier des systèmes de fichiers
Fondamentalement, vous pouvez faire n'importe quoi sur le système en tant qu'utilisateur root. C'est le tout-puissant compte administratif. Et, contrairement à d'autres systèmes d'exploitation plus bavards, vous ne verrez pas de "Êtes-vous sûr ?" boîte de dialogue pour être sûr que le rm -rf *
la commande que vous venez de lancer était dans /opt/tmp
plutôt qu'à /
. Comme vous pouvez l'imaginer, les erreurs commises en tant qu'utilisateur root peuvent être irréversibles et dévastatrices. Il existe une alternative :sudo
.
sudo
sudo
, qui est un acronyme pour superuser do ou substituer user do , est une commande qui exécute une invite élevée sans qu'il soit nécessaire de modifier votre identité. En fonction de vos paramètres dans le /etc/sudoers
fichier, vous pouvez émettre des commandes uniques en tant que root ou en tant qu'un autre utilisateur. Pour continuer à exécuter des commandes avec le pouvoir root, vous devez toujours utiliser la commande sudo. Par exemple, si vous souhaitez installer Nginx package, vous exécutez :
$ dnf install nginx
Mais vous verrez une erreur si vous n'êtes pas root ou dans le groupe sudo. Au lieu de cela, si vous exécutez cette commande :
$ sudo dnf install nginx
Il vous sera demandé de saisir votre mot de passe, puis vous pourrez exécuter la commande si vous faites partie du groupe sudo.
Une manière simple de passer à une session interactive en tant qu'utilisateur root est la suivante :
$ sudo -i
La théorie derrière l'utilisation de sudo est que le fait d'émettre la commande sudo avant toute commande que vous exécutez vous fait réfléchir davantage à ce que vous faites et, espérons-le, faire moins d'erreurs avec un compte qui possède un pouvoir illimité.
su
su
, d'autre part, est un acronyme pour changer d'utilisateur ou remplacer l'utilisateur . Vous passez essentiellement à un utilisateur particulier et vous avez besoin du mot de passe de l'utilisateur vers lequel vous passez. Le plus souvent, le compte utilisateur vers lequel vous basculez est le compte racine, mais il peut s'agir de n'importe quel compte du système.
Par exemple, si vous tapez :
$ su -
Dans l'exemple ci-dessus, vous passez à root et vous avez besoin du mot de passe root. Le (-
) switch vous fournit l'environnement root (variables de chemin et de shell) plutôt que de simplement vous donner le pouvoir d'utilisateur root pour une seule commande tout en conservant votre propre environnement.
$ su bryant
Pour le deuxième exemple, vous passez à bryant , et donc vous avez besoin du mot de passe de Bryant sauf si vous êtes root.
Si vous souhaitez passer au bryant compte utilisateur, y compris le chemin de bryant et les variables d'environnement, utilisez le (-
) bascule :
$ su - bryant
Le (-
) a le même effet que la connexion directe à un système avec ce compte d'utilisateur. Essentiellement, vous devenez cet utilisateur.
Récapitulez
Récapitulons ce que vous avez appris.
sudo
vous permet d'émettre des commandes en tant qu'autre utilisateur sans changer votre identité- Vous devez avoir une entrée dans
/etc/sudoers
pour exécuter ces autorisations restreintes sudo -i
vous amène à une session interactive en tant que rootsu
signifie passer à un utilisateur particulier- Il suffit de taper
su
passe à l'utilisateur root sudo
vous demandera votre mot de passe, tandis quesu
demandera le mot de passe de l'utilisateur vers lequel vous basculez
[ Vous voulez en savoir plus sur la sécurité ? Consultez la liste de vérification de la sécurité informatique et de la conformité. ]
Mais quand en utilisez-vous un, pas un autre ? Depuis le sudo
la politique est définie dans /etc/sudoers
, cela peut donner de puissants contrôles d'autorisation. Depuis sudo
peut à peu près tout faire su
peut, je dirais qu'il est préférable de s'en tenir à sudo
sauf si vous travaillez avec des codes hérités qui nécessitent le su
commande.