Problemas com a execução do cd com o sudo como outro usuário

12

Eu quero executar um comando em um shell em nome de outro usuário. O comando é o seguinte:

sudo -u USER cd /home/USER

Eu obtenho

sudo: cd: command not found

Qual é a sintaxe correta para o comando passar para o sudo?

    
por coffeMug 30.09.2013 / 15:40

4 respostas

14

cd é um shell embutido . Você precisa invocar o shell para executar builtins do shell:

sudo -u USER sh -c 'cd /home/USER'

OR

sudo -u USER bash -c 'cd /home/USER'
    
por 30.09.2013 / 16:13
5

cd não é um comando externo, é apenas um shell embutido, então sudo não pode executá-lo. A razão pela qual cd existe apenas como um shell embutido é que um processo não pode afetar o diretório atual de outro processo; portanto, um programa que altera o diretório atual e sai imediatamente é inútil. (Quase inútil: um programa cd retornaria um status que indica se foi bem-sucedido.)

Se você quiser mudar para um diretório e depois executar comandos como outro usuário, execute um shell que faça tudo isso.

sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething'
    
por 02.10.2013 / 03:01
1

Eu costumo usar: sudo su - USERNAME e depois fazer o que você precisa como usuário. Para sair basta digitar exit

    
por 17.06.2015 / 10:50
-2

Uma resposta (não recomendada se o acima funcionar):

Login ssh no outro usuário, por

$ ssh USER@localhost
Enter password:

e você pode fazer o que quiser como usuário.

    
por 30.09.2013 / 16:37