Articles

Linux – Passer temporairement à un autre utilisateur Linux (en utilisant su)

Posted on

## Comment changer d’utilisateur ou devenir temporairement root

Annonce

Vous pouvez trouver tous mes derniers posts sur medium.

## Commandes couvertes dans cet article
id # Affiche le nom d’utilisateur de l’utilisateur actuellement connecté. Il affiche également les groupes auxquels l’utilisateur appartient.
su # Vous permet de (s)ercier à un autre (u)ser tout en étant connecté en tant que quelqu’un d’autre.
sudo # xxxxxxxxxxxxx

### Devenir l’utilisateur root en utilisant « su »
Dans linux, il est toujours recommandé d’éviter de se connecter directement en tant qu’utilisateur root. C’est parce que cela peut causer des problèmes de sécurité et augmente les chances d’endommager quelque chose. En fait, Centos affichera un message d’avertissement lorsque vous tentez une connexion directe à la racine.

La meilleure pratique est donc de toujours vous connecter en tant qu’utilisateur normal. Cependant, il y a beaucoup de commandes qui ne peuvent être exécutées qu’en tant qu’utilisateur root, et dans ces cas, la façon recommandée de les exécuter est d’utiliser l’utilitaire (s)witch (u)ser, qui vous permet de passer d’un utilisateur à un autre :

su – root # Cela vous permet de passer à l’utilisateur root. Je couvrirai l’argument « – » plus tard.
password # La commande su vous demande le mot de passe de l’utilisateur vers lequel vous basculez. Dans ce cas, c’est le mot de passe de l’utilisateur root.
id # La commande id affiche simplement sous quel utilisateur votre session s’exécute actuellement.

Notez, vous ne pouvez utiliser la commande su que si vous connaissez le mot de passe de l’utilisateur vers lequel vous basculez. La seule exception à cette règle est si vous êtes connecté en tant qu’utilisateur root, auquel cas vous pouvez su vers n’importe quel utilisateur sans demande de mot de passe.

login:
password:
id
su – # Si vous omettez le nom d’utilisateur, comme ici, alors par défaut, su supposera que vous voulez dire root.
password
id
su – Tom
id # Remarquez que nous n’avons pas eu besoin de saisir le mot de passe de Tom.

##Retour à l’utilisateur précédent
Dans l’exemple ci-dessus, nous sommes passés de John-=>root-=>Tom. Cela signifie que notre shell actuel a deux sessions de profondeur. Donc, si vous voulez revenir à John, alors vous pouvez utiliser la commande exit:

id
exit # Cela vous fait reculer d’une étape, qui dans ce cas est l’utilisateur root.
id
exit # Maintenant, vous êtes de retour à John, et vous ne pouvez plus sortir. Si vous essayez de sortir à nouveau, alors le terminal lui-même se fermera.

Au lieu de faire ce qui précède, vous auriez pu simplement faire :

su – John # dans ce cas, vous seriez à 3 sessions de profondeur, c’est-à-dire.c’est-à-dire John-=>root-=>Tom-=>John
# C’est une bonne pratique, lorsque cela est possible, de ne jamais aller plus profond que 3 niveaux. Sinon, vous pourriez commencer à rencontrer des comportements bizarres.

## Que signifie le « – » dans ‘su -‘ ?

Le premier paramètre, « -« , indique à su de faire comme si l’utilisateur se connectait directement. Sinon, l’environnement est transmis, à l’exception de $PATH, qui est contrôlé par PATH et SUPATH dans /etc/default/su.

Ce « – » signifie essentiellement démarrer la nouvelle session à partir de zéro, et ne pas porter de « bagage » de la session précédente. Par exemple, si vous créez une variable, et que vous l’exportez, alors cette variable n’est disponible que si vous ne démarrez pas une nouvelle session :

testvar=12345 # Ici, j’ai créé une nouvelle variable.
export testvar # Cela configure la variable pour qu’elle devienne disponible dans toutes les sessions.
su Tom # Puisque « – » est omis, le report est autorisé. La variable doit donc être accessible dans la nouvelle session.
password
echo testvar # La variable existe dans la nouvelle session.
exit
su – Tom # Comme « – » est spécifié , cela bloque tout report, afin d’imiter une connexion directe aussi proche que possible.
echo testvar # Renvoie un blanc puisque cette variable n’existe pas dans une session « fraîche ».

## Exécuter une seule commande en tant qu’autre utilisateur.
Vous pouvez utiliser su pour changer d’utilisateur juste assez longtemps pour exécuter une seule commande avant de revenir en arrière :

su – Tom -c ‘echo « Hello and Goodbye Tom’

Ou vous pouvez fusionner plusieurs commandes en une seule ligne en utilisant le point-virgule :

su – Tom -c ‘id ; echo « Hello and Goodbye Tom’

## Donner aux non-administrateurs l’accès à certains niveaux de la racine en utilisant sudo
Dans Linux, toutes les commandes/tâches de niveau administrateur qui ne peuvent être exécutées que par l’utilisateur root. Donc, s’il y a une activité particulière de niveau administrateur que vous voulez qu’un collègue effectue, alors une façon de le faire est de leur dire le mot de passe root. Cependant, ce n’est pas une bonne idée car :
1. pour des raisons de sécurité, c’est la meilleure pratique pour limiter autant que possible, qui a l’accès root.
2. vous leur donnez par inadvertance le contrôle total de tout le reste.

Un moyen de contourner ce dilemme est d’utiliser l’utilitaire sudo. Sudo permet de donner à un utilisateur la possibilité d’exécuter une ou plusieurs commandes de niveau administrateur (comme s’il était connecté en tant qu’utilisateur root, mais sans se connecter réellement en tant qu’utilisateur root).

Par exemple, seul root peut arrêter la machine :

shutdown # Ceci arrête une machine. Pour la rallumer, vous devez appuyer sur le bouton d’alimentation de la machine.

Si l’utilisateur, Tom, essaie d’utiliser la commande shutdown, alors il obtient un message de permission refusée:

<code=>

Si l’utilisateur root donne à Tom, sudo la permission d’utiliser la commande « shutdown ». Alors Tom devrait maintenant être en mesure d’exécuter la commande de niveau administrateur en la faisant précéder du mot sudo :

sudo {commande}

Comme indiqué ci-dessus, la syntaxe pour initier le sudo est le mot sudo suivi de la commande à exécuter :

Hence Tom peut invoquer son privilège sudo comme ceci :

shutdown # this wont work because sudo has not been invoked.
sudo shutdown # Cela a fonctionné, et la machine s’arrête.
<password=> # Comme su, vous devez entrer un mot de passe. Mais contrairement à su, vous entrez en fait le mot de passe de l’utilisateur actuel.
# C’est un peu exagéré puisque l’utilisateur est déjà connecté en tant que cet utilisateur. Heureusement, cette <l-anchor=>sudo password<l=> invite peut être désactivée.

Pour des raisons de sécurité, un journal est conservé de toutes les activités liées à sudo, au cas où un utilisateur abuserait de ses privilèges sudo.

L’utilisateur root doit <l=>configurer et attribuer les priveleges sudo<l=> afin d’attribuer les priveleges.

## La principale différence entre l’utilisation de su et sudo (pour exécuter des commandes d’administration)
Pour résumer, La principale différence pour exécuter des commandes de niveau administrateur en tant qu’utilisateur principal sont :

1. Pour utiliser su, vous devez connaître le mot de passe root, alors que pour sudo, ce n’est pas le cas
2. Avec sudo, vous devez préfixer chaque commande avec le mot « sudo », mais aucun préfixe n’est nécessaire avec su.
3. Avec su, vous pouvez exécuter n’importe quelle commande d’administration, mais avec sudo, vous ne pouvez exécuter que les commandes d’administration autorisées dans le fichier de configuration de sudo.

## Quelques faits utiles
L’utilisateur racine est parfois appelé le « superutilisateur ».
Une alternative à l’id comamnd « whoami » (mais ce n’est pas aussi informatif).
Il existe une convention selon laquelle pour un utilisateur racine, l’utilisateur prompt se termine par « # » alors que pour toute autre personne, il se termine par « $ ». En parlant de cela, il existe quelques façons de <l=>personnaliser l’invite de commande<l=>.

La commande id montre plus que les noms d’utilisateur et de groupe. Elle affiche également les numéros d’id correspondants à l’utilisateur et aux groupes. Vous pouvez également utiliser la commande id pour afficher les détails d’autres utilisateurs en dehors de l’utilisateur actuellement connecté :

id {nom d’utilisateur}

La commande id tire ses informations de /etc/passwd et /etc/group

## Sujets connexes
Configuration et attribution des privilèges sudo.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *