sudo permission denied

3

Eu corri este código:

sudo cat <<EOF | sudo sed -e "s,%,$,g" >/etc/init.d/dropbox
  echo "Hello World"
EOF

Mas mesmo assim, recebo "permissão negada", porque você precisa ser root para fazer alterações no diretório /etc/init.d. E de alguma forma, meu comando acima não funciona.

Existe uma maneira de resolver isso?

    
por 8k_of_power 21.10.2010 / 08:04

3 respostas

7

O redirecionamento para um arquivo é tratado pelo bash. Por conseguinte, não herda as permissões concedidas pelo sudo.

Use sudo tee para gravar em um arquivo como root.

Tente isto:

cat | sed -e 's,%,$,g' | sudo tee /etc/init.d/dropbox << EOF
  echo "Hello World"
EOF

Observe que $, entre aspas duplas pode ser interpretado.

    
por 21.10.2010 / 08:09
4

Você pode conceder-se direitos su-persistentes com% # sudo -s

então o seu comando (não precisa mais sudo) e saia com o% # exit

EDIT:
Eu suponho que você está perguntando sobre o Ubuntu porque sua pergunta está marcada com isso. Em outra distribuição como o Suse, você poderá usar o # su
em vez de # sudo -s

    
por 21.10.2010 / 08:07
0

Esta parte: sudo sed -e "s,%,$,g" >/etc/init.d/dropbox cen pode ser vista assim:

sudo somecommand --put the result of the sudo command into--> /etc/init.d/dropbox

Da mesma forma que isso:

ls somedirectory > filename
ls somedirectory --put the result of the ls command into--> filename

Isso significa que a gravação do arquivo será feita como seu usuário atual, não como root.

Você pode resolvê-lo usando tee como Benoit mostra em sua resposta.

    
por 21.10.2010 / 08:12