Problemas com a execução de cd com 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 recebo

sudo: cd: command not found

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

Respostas:


14

cdé um shell embutido . Você precisa chamar o shell para executar os recursos internos do shell:

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

OU

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

1
Isso realmente não fará nada de útil - o shell sairá logo após o cd. OP provavelmente quer sudo -i.
Derobert #

5

cdnão é um comando externo, é apenas um shell embutido, portanto sudonão pode executá-lo. A razão pela qual cdexiste 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 cdprograma retornaria um status que indica se foi bem-sucedido.)

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

sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething'

1

Eu costumo usar: sudo su - USERNAMEe, em seguida, faça o que você precisa como usuário. Para sair, basta digitarexit


3
logon como USERNAMEe, em seguida, executar o comando é diferente que a execução direta de comando comoUSERNAME
Pandya
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.