Cuando hago su -
para llegar a la raíz, mi directorio actual se establece en la página de inicio de la raíz. ¿Hay alguna forma de mantener el directorio actual en el que estaba, al igual que sudo -s
? ¿O es la respuesta para usar sudo?
14
sudo su -c "zsh"
, en mi caso, me mantiene en el directorio actual y cargar zsh como shell con el usuario root.ctrl+d
después y vuelve al usuario actual. Para el directorio, funciona directamente en centos para mí, pero tal vez agregar `&& cd $ (pwd)` dentro del comando pasado podría ser el truco.Respuestas:
Siempre es mejor usar sudo, si es posible, porque entonces no necesita saber (o dar a alguien) la contraseña de root. Establezca la contraseña de root en algo largo y horrible y luego guárdela en una caja fuerte.
Si desea denegar el acceso a alguien más tarde, simplemente elimine su acceso a sudo, en lugar de tener que enseñar a todos los demás una nueva contraseña de root.
Sin embargo, no necesita usar el parámetro '-' si no lo desea. Obtendrá un shell como root, simplemente no será un shell de inicio de sesión (por lo que no ejecutará el .profile de root).
fuente
asuser git reset --hard
. Sin embargo,su - <user> -m -c "git reset --hard"
ysudo -u <user> git reset --hard
ahorraría mi entorno y git podría tratar de leer actual git config del usuario. Así que solo quería decir que a veces la solución de user205705 usando su - <user> -c "cdpwd
; bash" es mejor.Estoy de acuerdo en que sudo es casi siempre una mejor respuesta, pero para responder la otra parte de la pregunta ...
El '-' en 'su -' indica que desea emular un inicio de sesión de superusuario, en lugar de simplemente ejecutarlo con privilegios de superusuario.
Si usa 'su' simple en lugar de 'su -' permanecerá en el mismo directorio; sin embargo, también se ejecutará en el mismo entorno, por lo que es posible que deba modificar su ruta para acceder a algunos comandos de administrador.
fuente
Si usa
su
sin el-
, debería mantenerlo en su directorio actual.-
,-l
O--login
decirle a su para:O simplemente use sudo, tiene muchas otras ventajas. O teclas ssh.
fuente
Definitivamente deberías usar sudo.
Eso lo mantendrá en la carpeta cuando cambie a root.
Beneficios de usar sudo
fuente
.bashrc
usuario externo, no el raíz.Si realmente quiere usar
su
, hay una manera de permanecer en el mismo directorio.Que está pasando aqui:
su - <user>
= iniciar sesión como-c
lo que significa "ejecutar un comando en el nuevo shell-c "cd `pwd`"
el comando que le damos es cambiar al directorio actual (pwd
), pero debido a que usamos los backticks, elpwd
comando se evalúa antes de ejecutar elsu
comando para que realmente cambiemos al directorio en el que estamos AHORA como el usuario anterior. El único problema aquí es que el nuevo shell sale justo después de ejecutar el comando, por lo que agregamos:-c "cd `pwd`; bash"
lo que significa "ejecutarbash
(nuevo shell) después de ejecutar elcd
comando y el shell bash no se cierra hasta que cerramos la sesión.fuente
su - [user] -c "cd $(pwd); bash"
podría ser un poco mejor (cambie los backticks a$()
).Usa sudo :). En serio, no necesitas su. 'sudo' es mejor ya que solo lo usa para comandos privilegiados y puede ayudar a evitar errores. También obtienes responsabilidad.
fuente
Si usa "su", hace un shell interactivo. Esto es lo mismo que "sudo -s". "su -" crea un shell de inicio de sesión, que anulará el entorno. "sudo -i" es el equivalente con sudo. Si está intentando obtener un shell interactivo, siempre debe usar el formulario sudo -i (o su -), o es posible terminar con permisos de archivos extraños en el directorio de inicio de un usuario.
fuente
debe modificar la fuente de su para realizar este trabajo. hay una llamada a chdir en un procedimiento de inicialización de variables de entorno. comentar esas declaraciones incluidas esa llamada. y ahora, puede hacer "su -" pero mantiene el directorio actual.
fuente