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

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

Tento colocar o valor "1" em algum arquivo virtual /proce 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

Acho que esse echocomando é executado com permissões de root, mas o redirecionamento ( >) talvez seja executado sem? Posso executar ambos com permissões de root?

Responder1

Neste caso, sudosó se aplicará a echo, como você disse.

Em vez disso, você poderia executar um shell elevado como este:

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'

Responder2

a maneira recomendada de fazer isso é canalizar para o programatee

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

Responder3

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

echo stuff | sudo tee /some/file/path

informação relacionada