linux — изменение системных паролей пользователей с помощью PHP-скрипта

Итак, у меня есть PHP-скрипт, который должен программно изменять пароль пользователя Linux.

Скрипт работает как www-data (это имя пользователя, данное apache2). Я исполняю chpasswd с popen, а потом fwrite пара имя пользователя: пароль. Это вызывает ошибку.

Опускаясь до оболочки bash, я пытаюсь увидеть, что здесь происходит. Естественно, я подозреваю, что это какая-то проблема с разрешениями. Итак, я меняю пользователей на www-data и попытаться выполнить chpasswd вручную:

# su www-data
$ /usr/sbin/chpasswd
jsmith:mysecretpassword
Changing password for jsmith.
chpasswd: (user jsmith) pam_chauthtok() failed, error:
Authentication token manipulation error
chpasswd: (line 1, user jsmith) password not changed

Таким образом, это показывает, почему PHP не может выполнить команду. Сообщение об ошибке не совсем простое, но я предполагаю, что суть в том, что PAM-аутентификация возникла проблема (которая, как я полагаю, в основном означает проблему с разрешениями в Linux). Итак, если я su root, я успешно могу сменить пароль через chpasswd,

Очевидно, проблема в том, что apache2 (user www-data) не имеет sudo привилегии. Единственное решение здесь, чтобы добавить www-data к sudo группа? Потому что я бы предпочел не делать этого. Но я не вижу здесь другого варианта.

Говоря в более общем плане — помимо особенностей этой ситуации — как это даже теоретически возможный для веб-программы, которая может потребоваться изменить пароли пользователей, чтобы иметь возможность сделать это без sudo привилегии? Но если веб-программа имеет sudo привилегии, разве это не главная проблема безопасности?

0

Решение

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

0

Другие решения

Заглянуть в этот а также этот. Второй вариант, хотя в нижней части есть раздел «Безопасность» с предложениями, мне не кажется безопасным, но это всего лишь ощущение.

Я бы пошел на веб-Chpass.

0

По вопросам рекламы [email protected]