задать пароль пользователю через скрипт [nix]

  • Автор темы Автор темы clevel
  • Дата начала Дата начала

clevel

Новичок
задать пароль пользователю через скрипт [nix]

Ночи доброй!

Сейчас возникла необходимость создавать через скрипт пользователей в системе.
Этакая система управления юзерами/группами.

Группа создается просто pw groupadd name
Юзер - pw useradd -n name -g name -d /usr/hosting/domain
чтобы выставить пароль, я ставлю pw usermod name -hfd
после этого на новой строчке консоли мне предлагается ввести пароль.

Как мне сделать это через скрипт? Есть подозрение, что fd параметр - ввод через консольи есть другие вариант.
Подскажите, плз, куда копать.

Ман читал через man pw, гуглил на эту тему, но дельного совета не нашел.
Заране спасибо.
 
Это можно сделать через вызов внешней комманды, но скрипт должен под рутом работать (т.е. не под апачем вызовы браузера обрабатывать).
Можно, конечно, извратиться и написать демона, который будет запускаться под рутом и ждать, отдавать ему имя пользователя с паролем - и этот демон будет заводить пользователя.
Собственно, примерно то, что делает Plesk.
Но вначале я бы много раз подумал, а не маюсь ли я дурью.
 
насчет запуска под рутом я в курсе.
Команды, как это делается, я написал.
Меня интересет именно технический вопрос - как задать пароль через скрипт.а не через консоль ручками...

Дурью как раз не маюсь - у меня система пишется управления доменами и хостингом.
Для каждого виртуального хоста - своя юзер/группа.
И вот для автоматизации и нужно через скрипт делать.
А пароль - куда ж без него. юзер иначе по фтп к себе попасть не сможет :(

-~{}~ 15.05.07 10:22:

Решил проблему собственными силами:

<?
$f = popen("/usr/sbin/pw usermod domain-hfd","w");
fwrite($f, "pass");
pclose($f);
?>
 
Активист
и вообще добавление юзвера через редактирование /etc/shadow не следует.
 
по-хорошему, shadow вообще не предназначен для редактирования вручную :)
 
Почему бы вообще пользователей и группы не хранить, например, в ldap?
 
clevel - именно это я и имел ввиду, но лучше это делать от демона, а не как в Плеске под рутом веб-сервер запускать.

kamatoz - чтобы не дописывать для ftp-сервера авторизацию через ldap
 
я для себя сделал такую схему:
веб-панель для менеджеров работает как простой вирутальный хост, под своей непривелигированной юзер/группой. Данные проверяются на предмет валидности и инъекций. После этого добавляются в базу данных.

По крону запускается скрипт, права рута, который берет инфу из базы, еще раз проверяет на валидность и уже после этого создает юзер/группу.

Держать демона для таких целей не считаю целесообразным.
Для уменьшения нагрузки на базу - делаю файл-флаг - когда последний раз добавлялись таски в базу. Скрипт по крону запускается, скажем, раз в пять минут. Проверяет файл-фоаг. Если нет обновлений - умирает. Есть - тогда коннект к базе и вперед.
 
>kamatoz - чтобы не дописывать для ftp-сервера авторизацию через ldap

можно заюзать r.a.d.i.u.s.
Безбожно тупой но работающий протокол.
 
clevel - впринципе, от демона мало отличается, для этой задачи неважно. Кстати, а почему не очередь в файлах, вообще без базы?

ys - а пермиссии на файлы? :)
 
grigori
Это какой фтп сервер сам лезет в /etc/passwd,shadow,group и тд для авторизации? )
 
kamatoz
не грузи, тут php клаб, а не сис админ.

Alexandre
Что значит, редактировать через Web =)
Речь шла о смене пароля. Естественно крон, естественно скрипт, который обрабатывает данные.

Правильная реализация процессов панели управления сервером заключается в следующем:

1. Закрытая база данных, в которой хранится информация о всех юзерах (лимиты и квоты, чья база, кто юзер чей владелец, чей домен кто владелец, биллинг) , и на этом, все.

2. Всей действия которые делает юзер, сохраняются в фаил инструкцию, структуру которой программист продумывает сам, например, появился новый пользователь, в файл инструкции ложится

add_new_user vasya_pubkin 123 no_ssh ......
change_password petya_ivanov 456
add_new_domain petya_ivanov petya.ru

После скрипт, запускаемый по крону от рута, обрабатывает эти данные, и вносит все изменения в систему.

Еще почитай о PAM авторизации
 
grigori, выбор обусловлен тем, что очень много чего делается в этой системе: регистрация домена через выбранного регистратора, заведение днс зон на первичном bind сервере, обновление данных через сокеты на вторичном (у провайдера), заведение виртуального хоста (вот тут работаем с юзер/группой, создаем диры, копируем нужные файлы, делаем конфиг для апача и nginx), создание почты (postmaster и т.д.), доп. фичи типа счетчика ливинет..

Поэтому я продумал структуру тасков и привел их к единой схеме. В дальнейшем будет расширение кол-ва типов тасков.
Так что коннект к базе данных в данном случае - незначительный расход ресурсов по сравнению со всеми другими операциями.

Вопрос в другом: например, запускаю скрипт, в полночью, он считывает спсиок таксов, начинает их отрабатывать.
Через пять минут запускается вторая копия по крону.
Самый простой вариант - ставить первым скриптом лок-файл. Второй скрипт смотрит - есть ли лок. файл. Если есть - и он не старше 10 мин, скажем, то выходим. Есди нет - действуем по схеме первого скрипта.

Первый скрипт завершает работу - киляет лок-файл.

Скользкие моменты:
1. скрипт считал список таксов.. Работает, никому не мешает. Менеджер решил исправить такс - например, отложил (снял публикацию) или удалил. Поулчается, что нужно либо перед каждым таксом запрос делать - точно выполняем. Либо опять лок файлы делать.
2. при лок файле и выходе второй копии скрипта работает схема однопоточного выполнения тасков. При нескольких таксах - это нормально. но если будет много заданий, это начнет долго исполняться (продложительность).
Как можо сделать систему локов, чтобы таски распределялись между копиями скрипта равномерно и отрабатывались параллельно

Заранее спасибо :)

-~{}~ 18.05.07 12:42:

kamatoz
у меня стоит фтп - сервер proftpd
я создаю в системе юзера, даю ему путь до папки вирт. хоста - и все.. Он может смело по фтп с данными логином/паролем зайти, все закачать...
 
clevel
немного оффтопик, конечно. Но, натравив pam на ldap можно получить все то же самое. И пути и пароли и маппинг прав в системе (эт уже nss) и многое другое. Просто, удобно, попробуй покопать в эту сторону.
 
kamatoz.. а зачем? у меня сервак под хостинг сайтов на моей цмс... зачем мне это все наворачивать?

У меня патч на апч стоит. чтобы секурность была, от нужной юзер/группы стартует.. Фтп от даннйо юзер/группы работает...

Связка у одного из хостеров взята. Отрабатана годами.
 
Сверху