Назад | Перейти на главную страницу

Доступ к apache sudoers

Я делаю системный вызов с php, который

`sudo /usr/bin/perl -pi -e 's/foo/bar/g' /tmp/newxml.xml`;

который отлично работает в php cli. Но не будет работать в php через браузер, потому что apache не имеет необходимых разрешений на выполнение. Как мне сделать apache sudoer, чтобы разрешить запуск только / usr / bin / perl?

Я понимаю, что для этого придется отредактировать / etc / sudoers, но я не уверен, как это сделать. Есть указатели?

Я использую RHEL 5.5

Я не думаю, что предоставление прав sudo пользователю apache было бы разумным с точки зрения безопасности. Рассматривали ли вы изменение владельца этого файла на уровне группы, чтобы apache мог писать в него без необходимости использования sudo?

visudo

Добавить

nobody ALL=(ALL)NOPASSWD:/usr/bin/perl

не замените никого тем, кем является ваш пользователь apache.

Но тебе не следует этого делать. Предоставление apache sudo доступа к perl, по сути, дает любому пользователю мгновенный root-доступ к вашему ящику, который скомпрометирует ваше приложение php.

Вы должны проверить маску на наличие /tmp/newxml.xml и убедитесь, что он доступен для записи вашим пользователем apache.

Во-первых, вы можете делать то же самое из PHP без необходимости вызова perl.

Во-вторых, поскольку вы запускаете rhel, вам, вероятно, мешает SELinux. Попробуйте запустить setroubleshooter, он предоставит вам необходимую информацию о том, как это исправить.

В-третьих: не давайте root ни apache, ни sudoers, ни тому подобному.