Здраствуйте!
Такая проблема: Apache2+CGI. Написал web-морду, заполняя через web-интерфейс форму и нажимая submit, вызывается cgi-скрипт, создающий системную учетную запись.(Апач крутится под учетной записью nobody)
Пробую жать на эту кнопку - ничего не получается, тогда как запуская скрипт из-под рута всё делается на ура. Посмотрел логи - там несколько упоминаний про PAM.
Заглядываю в /etc/pam.d, там есть файл useradd, а я собственно в cgi этой командой и пользовался. Содержимое файла небольшое:
auth sufficient pam_rootok.so
auth required pam_permit.so
account include system-auth
password required pam_permit.so
Содержимое system-auth:
auth required pam_env.so
auth sufficient pam_unix.so likeauth nullok
auth required pam_deny.so
account required pam_unix.so
password required pam_cracklib difok=2 minlen=8 dcredit=2 .....
password sufficient pam_unix.so
password required pam_deny.so
session required pam_limits.so
session required pam_unix.so
Попробовал изменить конфиг для useradd на банально простой:
auth required pam_permit.so
account required pam_permit.so
password required pam_permit.so
session required pam_permit.so
Не разрешает простому смертному юзеру выполнять useradd(а мне нужно чтоб nobody мог это делать). Выдает такую вот ругань:
useradd: unable to lock password file
Менял и разрешения на /etc/passwd и владельцев - ничего не помогает.
Спасайте, люди добрые.
Спасибо.
>Здраствуйте!
>
>Такая проблема: Apache2+CGI. Написал web-морду, заполняя через web-интерфейс форму и нажимая submit,
>вызывается cgi-скрипт, создающий системную учетную запись.(Апач крутится под учетной записью nobody)
>
>Пробую жать на эту кнопку - ничего не получается, тогда как запуская
>скрипт из-под рута всё делается на ура. Посмотрел логи - там
>несколько упоминаний про PAM.
>
>Заглядываю в /etc/pam.d, там есть файл useradd, а я собственно в cgi
>этой командой и пользовался. Содержимое файла небольшое:
>
>auth sufficient pam_rootok.so
>auth required
>pam_permit.so
>account include system-auth
>password required pam_permit.so
>
>Содержимое system-auth:
>
>auth required
>pam_env.so
>auth sufficient pam_unix.so likeauth
>nullok
>auth required
>pam_deny.so
>account required pam_unix.so
>password required pam_cracklib difok=2 minlen=8 dcredit=2
>.....
>password sufficient pam_unix.so
>password required pam_deny.so
>session required pam_limits.so
>session required pam_unix.so
>
>Попробовал изменить конфиг для useradd на банально простой:
>auth required pam_permit.so
>account required pam_permit.so
>password required pam_permit.so
>session required pam_permit.so
>
>Не разрешает простому смертному юзеру выполнять useradd(а мне нужно чтоб nobody мог
>это делать). Выдает такую вот ругань:
>useradd: unable to lock password file
>
>Менял и разрешения на /etc/passwd и владельцев - ничего не помогает.
>
>Спасайте, люди добрые.
>
>Спасибо.возможно есть более грамотное решение, но как вариант:
добавить этого пользователя в группу sudo (чтоб не спрашивал пароль), в /etc/sudoers прописать что ему можно делать. useradd заменить на sudo useradd
Насколько я знаю, PAM как раз и появилась с целью избавиться от некоторых недостатков suid-программ. И если useradd собрана с поддержкой PAM, то ее так просто не выкинешь.
Я пробовал удалить конфиг useradd из /etc/pam.d - не дало результатов, так же PAM Auth error.
Да и просто хотелось бы разобраться с этим злосчастным памом.
не есть гуд ваше решение
более правильно - ваш скрипт просто пишет очередную строчку-задание в доступный неруту файлик
а другой скрипт, работающий из под рута, по крону файлик проверяет и выполняет задания
>Насколько я знаю, PAM как раз и появилась с целью избавиться от
>некоторых недостатков suid-программ. И если useradd собрана с поддержкой PAM, то
>ее так просто не выкинешь.
>Я пробовал удалить конфиг useradd из /etc/pam.d - не дало результатов, так
>же PAM Auth error.
Выбрасывание ничего не даст так как при этом срабатывает other из /etc/pam.d
Он всегда срабатывает при отсутствии конфигурации для определенной службы.
Таким образом запрещается выполнение неизвестного сервиса.