URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 38624
[ Назад ]

Исходное сообщение
"Как создать учетную запись в линухе из cgi (perl)"

Отправлено visitor , 18-Дек-03 18:50 
Здравствуйте.
Как создать учетную запись в линухе используя cgi скрипт на перле, если в из формы в него передаются все необходимые переменные ($username, $passwd, $home_dir).
Заранее спасибо.

Содержание

Сообщения в этом обсуждении
"Как создать учетную запись в линухе из cgi (perl)"
Отправлено viewn , 18-Дек-03 19:06 
>Здравствуйте.
>Как создать учетную запись в линухе используя cgi скрипт на перле, если
>в из формы в него передаются все необходимые переменные ($username, $passwd,
>$home_dir).
>Заранее спасибо.
Из Веба?!!! Да вы, батенька, наверное шампанское полюбляете в немеряных количествах?!:)
Создать-то не проблема.
system ("/usr/sbin/useradd ...blah-blah-blah...")
Только ведь скрипт должен исполняться с правами рута.
Не боитесь?:)



"Как создать учетную запись в линухе из cgi (perl)"
Отправлено nubi , 18-Дек-03 19:41 
>>Здравствуйте.
>>Как создать учетную запись в линухе используя cgi скрипт на перле, если
>>в из формы в него передаются все необходимые переменные ($username, $passwd,
>>$home_dir).
>>Заранее спасибо.
>Из Веба?!!! Да вы, батенька, наверное шампанское полюбляете в немеряных количествах?!:)
>Создать-то не проблема.
>system ("/usr/sbin/useradd ...blah-blah-blah...")
>Только ведь скрипт должен исполняться с правами рута.
>Не боитесь?:)

почитайте про sudo
это не опасно при грамотном программировании.


"Как создать учетную запись в линухе из cgi (perl)"
Отправлено visitor , 18-Дек-03 19:43 

>Из Веба?!!! Да вы, батенька, наверное шампанское полюбляете в немеряных количествах?!:)

неужели невозможно создавать учетные записи через веб?
а как тогда создают веб-интерфейсы для юзеров для смены ftp паролей?
эти скрипты должны править /etc/passwd

>Создать-то не проблема.
>system ("/usr/sbin/useradd ...blah-blah-blah...")

это понятно. Но ведь
system ("/usr/sbin/useradd -p password -d /home_dir -g usersgroup");
создает юзера с открытым паролем в /etc/shadow и под таким юзером невозможно залогинется:(
Как это побороть?


"Как создать учетную запись в линухе из cgi (perl)"
Отправлено Michael , 18-Дек-03 19:58 
>
>>Из Веба?!!! Да вы, батенька, наверное шампанское полюбляете в немеряных количествах?!:)
>
>неужели невозможно создавать учетные записи через веб?
>а как тогда создают веб-интерфейсы для юзеров для смены ftp паролей?
>эти скрипты должны править /etc/passwd
>
>>Создать-то не проблема.
>>system ("/usr/sbin/useradd ...blah-blah-blah...")
>
>это понятно. Но ведь
>system ("/usr/sbin/useradd -p password -d /home_dir -g usersgroup");
>создает юзера с открытым паролем в /etc/shadow и под таким юзером невозможно
>залогинется:(
>Как это побороть?


"Как создать учетную запись в линухе из cgi (perl)"
Отправлено Michael , 18-Дек-03 20:00 
>это понятно. Но ведь
>system ("/usr/sbin/useradd -p password -d /home_dir -g usersgroup");
>создает юзера с открытым паролем в /etc/shadow и под таким юзером невозможно
>залогинется:(
>Как это побороть?
это же очевидно!
следующей строчкой:
system ("/usr/sbin/usermod -p password username");

"Как создать учетную запись в линухе из cgi (perl)"
Отправлено visitor , 18-Дек-03 20:38 
>это же очевидно!
>следующей строчкой:
>system ("/usr/sbin/usermod -p password username");

Все равно та же лажа:
в /etc/shadow пароль для юзера меняется на тот который указал в usermod -p;
остается видимым (не криптованым) и по ssh и ftp под этим юзером невозможно залогинется:(

чем можно объяснить что при
useradd username -p password
usermod -p newpassword username
пароль не криптуется и нет возможности залогинется пока не сделаешь
passwd username и не поменяешь пароль на 3-ий вариант:)

а passwd username делать не хочу:)
есть выход?


"Как создать учетную запись в линухе из cgi (perl)"
Отправлено Михаил , 21-Дек-03 10:53 
>нет возможности залогинется пока не сделаешь
>passwd username и не поменяешь пароль на 3-ий вариант:)
>
>а passwd username делать не хочу:)
>есть выход?
сорри, я имел ввиду именно passwd, а не usermod.
путаю периодически, кто из них шифрует пароль, а кто нет...

а почему passwd username не хочешь?


"Как создать учетную запись в линухе из cgi (perl)"
Отправлено visitor , 19-Дек-03 00:49 
неужели невозможно одной командой в линухе создать пользователся, определить для него пароль и после чего залогинется на этот аккаунт?
Чудеса...
какой смысл тогда в ключе -p для usermod и useradd, если после создания аккаунта невозможно пройти по паролю:)
Ответьте хоть кто нибудь... Где я ошибаюсь...

PS. пробовал в RH и в mandrake - результат один.


"Как создать учетную запись в линухе из cgi (perl)"
Отправлено vova , 19-Дек-03 06:13 
>неужели невозможно одной командой в линухе создать пользователся, определить для него пароль
>и после чего залогинется на этот аккаунт?
>Чудеса...
>какой смысл тогда в ключе -p для usermod и useradd, если после
>создания аккаунта невозможно пройти по паролю:)
>Ответьте хоть кто нибудь... Где я ошибаюсь...
>
>PS. пробовал в RH и в mandrake - результат один.

попробуйте криптовать сами и вносить в shadow уже криптованый пароль.
нужно использовать модуль Crypt::PasswdMD5 и функцию unix_md5_crypt


"Как создать учетную запись в линухе из cgi (perl)"
Отправлено visitor , 19-Дек-03 13:46 

>попробуйте криптовать сами и вносить в shadow уже криптованый пароль.
>нужно использовать модуль Crypt::PasswdMD5 и функцию unix_md5_crypt

спасибо Вам за помощь. Получилось.



"Как создать учетную запись в линухе из cgi (perl)"
Отправлено XoRe , 21-Дек-03 14:15 
Альтернативный вариант - создавать файл, содержащий необходимую информацию о пользователе, например /tmp/add и добавить в крон задание, которое каждые 15 минут, при наличии такого файла, будет запускать комманду, добавляющую пользователей. Например:
*/15 * * * * [ -r /tmp/add ] && /usr/bin/perl /usr/sbin/adduser -q < /tmp/add && rm -f /tmp/add

Файл представлял собой последовательность строк типа:
======================
username
Full name


pass
pass

y
y
n
======================
Т.е. каждая строчка как бы вводилась при запросе скрипта.
Сделано это было на FreeBSD 4.5.

При переходе на 5.1, оказалось что там для подобных нужд сделана специальная опция, позволяющая брать инфо о пользователе из файла, в котором все записи представлены примено так:
логин:имя:уид:...:...:...:...:пасс
логин:имя:уид:...:...:...:...:пасс
логин:имя:уид:...:...:...:...:пасс

Такой вариант может быть полезен для тех, кто не хочет запускать cgi скрипт от имени рута.