Je dois exécuter une commande avec des privilèges administratifs. Quelqu'un a dit que je devrais exécuter une commande en tant que root. Comment faire ?
Réponse acceptée :
Les deux principales possibilités de ligne de commande sont :
- Utilisez
su
et entrez le mot de passe root lorsque vous y êtes invité. - Mettre
sudo
devant la commande et entrez votre mot de passe lorsque vous y êtes invité.
Exécuter une commande shell en tant que root
sudo (préféré lorsqu'il n'exécute pas d'affichage graphique)
C'est la méthode préférée sur la plupart des systèmes, y compris Ubuntu, Linux Mint, (sans doute) Debian et d'autres. Si vous ne connaissez pas de mot de passe root séparé, utilisez cette méthode.
Sudo nécessite que vous tapiez votre propre mot de passe. (Le but est de limiter les dégâts si vous laissez votre clavier sans surveillance et déverrouillé, et aussi de vous assurer que vous vraiment souhaitez exécuter cette commande et ce n'était pas par exemple une faute de frappe.) Il est souvent configuré pour ne pas redemander pendant quelques minutes afin que vous puissiez exécuter plusieurs sudo
commandes successives.
Exemple :
sudo service apache restart
Si vous devez exécuter plusieurs commandes en tant que root, préfixez chacune d'elles avec sudo
. Parfois, il est plus pratique d'exécuter un shell interactif en tant que root. Vous pouvez utiliser sudo -i
pour cela :
$ sudo -i
# command 1
# command 2
...
# exit
Au lieu de sudo -i
, vous pouvez utiliser sudo -s
. La différence est que -i
reje initialise l'environnement aux valeurs par défaut saines, alors que -s
utilise vos fichiers de configuration pour le meilleur ou pour le pire.
Pour plus d'informations, consultez le site Web sudo ou tapez man sudo
sur votre système. Sudo est très configurable; par exemple, il peut être configuré pour permettre à un certain utilisateur d'exécuter uniquement certaines commandes en tant que root. Lisez les sudoers
page de manuel pour plus d'informations ; utiliser sudo visudo
pour éditer le fichier sudoers.
su
Le su
La commande existe sur la plupart des systèmes de type Unix. Il vous permet d'exécuter une commande en tant qu'un autre utilisateur, à condition que vous connaissiez le mot de passe de cet utilisateur. Lorsqu'il est exécuté sans utilisateur spécifié, su
sera par défaut le compte root.
Exemple :
su -c 'service apache restart'
La commande à exécuter doit être passée en utilisant le -c
option. Notez que vous avez besoin de guillemets pour que la commande ne soit pas analysée par votre shell, mais transmise intacte au shell racine que su
s'exécute.
Pour exécuter plusieurs commandes en tant que root, il est plus pratique de démarrer un shell interactif.
$ su
# command 1
# command 2
...
# exit
Sur certains systèmes, vous devez être dans le groupe numéro 0 (appelé wheel
) pour utiliser su
. (Le but est de limiter les dégâts si le mot de passe root est divulgué accidentellement à quelqu'un.)
Se connecter en tant que root
Si un mot de passe root est défini et que vous le possédez, vous pouvez simplement taper root
à l'invite de connexion et entrez le mot de passe root. Soyez très prudent et évitez d'exécuter des applications complexes en tant que root, car elles pourraient faire quelque chose que vous n'aviez pas prévu. Se connecter directement en tant que root est principalement utile dans les situations d'urgence, telles que les pannes de disque ou lorsque vous vous êtes verrouillé hors de votre compte.
Mode mono-utilisateur
Le mode mono-utilisateur, ou niveau d'exécution 1, vous donne également des privilèges root. Ceci est principalement destiné aux situations de maintenance d'urgence où le démarrage dans un niveau d'exécution multi-utilisateur n'est pas possible. Vous pouvez démarrer en mode mono-utilisateur en passant single
ou emergency
sur la ligne de commande du noyau. Notez que démarrer en mode mono-utilisateur n'est pas la même chose que démarrer le système normalement et se connecter en tant que root. Au lieu de cela, le système ne démarrera que les services définis pour le niveau d'exécution 1. En règle générale, il s'agit du plus petit nombre de services requis pour avoir un système utilisable.
Vous pouvez également accéder au mode mono-utilisateur en utilisant la commande telinit :telinit 1
; cependant, cette commande nécessite que vous ayez déjà obtenu les privilèges root via une autre méthode pour pouvoir s'exécuter.
Sur de nombreux systèmes, le démarrage en mode mono-utilisateur donnera à l'utilisateur l'accès à un shell root sans demander de mot de passe. Notamment, systemd
- les systèmes basés sur vous demanderont le mot de passe root lorsque vous démarrerez de cette façon.
Autres programmes
Calife
Calife vous permet d'exécuter des commandes en tant qu'autre utilisateur en tapant votre propre mot de passe, si autorisé. Il est similaire au sudo beaucoup plus répandu (voir ci-dessus). Calife est plus léger que sudo mais aussi moins configurable.
Op
Op vous permet d'exécuter des commandes en tant qu'autre utilisateur, y compris root. Ce n'est pas un outil complet pour exécuter des commandes arbitraires :vous tapez op
suivi d'un mnémonique configuré par l'administrateur système pour exécuter une commande spécifique.
Super
Super vous permet d'exécuter des commandes en tant qu'autre utilisateur, y compris root. La commande doit avoir été autorisée par l'administrateur système.
Exécuter une commande graphique en tant que root
PolicyKit (préféré lors de l'utilisation de GNOME)
Préfixez simplement la commande souhaitée avec la commande pkexec
. Sachez que même si cela fonctionne dans la plupart des cas, cela ne fonctionne pas universellement.
Voir man pkexec
pour plus d'informations.
KdeSu, KdeSudo (préféré lors de l'utilisation de KDE)
kdesu
et kdesudo
sont des interfaces graphiques pour su
et sudo
respectivement. Ils vous permettent d'exécuter des programmes X Window en tant que root sans tracas. Ils font partie de KDE. Saisissez
kdesu -c 'command --option argument'
et entrez le mot de passe root, ou tapez
kdesudo -c 'command --option argument'
et entrez votre mot de passe (si autorisé à exécuter sudo
). Si vous cochez l'option "conserver le mot de passe" dans KdeSu, vous n'aurez qu'à taper le mot de passe root une fois par session de connexion.
Autres programmes
Ktsuss
Ktsuss ("garder le su simple, stupide") est une version graphique de su.
Besu
Beesu est une interface graphique pour la commande su qui a remplacé Gksu dans les systèmes d'exploitation basés sur Red Hat. Il a été développé principalement pour RHEL et Fedora.
Méthodes obsolètes
gksu
et gksudo
gksu
et gksudo
sont des interfaces graphiques pour su
et sudo
respectivement. Ils vous permettent d'exécuter des programmes X Window en tant que root sans tracas. Ils font partie de Gnome. Saisissez
gksu command --option argument
et entrez le mot de passe root, ou tapez
gksudo command --option argument
et entrez votre mot de passe (si autorisé à exécuter sudo
).
gksu
et gksudo
sont obsolètes. Ils ont été remplacés par PolicyKit dans GNOME, et de nombreuses distributions (comme Ubuntu) ne les installent plus par défaut. Vous ne devez pas compter sur leur disponibilité ou leur bon fonctionnement.
Manuellement via l'une des méthodes basées sur le shell
Utilisez l'une des méthodes de la section "Exécuter une commande shell en tant que racine". Vous devrez vous assurer que ni le DISPLAY
la variable d'environnement ni la XAUTHORITY
l'environnement est réinitialisé lors de la transition vers root. Cela peut nécessiter une configuration supplémentaire de ces méthodes qui sort du cadre de cette question.
Dans l'ensemble, c'est une mauvaise idée, principalement parce que les applications graphiques liront et écriront les fichiers de configuration en tant que root, et lorsque vous essayez d'utiliser à nouveau ces applications en tant qu'utilisateur normal, ces applications n'auront pas la permission de lire leurs propres configurations.
Connexes :Macos - Exécuter la commande au lancement du terminal (macOS) ?Modifier un fichier en tant que root
Voir Comment modifier un fichier en tant que root ?