Lorsque je le fais su -
pour accéder à root, mon répertoire actuel est défini sur home de root. Existe-t-il de toute façon de conserver le répertoire actuel dans lequel j'étais, un peu comme sudo -s
. Ou est la réponse à utiliser sudo?
14
sudo su -c "zsh"
, dans mon cas, me maintient dans le répertoire actuel et charge zsh en tant que shell avec l'utilisateur root.ctrl+d
après et vous revenez à l'utilisateur actuel. Pour le répertoire, ça marche directement sur les centos pour moi, mais peut-être que l'ajout de `&& cd $ (pwd)` dans la commande passée pourrait faire l'affaire.Réponses:
Il est toujours préférable d'utiliser sudo, si possible, car vous n'avez alors pas besoin de connaître (ou de donner à quelqu'un) le mot de passe root. Définissez le mot de passe root sur quelque chose de long et d'horrible, puis verrouillez-le dans un coffre-fort.
Si vous souhaitez refuser l'accès à quelqu'un plus tard, vous supprimez simplement son accès à sudo, plutôt que d'avoir à enseigner à tous les autres un nouveau mot de passe root.
Cependant - vous n'avez pas besoin d'utiliser le paramètre '-' si vous ne le souhaitez pas. Vous obtiendrez un shell en tant que root, ce ne sera tout simplement pas un shell de connexion (il n'exécutera donc pas le .profile de root.)
la source
asuser git reset --hard
. Maissu - <user> -m -c "git reset --hard"
etsudo -u <user> git reset --hard
sauverait mon environnement et git essaierait de lire la configuration git de l'utilisateur actuel . Je voulais donc simplement dire que parfois la solution de user205705 utilisant su - <user> -c "cdpwd
; bash" est meilleure.Je suis d'accord que sudo est presque toujours une meilleure réponse mais pour répondre à l'autre partie de la question ...
Le «-» dans «su -» indique que vous souhaitez émuler une connexion de superutilisateur, plutôt que de simplement exécuter avec les privilèges de superutilisateur.
Si vous utilisez simplement «su» plutôt que «su -», vous resterez dans le même répertoire; Cependant, vous serez également exécuté dans le même environnement et devrez peut-être modifier votre chemin d'accès pour accéder à certaines commandes d'administration.
la source
Si vous utilisez
su
sans le-
, il devrait vous garder dans votre répertoire actuel.-
,-l
Ou--login
dire su à:Ou utilisez simplement sudo, il a beaucoup d'autres avantages. Ou les touches ssh.
la source
Vous devez absolument utiliser sudo.
Cela vous gardera dans le dossier lorsque vous passerez à root.
Avantages d'utiliser Sudo
la source
.bashrc
partir de l'utilisateur externe, pas le root.Si vous voulez vraiment l'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 que-c
ce qui signifie "exécuter une commande dans le nouveau shell-c "cd `pwd`"
la commande que nous donnons est de basculer vers le répertoire actuel (pwd
) - mais parce que nous utilisons les raccourcis, lapwd
commande est évaluée avant d'exécuter lasu
commande afin que nous basculions réellement vers le répertoire dans lequel nous nous trouvons MAINTENANT en tant qu'ancien utilisateur. 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 et le shell bash ne se ferme que lorsque nous nous déconnectons.la source
su - [user] -c "cd $(pwd); bash"
pourrait être un peu mieux (changez les backticks en$()
).Utilisez sudo :). Sérieusement, vous n'avez pas besoin de su. 'sudo' est meilleur car vous ne l'utilisez que pour des commandes privilégiées et peut aider à éviter les erreurs. Vous obtenez également la responsabilité.
la source
Si vous utilisez "su", cela fait un shell interactif. C'est la même chose que "sudo -s". "su -" crée un shell de connexion, qui remplacera l'environnement. "sudo -i" est l'équivalent de sudo. Si vous essayez d'obtenir un shell interactif, vous devez toujours utiliser le formulaire sudo -i (ou su -), ou il est possible de se retrouver avec des autorisations de fichier étranges dans le répertoire personnel d'un utilisateur.
la source
vous devez modifier la source de su pour que ce travail soit effectué. il y a un appel chdir dans une procédure d'initialisation des variables d'environnement. commenter ces déclarations inclus cet appel. et maintenant, vous pouvez faire "su -" mais conserve le répertoire courant.
la source