Tener problemas para ejecutar un comando como otro usuario en Ubuntu

Tener problemas para ejecutar un comando como otro usuario en Ubuntu

Estoy usando Ubuntu 14.04. Cuando inicio sesión como root, intento ejecutar un comando como otro (postgres). Sin embargo, está fallando

root@remotebox:/home/rails/myproject# su - postgres 'pg_upgradecluster 9.3 main'
-su: pg_upgradecluster 9.3 main: No such file or directory

¿Qué estoy haciendo mal?

Respuesta1

Estás intentando pasar 'pg_upgradecluster 9.3 main'al shell predeterminado para el usuario de Postgres. Dependiendo de la configuración del usuario de Postgres, esto puede significar ejecutar 'pg_upgradecluster 9.3 main'el archivo en la RUTA de Postgres, y esta es la razón por la que aparece el mensaje "No existe tal archivo o directorio".

Intente pasar el argumento como un comando (-c):

su - postgres -c 'pg_upgradecluster 9.3 main'

como una concha:

su - postgres -s /path/to/pg_upgradecluster -- 9.3 main

o para elegir explícitamente el shell:

su - postgres -s /bin/bash -- -c 'pg_upgradecluster 9.3 main'

información relacionada