Bash / proc / sys / net / ipv4 / ip_forward: autorizzazione negata


11

Ho provato a correre

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

Dice Accesso negato da bash, quindi ho fatto:

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

e ora dice Operazione non consentita.

Come posso ottenere l'accesso?


4
Prova questo:echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Doug Smythies,

Ha funzionato, puoi spiegare cosa fa il tee?
Kevin Hernandez,

3
Il problema sudo echo 1 > /proc/sys/net/ipv4/ip_forwardè che il reindirizzamento dell'output non viene eseguito come sudo, quindi non funziona. Dalla pagina man:, tee - read from standard input and write to standard output and filese se fatto in sudoquanto ha privilegi sufficienti per scrivere nel file.
Doug Smythies,

Risposte:


15

I bit di autorizzazione per il file /proc/sys/net/ipv4/ip_forwardsono:

-rw-r--r-- 

con owner:groupessere root:root.

Quindi solo rootpuò scrivere nel file.

Quando lo fai:

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

come utente normale, non sarai in grado di scrivere nel file a causa di un'autorizzazione insufficiente.

Tu puoi fare:

  • Usa sudoe bash:

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

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

Si noti che è necessario utilizzare /etc/sysctl.confper operazioni persistenti nelle /proc/syssottodirectory.

In breve, per abilitare l'inoltro IP, puoi semplicemente inserire quanto segue /etc/sysctl.conf:

net.ipv4.ip_forward = 1

Quindi eseguire:

sudo sysctl -p

per avere effetto immediato.

Ciò ha lo stesso effetto della modifica /proc/sys/net/ipv4/ip_forward diretta del file e per non parlare di molto più pulito e ovviamente persistente.


Fare eco 1 | sudo tee / proc / sys / net / ipv4 / ip_forward ha funzionato per me, puoi spiegarmi cos'è tee?
Kevin Hernandez,

1
@ChrisEthanFox teeè il comando per inviare tutto ciò che riceve sia sull'output standard che sui file. Checkman tee
heemayl

Ho effettuato l'accesso come root ma non riesco ancora a usare il comando rm ( rm /proc/sys/net/ipv4/icmp_echo_ignore_all) per rimuovere tale file! Ho anche controllato il bit immutabile e non è impostato su quel file ... Ottengo lo stesso errore "rm: impossibile rimuovere '/ proc / sys / net / ipv4 / icmp_echo_ignore_all': autorizzazione negata". Ma magicamente posso modificare il file come hai descritto! Non riesco a capire qual è il problema rm!
Mojtaba Rezaeian,

@MojtabaRezaeian È il kernel che impedisce la rimozione. /proccioè procfsvive nella memoria ed è esposta dal kernel. Quindi stai ottenendo una visione del kernel, e qualunque cosa il kernel ti permetta di fare ai file su tale FS è totalmente al di sopra del kernel.
heemayl

@heemayl Quindi come posso rimuovere quel file perché la creazione di quel file era un'opzione per disabilitare permanentemente le richieste di ping icmp sul mio server ma dopo aver creato quel file ora ho cambiato idea ma non c'è modo di rimuovere quell'opzione (anche se ora non è un'opzione quando non può essere cambiato!) hai idea di come farlo? o forse richiede di aprire un'altra domanda?
Mojtaba Rezaeian,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.