Conceder permissão para saída de redirecionamento com sudo no Linux

1

Eu tento colocar o valor "1" em algum arquivo virtual de /proc , e recebo "permissão negada" apesar de usar sudo :

name@comp-name:/etc/dhcp$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward 
bash: /proc/sys/net/ipv4/ip_forward: Permission denied

Eu acho que o comando echo é executado com permissões de root, mas o redirecionamento ( > ) talvez seja executado sem? Posso executar os dois com permissões de root?

    
por Rodnower 03.11.2012 / 15:02

3 respostas

4

Nesse caso, sudo só será aplicado a echo , como você disse.

Em vez disso, você pode executar um shell elevado assim:

sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

Ou ainda mais curto:

sudo -s 'echo 1 > /proc/sys/net/ipv4/ip_forward'
    
por 03.11.2012 / 15:14
0

a maneira recomendada de fazer isso é canalizar para o programa tee

echo 1 | tee /proc/sys/net/ipv4/ip_forward

    
por 03.11.2012 / 16:05
0

O problema é que o redirecionamento é feito pelo seu shell, não sudo . Normalmente, o programa que você executa recebe exec() ed após o redirecionamento. Como você não tem permissão para gravar no arquivo, o redirecionamento falha. Como mencionado acima, a maneira recomendada é usar tee , como em

echo stuff | sudo tee /some/file/path
    
por 03.11.2012 / 18:38

Tags