как запустить cmd как root из apache (centOS)?

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

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

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

Любое решение?

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

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

Koren Or

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

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

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

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

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

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

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

Cmnd_Alias USERADD = /bin/sbin/useradd *

apache ALL=(USERADD) NOPASSWD:USERADD

вызов useradd:

sudo /usr/sbin/useradd USERNAME

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

Судо может быть быстрым взломом, чтобы быстро реализовать это, но его трудно защитить, и есть проблемы даже для опытного гуру unix.

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

Судо нужно запускать в интерактивном режиме (он ожидает пароль)

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

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