Si desea escribir un script que se ejecute como un usuario diferente, algo como esto funciona, aunque genera la palabra "contraseña" sin una nueva línea para la salida estándar
su - username <<!
enterpasswordhere
enter commands to run as the new user
!
si tiene un usuario llamado fred con una contraseña de 1234 y desea obtener un directorio de inicio de ls of fred como fred, sin la cadena de contraseña mostrada, se vería como
su - fred <<! >/dev/null 2>&1
1234
whoami > /dev/tty
ls > /dev/tty
!
Se obtiene un error: su: must be run from a terminal.
Abhishek Kashyap
5
Creo que no existe y no sería una buena idea. He aquí por qué:
si escribe una contraseña en un comando como su <username> -p <password>, se almacenaría en texto sin formato en su historial de bash. Este es ciertamente un gran problema de seguridad.
Si necesita ejecutar comandos con su(o sudo) de forma automática, escriba un shellscript que contenga los comandos sin suo sudoy ejecutesu <username> script.sh
@DaiKaixian sí, pero no se guarda en ningún lado y nadie puede leerlo
Wayne_Yux
2
puede intentar algo como:. echo <passwd> | sudo -S <command-line>Aunque no es seguro, pero funciona.
Dai Kaixian
1
Todo el punto de mi respuesta es que no es seguro escribir una contraseña en un comando. Así que aconsejo no hacer eso
Wayne_Yux
-3
Si desea ejecutar algunos comandos específicos como un nuevo usuario, use el siguiente comando: sudo -u {username} {command to be executed as the new user}
superuser
aquí, superuser.com/questions/67765/...Respuestas:
Si desea escribir un script que se ejecute como un usuario diferente, algo como esto funciona, aunque genera la palabra "contraseña" sin una nueva línea para la salida estándar
si tiene un usuario llamado fred con una contraseña de 1234 y desea obtener un directorio de inicio de ls of fred como fred, sin la cadena de contraseña mostrada, se vería como
fuente
su: must be run from a terminal
.Creo que no existe y no sería una buena idea. He aquí por qué:
si escribe una contraseña en un comando como
su <username> -p <password>
, se almacenaría en texto sin formato en su historial de bash. Este es ciertamente un gran problema de seguridad.Si necesita ejecutar comandos con
su
(osudo
) de forma automática, escriba un shellscript que contenga los comandos sinsu
osudo
y ejecutesu <username> script.sh
fuente
su root script
todavía necesita ingresar passwd.echo <passwd> | sudo -S <command-line>
Aunque no es seguro, pero funciona.Si desea ejecutar algunos comandos específicos como un nuevo usuario, use el siguiente comando:
sudo -u {username} {command to be executed as the new user}
fuente