ejecutar el comando después de cambiar a un usuario diferente con sudo

ejecutar el comando después de cambiar a un usuario diferente con sudo

Estoy intentando ejecutar este comando:

echo hello | sudo su - dp-postgres

Pero entiendo esto:

-bash: line 1: hello: command not found

También probé esto:

sudo su - dp-postgres -c 'echo hello'

Pero eso me pide la contraseña del usuario actual.

Necesito cambiar dp-postgresy luego ejecutar cualquier comando como dp-postgresusuario.

Respuesta1

sudocomando permite ejecutar un comando como otro usuario. De forma predeterminada, solicitará la contraseña del usuario actual, es el comportamiento normal (obviamente, el usuario también debe tener sudopermiso de uso). Si desea evitar el comportamiento de solicitud de contraseña, debe cambiar su /etc/sudoersarchivo y usar NOPASSWDla opción que le permitirá ejecutar Sudo sin que se le solicite una contraseña.

Para tu comando, puedes hacer algo como:

sudo su - dp-postgres <<-EOF
  echo hello
EOF

Su segundo comando debería funcionar también:

sudo su - dp-postgres -c 'echo hello'

Aquí hay un ejemplo :

$ sudo su - -c 'echo hello; id'
hello
uid=0(root) gid=0(root) groups=0(root)

No necesito contraseña por mi parte porque el usuario inicial está en el sudogrupo y tiene algo como eso:

%sudo   ALL=(ALL:ALL) NOPASSWD:ALL

En el /etc/sudoersarchivo.

Respuesta2

Como se ha escrito en otra parte, el sudocomando permite que un usuario debidamente autorizado ejecute un comando como otra persona. Por defecto, estoalguien máses root pero (sujeto a autorización) puede ser cualquier usuario. Además, de forma predeterminada sudosolicitará la contraseña del usuario actual.

Si desea ejecutar el echo hellocomando como dp-postgresusuario, puede hacer esto:

sudo -u dp-postgres echo hello

Si necesita configurar el entorno de inicio de sesión, incluya -i:

sudo -iu dp-postgres echo hello

Tenga en cuenta que estos dos ejemplos no cambian primero al rootusuario y luego al dp-postgresusuario, por lo que puede optar por configurar una sudoersentrada personalizada para permitir el acceso a este dp-postgresusuario pero no a root. Esta es una buena solución para un entorno multiusuario donde el acceso rootdebe estar restringido y/o administrado. (Sin embargo, observo que ya tiene acceso a root, por lo que no obtendrá nada con una segunda entrada, más restrictiva).

información relacionada