Bash / proc / sys / net / ipv4 / ip_forward: permissão negada

11

Eu tentei correr

echo 1 > /proc/sys/net/ipv4/ip_forward

Ele diz que Acesso negado do bash, então fiz:

sudo chmod 1+x /proc/sys/net/ipv4/ip_forward

e agora diz Operação não permitida.

Como posso obter acesso?

Kevin Hernandez
fonte
4
Tente isto:echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Doug Smythies
Isso funcionou, você pode explicar o que faz?
Kevin Hernandez
3
O problema sudo echo 1 > /proc/sys/net/ipv4/ip_forwardé que o redirecionamento da saída não é feito assim sudo, portanto não funciona. Na página de manual:, tee - read from standard input and write to standard output and filese se feito, sudoele possui privilégios suficientes para gravar no arquivo.
Doug Smythies

Respostas:

15

Os bits de permissão para o arquivo /proc/sys/net/ipv4/ip_forwardsão:

-rw-r--r-- 

com owner:groupser root:root.

Então, só rootpode escrever no arquivo.

Quando você faz:

echo 1 > /proc/sys/net/ipv4/ip_forward

como usuário normal, você não poderá gravar no arquivo devido à permissão insuficiente.

Você pode fazer:

  • Use sudoe bash:

    sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
  • Use tee:

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

Observe que você deve usar /etc/sysctl.confpara operações persistentes nos /proc/syssubdiretórios.

Em poucas palavras, para ativar o encaminhamento de IP, basta colocar o seguinte em /etc/sysctl.conf:

net.ipv4.ip_forward = 1

Então corra:

sudo sysctl -p

ter efeito imediato.

Isso tem o mesmo efeito que editar o arquivo /proc/sys/net/ipv4/ip_forward diretamente, sem mencionar muito mais limpo e, é claro, persistente.

heemail
fonte
Fazendo eco 1 | sudo tee / proc / sys / net / ipv4 / ip_forward funcionou para mim, você pode explicar o que é tee?
Kevin Hernandez
1
@ChrisEthanFox teeé um comando para enviar o que receber para a saída padrão e para os arquivos. Verifiqueman tee
heemayl
Estou logado como root, mas ainda não consigo usar o comando rm ( rm /proc/sys/net/ipv4/icmp_echo_ignore_all) para remover esse arquivo! Até chequei o bit imutável e não está definido nesse arquivo ... Recebo o mesmo erro "rm: não é possível remover '/ proc / sys / net / ipv4 / icmp_echo_ignore_all': permissão negada". Mas magicamente eu posso editar o arquivo como você descreveu! Não consigo perceber qual é o problema rm!
Mojtaba Rezaeian
@MojtabaRezaeian É o kernel que está impedindo a remoção. /procisto é, procfsvive na memória e é exposto pelo kernel. Então você está tendo uma visão do kernel, e o que quer que o kernel permita que você faça com os arquivos em um FS é totalmente dependente do kernel.
heemayl
@heemayl Então, como posso remover esse arquivo porque a criação desse arquivo era uma opção para desativar permanentemente as solicitações de icmp ping para o meu servidor, mas depois de criar esse arquivo, mudei de idéia, mas não há como remover essa opção (embora agora não seja a opção) quando não pode ser alterado!) você tem alguma idéia de como fazer isso? ou talvez exija abrir outra pergunta?
Mojtaba Rezaeian