Problemas al ejecutar cd con sudo como otro usuario

Problemas al ejecutar cd con sudo como otro usuario

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 pasar el comando a sudo?

Respuesta1

cdes unshell incorporado. Necesita invocar el shell para ejecutar las funciones integradas del shell:

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

O

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

Respuesta2

cdno es un comando externo, es solo un shell integrado, por lo que sudono puede ejecutarlo. La razón por la que cdsólo existe como un 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 tuvo éxito).

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'

Respuesta3

Tiendo a usar: sudo su - USERNAMEy luego hacer lo que necesites como ese usuario. Para salir simplemente escribeexit

información relacionada