Comment exécuter une commande en tant qu'administrateur système (racine)

66

J'ai besoin d'exécuter une commande avec des privilèges d'administrateur. Quelqu'un a dit que je devrais exécuter une commande en tant que root. Comment puis-je faire cela?

Stefan
la source
2
s'il vous plaît voir la méta discussion sur cette question
Stefan

Réponses:

94

Les deux principales possibilités en ligne de commande sont les suivantes:

  • Utilisez suet entrez le mot de passe root lorsque vous y êtes invité.
  • Placez-le sudodevant 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é en l'absence 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 autres. Si vous ne connaissez pas de mot de passe root distinct, utilisez cette méthode.

Sudo exige que vous tapez votre propre mot de passe. (Le but est de limiter les dommages si vous laissez votre clavier sans surveillance et déverrouillé, mais aussi de vous assurer que vous souhaitez vraiment exécuter cette commande sans qu’il s’agisse d’une faute de frappe.) Il est souvent configuré pour ne plus demander quelques minutes pour pouvoir exécuter plusieurs sudocommandes successivement.

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 -ipour cela:

$ sudo -i
# command 1
# command 2
...
# exit

Au lieu de sudo -i, vous pouvez utiliser sudo -s. La différence est que -ire i nitializes l'environnement par défaut sain d' esprit, alors que -sutilise vos fichiers de configuration pour le meilleur ou pour le pire.

Pour plus d'informations, consultez le site Web sudo ou tapez-le man sudosur votre système. Sudo est très configurable. Par exemple, il peut être configuré pour permettre à un utilisateur d'exécuter uniquement certaines commandes en tant que root. Lisez la sudoerspage de manuel pour plus d'informations. Utilisez sudo visudopour éditer le fichier sudoers.

su

La sucommande existe sur la plupart des systèmes de type Unix. Il vous permet d'exécuter une commande en tant qu'autre utilisateur, à condition de connaître le mot de passe de cet utilisateur. Lorsqu'il est exécuté sans utilisateur spécifié, sule compte racine est utilisé par défaut.

Exemple:

su -c 'service apache restart'

La commande à exécuter doit être passée à l'aide de l' -coption. 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 qui sus'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) à 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 en possédez, vous pouvez simplement taper rootà l'invite de connexion et entrer le mot de passe root. Soyez très prudent et évitez d'exécuter des applications complexes en tant qu'utilisateur 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 êtes bloqué 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 dans lesquelles il est impossible de démarrer à un niveau d'exécution multi-utilisateur. Vous pouvez démarrer en mode mono-utilisateur en passant singleou emergencysur la ligne de commande du noyau. Notez que le démarrage en mode mono-utilisateur n’a rien à voir avec le démarrage normal du système et la connexion en tant que root. Au lieu de cela, le système démarrera uniquement les services définis pour le niveau d'exécution 1. Il s'agit généralement du plus petit nombre de services requis pour disposer d'un système utilisable.

Vous pouvez également accéder à simple mode utilisateur en utilisant la commande telinit: telinit 1; toutefois, 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 racine sans demander de mot de passe. Notamment, les systemdsystèmes basés sur vous demanderont le mot de passe root lorsque vous démarrez de cette manière.

Autres programmes

Calife

Calife vous permet d'exécuter des commandes en tant qu'autre utilisateur en saisissant votre propre mot de passe, s'il y est autorisé. C'est semblable au sudo beaucoup plus répandu (voir ci-dessus). Calife est plus léger que sudo mais également 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 opsuivi 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'utilisateur différent, y compris root. La commande doit avoir été autorisée par l'administrateur système.

Exécuter une commande graphique en tant que root

Voir aussi Wikipedia .

PolicyKit (recommandé lors de l'utilisation de GNOME)

Préfixez simplement votre commande désirée avec la commande pkexec. Sachez que même si cela fonctionne dans la plupart des cas, cela ne fonctionne pas universellement.

Voir man pkexecpour plus d'informations.

KdeSu, KdeSudo (recommandé pour l’utilisation de KDE)

kdesuet kdesudosont des interfaces graphiques à suet sudorespectivement. Ils vous permettent d’exécuter des programmes X Window en tant qu’utilisateur root sans tracas. Ils font partie de KDE . Type

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 vous êtes autorisé à le faire sudo). Si vous cochez l'option «Conserver le mot de passe» dans KdeSu, il vous suffira de saisir le mot de passe root une fois par session.

Autres programmes

Ktsuss

Ktsuss («Keep the Su Simple, Stupid») est une version graphique de Su.

Beesu

Beesu est une interface graphique de 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

gksuet gksudosont des interfaces graphiques à suet sudorespectivement. Ils vous permettent d’exécuter des programmes X Window en tant qu’utilisateur root sans tracas. Ils font partie de Gnome . Type

gksu command --option argument

et entrez le mot de passe root ou tapez

gksudo command --option argument

et entrez votre mot de passe (si vous êtes autorisé à le faire sudo).

gksuet gksudosont obsolètes. Ils ont été remplacés par PolicyKit dans GNOME et de nombreuses distributions (telles que Ubuntu) ne les installent plus par défaut. Vous ne devriez 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écution d’une commande shell en tant que section racine". Vous devrez vous assurer que ni la DISPLAYvariable d'environnement ni l' XAUTHORITYenvironnement ne sont réinitialisés lors de la transition vers la racine. Cela peut nécessiter une configuration supplémentaire de ces méthodes qui ne relève pas de la portée de cette question.

Globalement, c'est une mauvaise idée, principalement parce que les applications graphiques lisent et écrivent les fichiers de configuration en tant que root. Lorsque vous essayez de les utiliser à nouveau en tant qu'utilisateur normal, ces applications ne sont pas autorisées à lire leurs propres configurations.

Editer un fichier en tant que root

Voir Comment modifier un fichier en tant que root?

Gilles
la source
2
Il est à noter que sudocela ne fonctionnera que si (1) il est installé et (2) si votre utilisation se trouve dans le fichier sudoers et qu'il est autorisé à effectuer l'opération.
n0pe
2
cela doit être mis à jour. pkexecremplace gksu/ gksudodans beaucoup de distributions de nos jours.
Strugee
1
@strugee - alliez-vous essayer de mettre à jour ceci? Les choses sous Redhat ne sont pas correctes non plus.
slm
8

Utiliser su:

$ su -c command

ou

$ su
# command
# exit

Dans les deux cas, le rootmot de passe vous sera demandé . Pour plus d'informations, voir la page de manuel .

Steven D
la source
3

Comme la question n'était pas spécifique à Linux, voici comment vous atteignez le même objectif sous Solaris 9+ (ou Trusted Solaris 8):

Solaris, depuis la version 9, inclut une suite d’outils affectueusement appelée contrôle d’accès basé sur le rôle (RBAC).

L'essentiel de RBAC est que, en accordant des autorisations et des droits, des utilisateurs et / ou des rôles, ou en attribuant des rôles à des utilisateurs, vous pouvez créer des modèles extrêmement détaillés pour savoir qui peut utiliser quels privilèges.

Essentiellement, vous identifiez l'autorisation dans / etc / security / auth_attr, puis vous leur accordez des utilisateurs ou des rôles dans / etc / user_attr.

Vous définissez des profils dans / etc / security / prof_attr. Vous associez ensuite des commandes à ces profils dans / etc / security / exec_attr, puis vous affectez ces profils aux utilisateurs du fichier / etc / user_attr.

Une fois ces opérations terminées, vous pfexec <command>exécutez la commande avec les privilèges ou autorisations accordées à cet utilisateur pour cette commande.

La bonne chose à propos de RBAC est qu’aucun privilège supplémentaire n’est accordé à la commande elle-même, ni à l’utilisateur, mais uniquement à la combinaison utilisateur + commande. Il est donc plus sûr de créer un + s binaire, ou simplement d’utiliser sudo pour permettre à un utilisateur d’exécuter à peu près n'importe quoi. (Je sais que vous pouvez verrouiller sudo, mais d'après mon expérience, la plupart des gens ne le font pas)

Un autre avantage de RBAC est que vous pouvez créer un compte de rôle root et attribuer ce rôle à des utilisateurs pouvant devenir root avec la commande 'su' et le mot de passe root. L'utilisateur root pourra également se connecter en mode mono-utilisateur, ce qui est meilleur (à mon avis) que le modèle Linux où vous pouvez désactiver le mot de passe root passwd -d rootou verrouiller le compte root passwd -l root, qui rendent la connexion en tant que root assez difficile quand quelque chose ne va pas.

Ben Rockwood publie un excellent article de blog sur RBAC, que vous pouvez consulter à la section Utilisation de RBAC sur (Open) Solaris .

Tim Kennedy
la source
3

Ou vous pouvez donner à certaines commandes une superpuissance. Je parle des autorisations spéciales dans lesquelles les commandes sont exécutées avec l'autorisation du propriétaire.

Obtenez le chemin de commande par #which <command>et définissez SUID ou SGID pour ce chemin.

Les bits PS-SUID et SGID doivent être donnés avec précaution. Ils peuvent rendre votre système peu sûr.

Ayush Goyal
la source