2012-01-18 4 views
0

Я пишу сценарий bash, который проверяет, работает ли локальный брандмауэр, и на основе состояния выполняет некоторую операцию. В идеале, в моем сценарии я хотел бы сделать:Чтобы проверить статус брандмауэра linux без привилегий root

su root --session-command="/etc/init.d/iptables status" ; 
status=$? ; 

Таким образом, если статус = 1 это будет означать, что межсетевой экран вниз/не настроен. И если это 0, это означает, что брандмауэр завершен.

Но для этого пользователю требуется ввести пароль root во время выполнения сценария.

Есть ли способ запросить статус iptables без привилегий root?

Извините, если это вопрос новичков. Ваша помощь очень ценится!

+3

Использование Sudo, а не корень су. Вы можете настроить sudo, чтобы обычные пользователи могли получить доступ к этой команде, а не ко всему, что они могли бы сделать, если бы вы дали им возможность «su root». –

ответ

0

Iptables - это модуль ядра, поэтому поиск процесса не будет работать. Для CentOS, по крайней мере, я нашел достойный способ сделать это без того, чтобы дать специальное разрешение Sudo:

[[email protected] ~]$ /sbin/lsmod|grep ip_tables 
ip_tables    17831 1 iptable_filter 
[[email protected] ~]$ 

SBIN не находится в пути доступа пользователей, как правило, отсюда и абсолютную ссылку.

Ссылка: http://wiki.centos.org/HowTos/Network/IPTables

+0

у вас может быть загружен модуль ядра iptables, это не значит, что у вас есть какие-либо правила брандмауэра. – c4f4t0r

+0

Вы правы, это правда. Мой вариант использования - проверка моей конфигурации Puppet, которая должна быть выгружена iptables. Если вы просто пытаетесь выяснить, потенциально ли блокирует порт iptables, это не ответит на это. –

Смежные вопросы