¿Hay un comando de línea única para hacer `su`?

15

Puedo hacer un sucon su <username>y me pide mi contraseña. ¿Hay un parámetro de contraseña para suque no se me solicite una contraseña?

p.ej su <username> -p <password>

alvas
fuente
Parece que la pregunta se ajusta perfectamente al superusuario: superusuario.com :-)
HongboZhu
1
lo tengo desde superuseraquí, superuser.com/questions/67765/...
alvas

Respuestas:

12

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
!
Brian
fuente
2
hmm, 'estándar debe ser un tty'
John Lawrence Aspden
Me sale el mismo error
MaxV
12
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

Wayne_Yux
fuente
1
su root script todavía necesita ingresar passwd.
Dai Kaixian
@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}

despojos mortales
fuente
Esto no responde la pregunta. La pregunta es sobre cómo manejar la contraseña.
Stephen C