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.116 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.

Python - locale.Error: unsupported locale setting [Resolvido]

Como recompilar um vídeo/áudio aumentando ou diminuindo seu volume original

Python - capturar a saída do programa em um arquivo ou variável

E-book GRATUITO de Shell Script do Júlio Neves

Inicialização do Sistema

Script para o netfilter (iptables)

Curso de Shell Script Avançado

Redimensionando e renomeamento imagens em massa

Configurar Gedit para compilar e executar scripts em PASCAL

Monitoramento de link de internet de servidores

#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.