Como escrever em arquivos protegidos usando o sudo e redirecionamento

Publicado por Fábio Berbert de Paula em 11/05/2021

[ Hits: 2.408 ]

Blog: https://fabio.automatizando.dev

 


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!

Outras dicas deste autor

Como suprimir a emissão de luz azul da tela via linha de comando

Como forçar o tipo de arquivo no Vim

Instalando Driver Nvidia no Debian 10

Forçando quebra de linha em tabelas HTML usando PHP

Logitech Marble Mouse

Leitura recomendada

Testando se a conexão com a internet está ativa

Limpar cache da memória RAM

Como criar e manter um mirror do Slackware em seu próprio micro

Passagem de parâmetros para funções shell script

Vundle/Bundle - Plugin para o Vim

  

Comentários
[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.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]

[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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts