Linux-Bulgaria.ORG
навигация

 

начало

пощенски списък

архив на групата

семинари ...

документи

как да ...

 

 

Предишно писмо Следващо писмо Предишно по тема Следващо по тема По Дата По тема (thread)

Re: lug-bg: passwd i chfn prez web?


  • Subject: Re: lug-bg: passwd i chfn prez web?
  • From: Peter Pentchev <roam@xxxxxxxxxxx>
  • Date: Tue, 1 Jun 2004 19:53:30 +0300

On Tue, Jun 01, 2004 at 07:43:06PM +0300, Anton Zinoviev wrote:
> На  1.V.2004 в 18:38 (+0300) часа Peter Pentchev писа:
> > 
> > Ммм.. въпрос: трябва ти нещо, което да сменя паролата на потребител
> > безусловно, или ти трябва нещо, което да позволява на потребител да си
> > смени паролата, като евентуално преди това въведе старата?  
> 
> Вече не ми се вижда сигурно да позволя на апачето да променя паролите,
> пък дори и чрез sudo.  Затова си представям нещата така: потребителят
> въвежда старата парола и новата парола.  После cgi-скриптът използва
> за смяна на паролите passwd.  Ако потребителят е pehcno, тогава
> скриптът използва su, за да пусне passwd от името на pencho
> (естествено за целта скриптът подава старата парола на su).  Когато
> passwd поиска старата парола на pehcho, скриптът му я подава, а след
> това му казва двукратно и новата парола.  По подобен начин може да се
> стартира и chfn.

Пффт.. това е доста по-сложно :(  Както каза Васил, passwd(1) по принцип
не е направено за ползване в не-интерактивен режим - имам чувството, че
в някои реализации направо си проверява за tty и те отсвирва, ако не
намери.  Ще се наложи да си създадеш виртуален терминал, да parse-ваш
куп глупости... абе не съм много сигурен, че е добра идея :((

Доста по-добър вариант ми се струва нещо като checkpassword, което май
вече веднъж споменах - http://cr.yp.to/checkpwd.html - макар че с него
може да си имаш други проблеми: то изпълнява програмата, която си му
задал, направо със system(), така че е твой ред да проверяваш за shell
injection.  Разбира се, нищо не пречи да направиш нещо като sudo
checkpassword true, и просто да проверяваш exit code, така че да си
свършиш работата на два паса:

подготвяш file descriptor 3
sudo checkpassword true
подаваш username NUL oldpass NUL timestamp NUL на файлов дескриптор 3
проверяваш exit code на checkpassword
ако е минало, sudo usermod -p encryptedpass примерно, или нещо като
това, което пратих преди.

Струва ми се, че ще стане малко по-просто, отколкото да се опитваш да
автоматизираш диалога с passwd(1); най-малкото ще се сблъскаш със смешни
проблеми като различни промптове на passwd(1) :)

> Току що пуснах apt-cache search на unstable.  Оказа се, че има пакет
> usermin-changepass, само че той изглежда е достатъчно сложен, че да не
> мога да се уверя, че портването му за Debian stable няма да доведе до
> проблеми със сигурността.

Това не е ли част от нещо по-голямо - от самия usermin?  Може и да
бъркам де :)

> Вижда ми се странно, никой досега да не е изпрограмирал нещо подобно.
> Но като използвам нещата, които пратиха Петър и Деян, може би ще мога
> аз да го направя. :-)

Причината никой да не е направил нещо подобно като готово решение може
би е, че всички дребни части вече ги има - sudo, chpass/usermod/pw,
checkpassword, CGI.pm, perl taint mode - всичко, което ти трябва, си е
тук, трябва само да подредиш пъзела :P

Поздрави,
Петър

-- 
Peter Pentchev	roam@xxxxxxxxxxx    roam@xxxxxxxx    roam@xxxxxxxxxxx
PGP key:	http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint	FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
I am the meaning of this sentence.

Attachment: pgpokWbTJP3z6.pgp
Description: PGP signature



 

наши приятели

 

линукс за българи
http://linux-bg.org

FSA-BG
http://fsa-bg.org

OpenFest
http://openfest.org

FreeBSD BG
http://bg-freebsd.org

KDE-BG
http://kde.fsa-bg.org/

Gnome-BG
http://gnome.cult.bg/

проект OpenFMI
http://openfmi.net

NetField Forum
http://netField.ludost.net/forum/

 

 

Linux-Bulgaria.ORG

Mailing list messages are © Copyright their authors.