Pular para o conteúdo

Como escrever em arquivos protegidos usando o sudo e redirecionamento

Dica publicada em Shell Script / Avançado
Fábio Berbert de Paula fabio
Hits: 3.117 Categoria: Shell Script Subcategoria: Avançado
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Como escrever em arquivos protegidos usando o sudo e redirecionamento

Você está como usuário comum e deseja escrever usando direcionamento de saída para um arquivo que requer permissão de root para escrita:

echo 1 > /proc/sys/net/ipv4/ip_forward
bash: /proc/sys/net/ipv4/ip_forward: Permission denied

Beleza, vamos tentar com o sudo?

sudo echo 1 > /proc/sys/net/ipv4/ip_forward
bash: /proc/sys/net/ipv4/ip_forward: Permission denied

Opa, mesmo erro? Sim! Isso ocorre porque o sudo executou o comando echo como superusuário, mas após o redirecionamento de saída você volta a ter permissão de usuário comum.

Para resolver esse problema usamos o comando "tee" combinado com o sudo:

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

Espero ter ajudado!

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Estatísticas completas do mercado de browsers

Catálogo de efeitos de texto para Gimp

Fez porcaria no teu repositório Git? Aprenda a restaurar uma versão anterior do seu código!

PHP - "Notice: Use of undefined constant..." [Resolvido]

Como converter um vídeo MP4 para um GIF para publicar no README.md do seu repositório Github

Shell - operações envolvendo números em ponto flutuante

FreeBSD - PF + Altq + MRTG

CGI + Shell Script: gerando listagem de IPs disponíveis em sua rede

Como criar um cronômetro em modo texto

Capturando range de IP via terminal

#1 Comentário enviado por Ryuk em 11/05/2021 - 09:51h
Beleza! Outra opção é usar o "su -c 'comando'":
$ su -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
#2 Comentário enviado por danniel-lara em 11/05/2021 - 11:07h

Muito bom
#3 Comentário enviado por fabio em 11/05/2021 - 11:47h

[1] Comentário enviado por Ryuk em 11/05/2021 - 09:51h

Beleza! Outra opção é usar o "su -c 'comando'":
$ su -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'


Boa! O problema do "su -c" é que ele vai pedir a senha, o que torna a solução inviável em scripts de automação, que deve ser o caso da maioria que irá cair de paraquedas nessa dica. Eu inclusive cheguei à essa solução por causa de um script meu que precisava escrever nesse arquivo kkk
#4 Comentário enviado por BRVN01 em 11/05/2021 - 13:06h

Muito bom, bem mais simples do que eu usava, vou começar a usar essa sua solução, obrigado!

Eu usava assim:
sudo bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
#5 Comentário enviado por maurixnovatrento em 13/05/2021 - 20:08h

Eu usava esse comando. Muito bom. Mas o redirecionamento pode ser utilizado sim, só que dessa maneira:

sudo sh -c 'comando > saida'

Funciona também.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento
#6 Comentário enviado por maurixnovatrento em 13/05/2021 - 20:11h

[4] Comentário enviado por BRVN01 em 11/05/2021 - 13:06h


Muito bom, bem mais simples do que eu usava, vou começar a usar essa sua solução, obrigado!

Eu usava assim:
sudo bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward"


Opa. Só agora que vi, já tinhas colocado essa opção, é como eu usaria. Outra coisa, dentro do script eu coloco normal sem sudo. Só daí o script todo deve ser executado como root. Eu faço assim, pra não ter problemas com isso.

Contribuir com comentário

Entre na sua conta para comentar.