Useradd из PHP-скрипта

Можно ли добавить пользователя с помощью скрипта PHP?

1
задан 26 May 2013 в 01:36

3 ответа

По поводу вашего второго вопроса (тот, что в заголовке): чтобы разрешить создание пользователей с помощью скрипта, запускаемого вашим веб-сервером, вам нужно дать корневые права доступа к веб-серверу - очень опасная вещь.

Таким образом, хотя это, безусловно, возможно (существуют веб-приложения для управления системой, такие как , webmin ), это плохая идея - сделать это самостоятельно с помощью некоторого самописного сценария.

NB. Я не говорю, что использование webmin также безопасно: -)

0
ответ дан 26 May 2013 в 01:36

Вы можете сделать так, чтобы ваш скрипт PHP создавал файл, содержащий информацию о пользователе, не требуя root-доступа. Эта информация должна быть зашифрована, чтобы она не сидела голой.

Тогда у вас может быть bash-скрипт с доступом с правами root, который отслеживает каталог, в котором новая пользовательская информация будет создаваться вашим PHP-скриптом. если новый файл существует, он дешифрует и создает нового пользователя, а затем удаляет файл при успешном создании пользователя (поэтому он не остается там после того, как с ним покончено). Вы бы хотели, чтобы он был очень точным о том, какие данные ищет и принимает ваш bash-скрипт. Также обязательно очистите все поля в пользовательской форме, чтобы минимизировать вероятность внедрения вредоносного кода.

Я не использовал его, но inotify выглядит так, как будто он был разработан для этой цели. http://www.errr-online.com/index.php/2011/02/25/monitor-a-directory-or-file-for-changes-on-linux-using-inotify/

Таким образом, ничто не имеет прямого доступа к вашей корневой области, и вы можете ограничить выполнение bash-скрипта только при соблюдении определенных условий, таких как создание нового файла, прохождение проверки хеш-функции, созданной вашим сценарием, содержащей ожидаемые данные ... Дайте нам знать, как это происходит, и, надеюсь, мы получим дополнительную информацию о наиболее безопасном способе сделать это.

Редактировать: Похоже, что событием, которое вы можете использовать для inotify, является IN_CREATE, которое будет действовать, когда файл создается в наблюдаемом каталоге. Просмотрите руководство, и я уверен, что вы найдете способ сделать это. http://man7.org/linux/man-pages/man7/inotify.7.html

Редактировать: Вы также можете иметь один файл, который открывается и редактируется PHP скрипт. У вас определенно есть варианты, но я не могу притворяться, что знаю, какой из них лучший.

0
ответ дан 26 May 2013 в 01:36

Asumming Apache работает под пользователем www-data, выполните visudo и добавьте следующую строку:

www-data ALL=NOPASSWD:/usr/sbin/useradd

Теперь из вашего скрипта PHP:

$username = "user1";
$password = "password1";
$cmd = "sudo /usr/sbin/useradd -m -p `openssl passwd -1 $password` $username";
system($cmd);

Наконец, просто Слово предосторожности, никогда не обращайте на это внимания в производственной среде, предварительно не осознавая последствий для безопасности.

0
ответ дан 26 May 2013 в 01:36

Другие вопросы по тегам:

Похожие вопросы: