2012-05-10 2 views
2

Im пытается отладить плагин nagios (check_aacraid.py), который использует NRPE. Эта система представляет собой новый файловый сервер CentOS 6.2.python: невозможно вызвать sudo с помощью Popen?

Команда, которая, как представляется, давая мне неприятности является:

for line in Popen(["/usr/bin/sudo", "/usr/bin/arcconf", "GETCONFIG", "1", "LD"], 
        stdin=PIPE, stdout=PIPE, close_fds=True).stdout: 

Если я запустить сценарий как пользователь «Nagios» он прекрасно работает. Если он вызван из NRPE/XINETD, он терпит неудачу (отчеты NRPE «Невозможно прочитать вывод» - usu указывает на ошибку).

Я использовал Трассирование, чтобы посмотреть вывод XINETD и нашел это:

7706 execve("/usr/bin/sudo", ["/usr/bin/sudo", "/usr/bin/arcconf", "GETCONFIG", "1", "AD"], [/* 15 vars */]) = -1 EACCES (Permission denied) 

Im пытаясь выяснить, если его проблемы с:
-python
-sudo
-nagios
- xinetd
-другие

Я трогался за вопросы с помощью sudo и делал std вещи (комментарий «requi retty ', задать путь, добавить пользователя nagios с помощью «NOPASSWD»). Еще не нашли проблему.

Другие команды работают нормально через NRPE ('check_user' и т. Д.).

Примечание: это опубликованный, установленный плагин для nagios. Я сделал что-то неправильно в этой системе, так что он не работает.

Предложения?

Ответы на вопросы:
1) Я могу запустить приложение, если войти в систему как 'nagios'.
2) Использование «visudo» У меня есть эта запись: «nagios ALL = (ALL) NOPASSWD: ALL '
- да это отверстие безопасности. Я подтяну его, когда я получу эту работу.
3) Разрешения для/usr/bin/sudo --- s - x - x. 2 root root 215144 9 мая 23:59/usr/bin/sudo

Похоже, что проблема SELinux. Когда я 'echo 0>/selinux/enforce', приложение работает правильно. Теперь, чтобы выяснить, как работать с ним, а не вокруг него. @Josh - опубликуйте это как ответ, и я с радостью приму это!

+1

Можете ли вы использовать sudo в оболочке? – jimw

+1

Пользователь _nagios_ разрешает запускать эту команду как root без пароля, должно быть правило в '/ etc/sudoers', например' nagios ALL = NOPASSWD:/usr/bin/arcconf' или подобное ... (или как пользователь работает под управлением скрипта?) – mata

+1

Вы довольно четко получаете * отклоненную * разрешенную * ошибку от вызова exec. Это означает, что это не проблема с Python, Nagios или Xinetd. Он предполагает, что разрешения на 'sudo' могут быть неверными. Что показывает 'ls -l/usr/bin/sudo'? – larsks

ответ

1

Звучит как SELinux - проблема. Если выполнение sudo от xinetd получает отклоненную разрешенную ошибку и выполнение ее за пределами xinetd преуспевает, тогда кажется, что что-то вроде SELinux может применять политику, которая ее отрицает.

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