как запустить cmd как root из apache (centOS)? - PullRequest
0 голосов
/ 04 сентября 2011

Я пытаюсь запустить команду "useradd" в CENTOS, но не могу, потому что мне нужны права root.

В моем php_info(); есть «--disable-posix». Я попытался переустановить свой PHP и попытался включить posix с yum и дополнительными параметрами, но безуспешно.

Может ли кто-нибудь помочь мне включить posix или другие решения? Я заметил, что posix_getuid(); работает, а posix_setuid(); - нет.

Есть решение?

Все, что мне нужно, чтобы вставить useradd в команду passwd (root) "user click". Какой самый лучший и самый безопасный способ сделать это?

Большое спасибо!

Корен Или

Ответы [ 5 ]

0 голосов
/ 05 сентября 2011

Sudo может быть быстрым взломом, чтобы реализовать это быстро, но его трудно обезопасить, и здесь есть ловушки даже для опытного гуру Unix.

Другой способ - написать собственный демон сервера, работающий от имени пользователя root, прослушивать сокет локального домена unix или именованный канал или просто искать файлы в определенном защищенном каталоге. Затем отправьте сообщение этому демону из вашего php-скрипта, добавив имя пользователя. Реализуйте только минимальную функциональность приложения в этом демоне, а все остальное в php. Но проводите строгие проверки ввода в вашем демоне, очищайте среду и т. Д., Чтобы быть уверенным, что это вызов приложения php, а не кого-то другого.

0 голосов
/ 04 сентября 2011

Sudo нужно запускать в интерактивном режиме (требуется пароль)

Вы не должны никоим образом предоставлять root-доступ веб-серверу.

Suexec является альтернативой, но вы также можете просто записать веб-скрипт в файл и получить задание cron, которое анализирует файл и обрабатывает команды

0 голосов
/ 04 сентября 2011

Вы можете использовать sudo для этого. запустить visudo и поставить что-то вроде

apache ALL = (ALL) NOPASSWD: /usr/sbin/useradd

На самом деле, если вы используете SELINUX принудительно, он не будет работать, и вместо использования useradd я бы рекомендовал написать скрипт-обертку, который правильно устанавливает среду и проверяет работоспособность перед запуском useradd

0 голосов
/ 04 сентября 2011

Я бы предложил написать скрипт оболочки, который будет вызывать useradd через sudo.

Вы можете добавить определенные команды для определенных пользователей в / etc / sudoers (отредактировано командой visudo)

Должно быть что-то вроде этого:

Cmnd_Alias USERADD = /bin/sbin/useradd *

apache ALL=(USERADD) NOPASSWD:USERADD

, вызывающий useradd:

sudo /usr/sbin/useradd USERNAME

Нене забудьте проверить введенные данные как в сценарии php, так и в сценарии оболочки.

0 голосов
/ 04 сентября 2011

Вы хотите прочитать документацию suEXEC: http://httpd.apache.org/docs/2.2/suexec.html Затем переосмыслите работу своего приложения и определите лучший / более безопасный способ.

...