Bash / proc / sys / net / ipv4 / ip_forward: у дозволі відмовлено


11

Я намагався бігти

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

Там написано, що Access заборонено з bash, я тоді зробив:

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

і тепер він говорить, що операція заборонена.

Як я можу отримати доступ?


4
Спробуйте так:echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Дуг Смітіес

Це спрацювало, чи можете ви пояснити, що робить трійник?
Кевін Ернандес

3
Проблема sudo echo 1 > /proc/sys/net/ipv4/ip_forwardполягає в тому, що перенаправлення виводу робиться не так sudo, тож воно не працює. Зі довідкової сторінки: tee - read from standard input and write to standard output and filesі якщо це зроблено так, як sudoце має достатньо привілеїв, щоб записати у файл.
Doug Smythies

Відповіді:


15

Біти дозволу для файлу /proc/sys/net/ipv4/ip_forward:

-rw-r--r-- 

з owner:groupбуттям root:root.

Так що тільки rootможна записати у файл.

Коли ви робите:

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

як звичайний користувач, ви не зможете писати у файл через недостатній дозвіл.

Ви можете зробити:

  • Використання sudoта bash:

    sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
  • Використання tee:

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

Зауважте, що вам слід скористатися /etc/sysctl.confдля постійних операцій над /proc/sysпідкаталогами.

Коротше кажучи, щоб увімкнути переадресацію IP, ви можете просто поставити таке /etc/sysctl.conf:

net.ipv4.ip_forward = 1

Потім запустіть:

sudo sysctl -p

мати негайний ефект.

Це має такий же ефект, як і редагування файлу /proc/sys/net/ipv4/ip_forward безпосередньо, не кажучи вже про набагато чистіший і, звичайно, стійкий.


Здійснює відлуння 1 | sudo tee / proc / sys / net / ipv4 / ip_forward працював на мене, чи можете ви пояснити, що таке tee?
Кевін Ернандес

1
@ChrisEthanFox tee- це команда надсилати все, що отримується, як на стандартний вихід, так і у файли. Перевіркаman tee
heemayl

Я увійшов як root, але все ще не можу використовувати команду rm ( rm /proc/sys/net/ipv4/icmp_echo_ignore_all) для видалення такого файлу! Я навіть перевірив незмінний біт і його не встановлено у цьому файлі ... я отримую ту ж помилку "rm: не можна видалити '/ proc / sys / net / ipv4 / icmp_echo_ignore_all': Дозволу відмовлено". Але магічно я можу редагувати файл, як ви описали! Я не можу усвідомити, у чому проблема rm!
Mojtaba Rezaeian

@MojtabaRezaeian Видалення це ядро, яке заважає. /procтобто procfsживе на пам'ять і піддається впливу ядра. Таким чином, ви отримуєте уявлення про ядро, і все, що ядро ​​дозволяє вам робити з файлами на такому FS, це абсолютно до ядра.
heemayl

@heemayl Отже, як я можу видалити цей файл, оскільки створення цього файлу була можливістю назавжди відключити запити icmp ping на мій сервер, але після створення цього файлу зараз я передумав, але немає можливості видалити цю опцію (хоча зараз її немає варіанту коли це неможливо змінити!) у вас є ідеї, як це зробити? а може, це вимагає відкрити інше питання?
Mojtaba Rezaeian
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.