Me gustaría crear un alias que haga algo como esto:
alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access'
Entonces, desde mi línea de comando, inicié sesión con un usuario de sudo y me gustaría escribir el alias userYYY
para que mi shell ahora esté registrado userYYY
y lo pwd
esté /a/path/that/only/userYYY/has/access
.
¿Cómo puedo hacer eso? Esto userYYY
es para ejecutar algunos procesos, y debe haber algo en su hogar. Por lo tanto, intenté cambiar su $ HOME usando:
sudo usermod -m -d /a/path/that/only/userYYY/has/access userYYY
Y luego desde mi shell con mi archivo sudoer lo hice sudo su userYYY
. Pero eso no funcionó. Lo único que funcionó fue sudo su -l userYYYY
pero eso abrió una nueva fiesta dentro de mi shell original ( -bash-4.1$ ....
).
En resumen, lo que quiero es simplemente evitar tener que escribir 2 líneas en mi shell:
sudo su userYYY
cd /a/path/that/only/userYYY/has/access
¿Algunas ideas?
bash: cannot set terminal process group (13964): Inappropriate ioctl for device\nbash: no job control in this shell
.bashrc
archivosudo
,cd
donde tener 2 líneas separadas no funcionaba.Una opción sería editar
~/.bashrc
el usuario objetivo y agregarcd
allí:fuente
Respuesta corta: no puedes. El
sudo su
comienza un nuevo shell que debe salir antes de que llegue a lacd
orden.fuente
Para mí, una combinación de
sudo
yscreen
funcionó:Este comando primero cambia al
vagrant
usuario. Luego, comovagrant
cambia el directorio/vagrant
y se ejecutanpm install
.fuente
Sé que esto es ligeramente diferente a la pregunta original, pero la idea es ejecutar el comando como un usuario diferente sin tener que escribir una contraseña cuando la política lo prohíba
sudo su <user> -c
.fuente