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: Wed, 2 Jun 2004 19:48:59 +0300

On Tue, Jun 01, 2004 at 08:24:03PM +0300, Anton Zinoviev wrote:
> На  1.VI.2004 в 19:53 (+0300) часа Peter Pentchev писа:
> > 
> > Пффт.. това е доста по-сложно :(  Както каза Васил, passwd(1) по принцип
> > не е направено за ползване в не-интерактивен режим - имам чувството, че
> > в някои реализации направо си проверява за tty и те отсвирва, ако не
> > намери. 
> 
> Предполагам, че Samba прави това вече по някакъв начин, защото ето
> какво пише в smb.conf:
> 
> ; For Unix password sync. to work on a Debian GNU/Linux system, the following
> ;       parameters must be set (thanks to Augustin Luton
> ;       <aluton@xxxxxxxxxxxxxx> for sending the correct chat script for
> ;       the passwd program in Debian Potato).
>    passwd program = /usr/bin/passwd %u
>    passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .

Да, вярно е, че Samba прави нещо подобно, само че това не значи, че го
прави лесно :(  Не знам дали досега си се сблъсквал с този проблем:
нуждата да parse-ваш това, което всякакви откачени локализирани или
просто изпонамодифицирани и изпонапрепачвани програми плюят, вместо
това, което ти *очакваш* да изплюят, но във всеки случай не е добра идея
:(

Още повече, че цялата история със setup-ване на твой си виртуален
терминал и прихващане на целия вход/изход не е проста.  Правил съм я
навремето на C, след като я направих, не я ползвах, защото беше
отвратително... Направих го след това с expect (който е повече или
по-малко правен за това), после се опитах да го интегрирам с външна
програма и много бързо се отказах...  Основният проблем в тази ситуация
може да се изрази точно с две думи: shell injection.

Виж по-долу за може би малко по-добро решение :)

> > Струва ми се, че ще стане малко по-просто, отколкото да се опитваш да
> > автоматизираш диалога с passwd(1);
> 
> Да.  Просто без sudo и специални права ми изглежда по-сигурно.

Ммм.  Трябваше ми известно време, за да разбера какво точно ти се струва
несигурно, но накрая май ми просветна: като оставим настрана
възможността за дупки в самото sudo (която не може да бъде *напълно*
пренебрегната, но според мен не трябва да бъде основното, от което да се
водим), остава малкият проблем с това, че ако позволим на уеб-сървъра да
прави chpass, то едно малко malicious скриптче ще може наистина да смени
паролата на произволен потребител по този начин.  Въх!  Кофти :)

Ако наистина това е това, което те притеснява, може би идейката, която
Васил Колев ми подхвърли вчера вечерта, ще ти се стори свястна: на
http://devel.ringlet.net/sysutils/passwdif/passwdif.pl има малко
скриптченце, което чете от стандартния вход три реда: username, old
password, new password, след което проверява дали паролата на акаунта
username наистина е old password и ако е, я променя на new password.
Да, това пак използва chpass/usermod/chpasswd/pw/whatever (между
другото, ще трябва да го пипнеш, за да го настроиш точно какво да ползва
при теб), но не изпълнява *никоя* от тези програми, преди да е успяло с
помощта на съвсем нормалните и стандартни getpwent() и crypt() да е
проверило, че потребителят наистина е този, за когото се представя, а и
след това променя само неговата парола.  Надявам се да ти хареса - не е
нещо завършено или изпипано, нахвърлях го тази сутрин набързо, но може и
да свърши работа :)  Да, трябва да работи като root, но мисля, че няма
голяма опасност да направи някоя глупост :)

А ако не искаш да разчиташ на sudo, винаги можеш да промениш първия ред
на passwdif и да го пускаш през suidperl (брррррррррррррррр! :)

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

-- 
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
If this sentence didn't exist, somebody would have invented it.

Attachment: pgp5B_Gq7K2U_.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.