Page 1 sur 1

[bashrc]su et su -

Publié : sam. 28 déc. 2013, 12:53
par rroo
bonjour
J'ai une question concernant le bashrc.
Je voudrais modifié le prompt(PS1) de su - pour le différencié du prompt su.
Mais je n'arrive pas a savoir ou se trouve le bashrc de su -,en effet la modification de su dans /root/.bashrc
modifie également su -.
Si quelqu'un peut m'aider

merci

Re: [bashrc]su et su -

Publié : sam. 28 déc. 2013, 18:39
par jean_no
Salut

pour passer en root, c'est:

Code : Tout sélectionner

su -
et jamais, jamais, jamais Pour t'en convaincre, ouvre une console et saisis en user, en su et en su -

A+

Re: [bashrc]su et su -

Publié : sam. 28 déc. 2013, 18:44
par karhu
Bonjour

D'après mes souvenirs la commande su te permet de changer d'utilisateur tout en restant dans ton environnement.
Alors que la commande su - te fait changer d'utilisateur et d'environnement, c'est comme si tu t'étais connecté sous cette identité.

Re: [bashrc]su et su -

Publié : sam. 28 déc. 2013, 18:58
par FoolEcho
@jean_no et karhu: ce n'est pas la question. :P
rroo a écrit :Je voudrais modifié le prompt(PS1) de su - pour le différencié du prompt su.
Mais je n'arrive pas a savoir ou se trouve le bashrc de su -,en effet la modification de su dans /root/.bashrc
Ce n'est pas possible, je pense. Car, si je ne me trompe pas, le prompt fait justement partie des variables qui sont modifiées, qu'il s'agisse de su ou de su -.

Re: [bashrc]su et su -

Publié : sam. 28 déc. 2013, 19:11
par karhu
@FoolEchoo exact, je me suis mal exprimé. Il aurait fallu écrire :
Tu ne pourras pas car :
su change d'utilisateur (root) en gardant l'environnement présent.
su - change d'utilisateur (root) en prenant son environnement (root).

@jean_no su et su -ne sont réservées au passage en superutilisateur que sans argument.

Par contre un su <user> ou su - <user> de met bien dans l'environnement <user>.

Re: [bashrc]su et su -

Publié : sam. 28 déc. 2013, 19:46
par widapit
Salut !

Désolé de vous contredire mais chez moi, j'ai bien 2 prompts différents .
L'invit de "su -" est modifiée via le fichier /etc/bash.bashrc et celle de "su" avec

Code : Tout sélectionner

su
mot de passe :
# vim ~/.bashrc
:chinois:

Re: [bashrc]su et su -

Publié : sam. 28 déc. 2013, 20:15
par rroo
je vient de faire le changement comme tu l'a indiquer widapit mais je n'ai pas de changement...
Esque ca a un rapport avec les PS2 PS3 PS4 ?

Re: [bashrc]su et su -

Publié : sam. 28 déc. 2013, 20:18
par karhu
@widapit
su - est comme une connexion en root est ceux sont les fichiers /root/.profile et /root/.bashrc (s'il existe) qui sont appliqués en final. Ceux de /etc ne le sont qu'au démarrage (du moins je crois).
Si tu modifies le fichier ~/.bashrc après un su il ne faudra pas omettre de le remettre dans son état originel avant de déconnecter ce nouvel utilisateur. :wink:

Re: [bashrc]su et su -

Publié : sam. 28 déc. 2013, 20:58
par widapit
si je ne m'abuse, le /etc/bash.bashrc est effectivement lu au début, et vaut par défaut pour tout utilisateur, sauf si celui-ci a un ~/.bashrc qui prendra le dessus...
Vu que les modifs sur un ~/.bashrc ne sont pas prises en compte pour la session en cours, ça va faire beaucoup de manip' si tu l'effaces à chaque déconnexion ! :?
De plus, le ~/.bashrc créé lors d'une session en "su" ne semble pas affecter le comportement d'une session avec "su -"
voici ce que ça peut donner : http://pix.toile-libre.org/?img=1388260896.png :mrgreen:

Re: [bashrc]su et su -

Publié : sam. 28 déc. 2013, 23:00
par rroo
j'ai bien vu ton screen widapit mais désolé je ne comprend tjrs pas ou se trouve le troisiéme profil(su -) :cry:

Re: [bashrc]su et su -

Publié : sam. 28 déc. 2013, 23:11
par widapit
Il n'y a pas de 3° profil...
Pour la session en "su -", ce sont les valeurs par défaut qui se trouvent dans /etc/bash.bashrc qui sont prises en compte .

Re: [bashrc]su et su -

Publié : dim. 29 déc. 2013, 00:10
par benjarobin
Pour répondre à la question initiale, il suffit pour cela de faire une condition sur une variable d'environnement.
Pour moi, USER n'est pas mis à jour avec su, uniquement avec su -
Donc il suffit de faire, ceci

Code : Tout sélectionner

if [ "$USER" != "root" ]; then
    echo "=====> Attention utilisation de su au lieu de su -"
fi
Pour l'exemple j'affiche un message, mais tu peux très bien modifier le style du prompt