333 votos

Ejecutar una secuencia de comandos de shell como otro usuario que no tiene contraseña

Me gustaría ejecutar una secuencia de comandos de la parte principal de ubuntu shell como un usuario diferente que no tiene contraseña.

Tengo todos los privilegios de sudo, así que he intentado esto:

sudo su -c "Your command right here" -s /bin/sh otheruser

Entonces tengo que introducir mi contraseña, pero no estoy seguro de si el script es llamado en virtud de ese usuario.

¿Cómo puedo afirmar que el guión es realmente ejecuta bajo que el usuario ahora?

471voto

Steve Karg Puntos 11

Usted puede hacer eso con su o sudo, no es necesario tanto.

sudo -H -u otheruser bash -c 'echo "I am $USER, with uid $UID"' 

Las partes pertinentes de la man sudo:

       -H          The -H (HOME) option requests that the security policy set
                   the HOME environment variable to the home directory of the
                   target user (root by default) as specified by the password
                   database.  Depending on the policy, this may be the default
                   behavior.

--

       -u user     The -u (user) option causes sudo to run the specified
                   command as a user other than root.  To specify a uid
                   instead of a user name, use #uid.  When running commands as
                   a uid, many shells require that the '#' be escaped with a
                   backslash ('\').  Security policies may restrict uids to
                   those listed in the password database.  The sudoers policy
                   allows uids that are not in the password database as long
                   as the targetpw option is not set.  Other security policies
                   may not support this.

su sólo puede cambiar de usuario sin proporcionar una contraseña si eres root. Ver Caleb respuesta

141voto

Caleb Puntos 101

Si desea utilizar su vez de sudo, yo creo que se puede usar algo como esto:

su - <username> -c "<commands>"
  • - simulará un inicio de sesión de usuario especificado
  • -c dice que desea ejecutar un comando

ps. Por desgracia, yo no soy capaz de instalar ruby usando rvm con este método, pero que probablemente no relacionados.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: