
Tento colocar o valor "1" em algum arquivo virtual /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
Acho que esse echo
comando é executado com permissões de root, mas o redirecionamento ( >
) talvez seja executado sem? Posso executar ambos com permissões de root?
Responder1
Neste caso, sudo
só 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