Я пытаюсь запустить команду 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, которое анализирует файл и обрабатывает команды