====== su ======
* Objet : su
* Niveau requis : {{tag>débutant avisé}}
* Commentaires : //Changer de session en console ou dans un terminal. //
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
* Suivi :
* Création par [[user>mattux]] le 07/06/2007
* Mise à jour par [[user>smolski]] le 02-10-2013
* Testé par [[user>Mercredi]] le 17/12/2015
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=1451 | Ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
===== Fonction =====
La commande ''su'' dans un terminal(([[:doc:systeme:terminal]])) ou une console(([[:doc:systeme:console]])) permet de devenir un autre utilisateur pour la durée d'une session ou, si on n'indique aucun //user//((session utilisateur)) de prendre les privilèges **root** (voir le tuto de : [[doc:systeme:superutilisateur|l'Administrateur]]).
La commande su utilise alors les privilèges du compte root à la place du vôtre.
En effet, le symbole ''#'' apparaît à la fin de l'invite à la place du symbole ''$'', ce qui signifie que les commandes suivantes seront exécutées en tant qu'Administrateur.
La commande ''su -'' ouvre la session administrateur qui permet de passer des commandes de n'importe quel chemin, c'est l'intérêt de la variable $PATH.
* Pour l'utiliser, entrez ''su -'' dans un terminal puis entrez le mot de passe root.
* Pour quitter, tapez ''exit'' ou utilisez la combinaisons de 2 touches : ''Ctrl d''. \\ Vous verrez alors le symbole $ et non plus # , ce qui signifie que vous utilisez de nouveau le système en tant qu'utilisateur normal.
===== su sous buster =====
Sur Debian 9((stretch)), un simple su
mettait ''/sbin'' dans cette variable, mais plus à partir de Debian 10 où il faut faire :
su -
ou
su -l
-, -l, --login
Appelle le shell sous forme de shell de connexion.
Voici ce que cela signifie : Invalider toutes les
variables d'environnement sauf `TERM', `HOME', et
`SHELL' (qui sont renseignées comme décrit ci-
dessus), ainsi que `USER' et `LOGNAME' (qui sont
alors remplies même pour l'Administrateur).
Remplir `PATH' avec une valeur par défaut donnée
lors de la compilation. Se déplacer dans le réper
toire HOME de l'utilisateur. Ajouter "-" au nom du
shell, pour que celui-ci lise son ou ses fichiers
de démarrage.
Source: man su
**seb95** : \\
//Et pourquoi ça ne posait pas de soucis avant et sur buster c'est plus le cas ?//
**enicar** : \\
Parce qu'avant le « su » seul n'aurait jamais du se comporter comme
« su -l », mais c'était le cas. \\
En quelque sorte le « su » d'avant ne respectait pas la norme posix, alors que maintenant, il la respecte.
===== Syntaxe =====
su -
Vous noterez le tiret après la commande, il est important depuis Buster afin d'avoir des variables d'environnement correctement initialisées, la variable PATH notamment.
===== Utilisation =====
Pour débuter une session sous un login //utilisateur// particulier, utilisé lorsqu'il y a plusieurs user de disponibles enregistrés sur le même pc, tapez et validez :
su - le_login
ou encore su -l le_login
Où ''le_login'' est à remplacer totalement par le nom ''user'' tout simplement.
Pour débuter une session ''root'' utilisez simplement :
su -
**ATTENTION !** ''root'' se doit de ne lancer que des logiciels très sûrs, afin de ne pas risquer de causer de faille de sécurité. En particulier, n'utilisez pas votre client IRC, un plugin Flash, ou tout autre faille de sécurité sur pattes, depuis votre session root.
==== Exemple ====
=== Connexion root ===
su -
Mot de passe :[passwd_root]
Lorsque vous tapez votre mot de passe pour la première fois vous avez l'impression qu'il y a quelque chose qui cloche avec votre système. En effet, vous tapez les caractères le composant et le curseur semble bloqué, il ne bouge pas et rien n'apparaît à l'écran.
Pour les débutants, un tel comportement est pour le moins déroutant. \\
Rassurez-vous, tout est correct, le système est conçu comme cela : __c'est une mesure de sécurité__.
Rien ne bouge à l'écran mais tout ce que vous tapez au clavier est pris en compte. En le validant((appuyer sur la touche [Entrée])) cela permet d'ouvrir la session indiquée.
Remarquez aussi que la ligne de commande en session user se termine par un ''$'' qui devient un ''#'' en session root.
C'est une indication couramment employée dans les tutos linux pour indiquer la session sous laquelle opérer la commande qui suit ce signe((Le signe $ ou # n'est donc pas à recopier dans l'énoncé de la commande indiquée)). \\
Le signe # est devant la ligne de commande si la commande s'opère en //root// exclusivement :
# [commande_linux]
Le signe $ est devant la ligne de commande s'opérant en //user//.
$ [commande_linux]
**ATTENTION** ! Toujours privilégier l'usage d'un terminal user sur celui d'un terminal root... On vous aura prévenu !
=== Session root option (-) ===
Passer en [[doc:systeme:superutilisateur|session root]] en allant directement dans le répertoire personnel du compte root et (non depuis le répertoire d'où vous vous trouvez) ainsi :
su -
Mot de passe:[passwd_root]
Une intervention sous session root peut être dévastatrice. \\ Voir pour exemple une précaution à prendre avec [[:doc:systeme:rm | la commande rm]] ici : [[:doc:systeme:rm#vigilance | Commande rm, vigilance !]]
=== Session user ===
Par exemple, pour un user se nommant //toto//, on tape :
su - toto
ou su -l toto
Mot de passe :[passwd_toto]
=== Session root temporaire option (-c) : ===
Par mesure de sécurité, on peut choisir de ne passer qu'une seule ligne de commande par exemple [[:doc:systeme:fdisk|la commande d'administration fdisk]] réservée à root et que le terminal demeure en session_user après son exécution avec l'option -c ainsi :
su - -c 'fdisk -l'
ou su -lc 'fdisk -l'
Mot de passe :[passwd_root]
//Donnera la réponse ci-dessous (par exemple pour mon pc...) ://
Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00095bb2
Device Boot Start End Blocks Id System
/dev/sda1 1 36 289138+ 83 Linux
/dev/sda2 37 19457 155999182+ 5 Extended
/dev/sda5 6689 19457 102566961 83 Linux
/dev/sda6 37 607 4586494+ 83 Linux
/dev/sda7 608 1823 9767488+ 83 Linux
/dev/sda8 1824 4255 19535008+ 83 Linux
/dev/sda9 4256 4863 4883728+ 83 Linux
/dev/sda10 4864 6079 9767488+ 83 Linux
/dev/sda11 6080 6688 4891761 82 Linux swap / Solaris
.../...
Et nous restons en user après cette commande validée en root.
N'omettez pas les quotes simples (') encadrant la commande //fdisk//.
//Et voilà aussi simple que ça, pas possible.// ^_^
===== Nota de geek =====
//Quittez la session ou le terminal en tapant la combinaison des touches clavier : // C-d //ça l'fait geek grave...// \\
De **tetrix** sur le forum là :
* http://debian-facile.org/forum/viewtopic.php?pid=38912#p38912
===== Liens =====
* [[https://fr.wikipedia.org/wiki/POSIX]]
* [[https://debian-facile.org/viewtopic.php?id=24871]]
* [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=833256|Le rapport de bug (en anglais) qui explique le pourquoi du comment du changement opéré pour Buster]]
* [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=905409|Le rapport de bug (en anglais toujours) cité dans la note de version de Debian 10]]
* [[https://debian-facile.org/viewtopic.php?pid=307289#p307289]]
* [[https://debian-facile.org/viewtopic.php?pid=305980#p305980]]