2015-04-03 5 views
0

У меня есть CentOS 7 с PHPFPM и Nginx (оба установлены из источника, а не yum). Nginx и PHP работает на www-data пользователя и группы. Теперь я создаю PHP файл с этим содержимым:Exec («adduser myownuser») не работает на сервере CentOS

exec("adduser myownuser"); 

Этим PHP файл успешно работает, если я запустить его в консоли CentOS в качестве корня. Но когда я хочу запустить его в моем корневом веб-сервере, ничего не происходит, а сценарий работает как www-data.

В чем проблема?

+0

use exec ("sudo adduser myownuser"); – Saty

+0

не работает с вашим предложением. это швы проблема для разрешений, а не команды – user216085

ответ

0

Вам необходимо добавить apache в sudoers, без необходимости ввода пароля. также вам нужно выполнить adduser с помощью однострочного скрипта, вы не можете установить его пароль иначе.

Вот моя реализация

$ccmd = "nohup sudo useradd -d /home/user -p $(openssl passwd -1 " . $thepassword . ") username &"; 
exec($ccmd); 

Я добавил это в мой sudoers файл

апача ALL = (ALL) NOPASSWD: ALL

в зависимости от вашего дистрибутива, ваш апач пользователь может отличаться. Чтобы узнать, что такое имя пользователя apache, вы можете выполнить echo exec («whoami»);

Прежде чем люди начнут кричать на меня, лучше всего разрешить доступ только к Apache sudo для одной команды, в которой вы нуждаетесь. Либо это, либо добавить apache в группу и назначить эту группу этой команде. Я не буду объяснять, как это сделать, вы можете искать, потому что есть об этом везде.

+0

не работает ... Я использую nginx не apache – user216085

+0

, затем выполните whoami и посмотрим, что такое имя пользователя, и добавьте это в sudoers. Также не забудьте редактировать sudoers с vi, а не nano или любым другим текстовым редактором. И если у вас есть SELinux, вам придется остановить его – aron9forever