Como escrever em arquivos protegidos usando o sudo e redirecionamento

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

[ Hits: 2.270 ]

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

Nginx - Redirecionando www para apenas o nome do domínio ou vice-versa

Programando em Python no VIM com recurso de auto-completar (python-jedi)

InstaPy: Error, unable to determine correct filename for 64bit linux [Resolvido]

Como reproduzir vídeos no Chromecast usando o VLC

Otimizando Digitação no Terminal Bash

Leitura recomendada

Comentários em blocos em Shell Script

Testando se o servidor está no ar, caso não esteja, a máquina é desligada

Verificando se um arquivo cabe dentro de um DVD

Redirecionar a porta 80 para 3128 com iptables, menos a tua máquina

Realizar cópia mantendo mesma permissão da pasta

  

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