Problemas para ejecutar cd con sudo como otro usuario


12

Quiero ejecutar un comando en un shell en nombre de otro usuario. El comando es el siguiente:

sudo -u USER cd /home/USER

yo obtengo

sudo: cd: command not found

¿Cuál es la sintaxis correcta para que el comando pase a sudo?

Respuestas:


14

cdEs una concha incorporada . Debe invocar el shell para ejecutar los builtins de shell:

sudo -u USER sh -c 'cd /home/USER'

O

sudo -u USER bash -c 'cd /home/USER'

1
Esto realmente no hará nada útil --- el shell saldrá justo después de cd. OP probablemente quiere sudo -i.
derobert 01 de

5

cdno es un comando externo, es solo un shell incorporado, por sudolo que no puede ejecutarlo. La razón por la que cdsolo existe como shell incorporado es que un proceso no puede afectar el directorio actual de otro proceso; por lo tanto, un programa que cambia el directorio actual y sale inmediatamente es inútil. (Casi inútil: un cdprograma devolvería un estado que indica si fue exitoso).

Si desea cambiar a un directorio y luego ejecutar comandos como otro usuario, ejecute un shell que haga todo eso.

sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething'

1

Tiendo a usar: sudo su - USERNAMEy luego hago lo que necesita como ese usuario. Para salir simplemente escribaexit


3
iniciar sesión como USERNAMEy luego ejecutar el comando es diferente que ejecutar el comando directamente comoUSERNAME
Pandya
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.