Lorsque je travaille sur la ligne de commande, je passe souvent à sudo en utilisant sudo -i
. Cependant, mon répertoire de travail devient automatiquement /root
. Je ne veux jamais y aller; Je veux rester où j'étais! Comment puis-je atteindre cet objectif?
25
sudo -iu
travaille pour moi ubuntuforums.org/…sudo -i
est toujours corrompu par les env vars de l'utilisateur. La seule façon d'éviter cela est d'utilisersu -l
.Si vous souhaitez utiliser
su
, il existe un moyen de rester dans le même répertoire.Que se passe t-il ici:
su - user
= se connecter en tant queuser
-c
ce qui signifie "exécuter une commande dans le shell du nouvel utilisateur"-c "cd `pwd`"
la commande que nous donnons est de basculer vers le répertoire courant (`pwd`
) - mais parce que nous utilisons les guillemets doubles entre guillemets, lapwd
commande est évaluée avant d'exécuter lasu
commande, de sorte que nous basculons réellement vers le répertoire dans lequel nous sommes MAINTENANT comme l'ancien utilisateur.-c 'cd `pwd`'
exécuterait lapwd
commande dans le nouveau shell, donc cela serait évaluécd /root
, ce qui, bien sûr, n'accomplirait rien.Le seul problème ici est que le nouveau shell se ferme juste après l'exécution de la commande, alors nous ajoutons:
-c "cd `pwd`; bash"
ce qui signifie "runbash
(nouveau shell) après avoir exécuté lacd
commande. Le shell bash ne se ferme que lorsque nous nous déconnectons.Notez que vous pouvez remplacer
`pwd`
par$(pwd)
. Ils sont fonctionnellement les mêmes, mais l'abondance de caractères de type citation peut devenir difficile à lire.la source
J'ai rencontré le même problème et je ne suis pas autorisé à exécuter autre chose que
sudo su - devuser
sur un serveur de développement, c'est donc ce que j'ai trouvé:Il monte une arborescence de processus et vérifie si l'utilisateur propriétaire du processus a changé.
la source