Tendo problemas para executar um comando como outro usuário no Ubuntu

Tendo problemas para executar um comando como outro usuário no Ubuntu

Estou usando o Ubuntu 14.04. Quando logado como root, estou tentando executar um comando como anotehr (postgres). No entanto, está falhando

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

O que estou fazendo de errado?

Responder1

Você está tentando passar 'pg_upgradecluster 9.3 main'para o shell padrão do usuário postgres. Dependendo da configuração do usuário do postgres, isso pode significar executar 'pg_upgradecluster 9.3 main'o arquivo no postgres PATH, e este é o motivo pelo qual você recebe um erro "Nenhum arquivo ou diretório".

Tente passar o argumento como um comando (-c):

su - postgres -c 'pg_upgradecluster 9.3 main'

como uma concha:

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

ou para explicitar escolha o shell:

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

informação relacionada