
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-postgres
y luego ejecutar cualquier comando como dp-postgres
usuario.
Respuesta1
sudo
comando 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 sudo
permiso de uso). Si desea evitar el comportamiento de solicitud de contraseña, debe cambiar su /etc/sudoers
archivo y usar NOPASSWD
la 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 sudo
grupo y tiene algo como eso:
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
En el /etc/sudoers
archivo.
Respuesta2
Como se ha escrito en otra parte, el sudo
comando 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 sudo
solicitará la contraseña del usuario actual.
Si desea ejecutar el echo hello
comando como dp-postgres
usuario, 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 root
usuario y luego al dp-postgres
usuario, por lo que puede optar por configurar una sudoers
entrada personalizada para permitir el acceso a este dp-postgres
usuario pero no a root
. Esta es una buena solución para un entorno multiusuario donde el acceso root
debe 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).