The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
" - нужен спец по perl."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Поиск и предложение работы, доска объявлений. (Public)
Изначальное сообщение [Проследить за развитием треда]

" - нужен спец по perl." 
Сообщение от xz emailИскать по авторуВ закладки(??) on 05-Дек-05, 13:10  (MSK)
Приветствую.
Есть всеми извесный webmin
(http://webmin.com)
в нем есть модуль - создание юзера.
в нем именно инетересен механизм задания/смены пароля.
т.е. или по этой аналогии либо каким либо еще способом нужен скрипт
который получает в качестве аргументов username password, затем сравнивает username со списком юзеров если он там есть делает passwd username, если нету выходит.
предложения о размере вознаграждения за данную работу и за подробностями - по аське 138289374.
WBR.
  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]

1. " - нужен спец по perl." 
Сообщение от eSupport.org.ua Искать по авторуВ закладки on 05-Дек-05, 15:29  (MSK)
#!/usr/bin/perl
my($user) = $ARGV[0];
my($pass) = $ARGV[1];
open(RANDOM,"/dev/urandom");
read RANDOM,$random,4096;
close(RANDOM);
$random =~ s/\W//g;
$cpass eq = '';)
while ($cpass eq undef or $cpass =~ /:/)
                {
                 $cpass = crypt($pass,$random);
                }
$mytime = int(time / (60*60*24));
open(SHADOW,"/etc/shadow");
flock(SHADOW,LOCK_EX);
@SHADOW=<SHADOW>;
flock(SHADOW,LOCK_UN);
close(SHADOW);
open(SHADOW,">/etc/shadow");
flock(SHADOW,LOCK_EX);
foreach $line (@SHADOW) {
if ($line =~ /^$user:/) {
$line =~ s/\n//g;
(undef,undef,undef,$g1,$g2,$g3,$g4,$g5,$g6) = split(/:/, $line);
$line = join(':',$user,$cpass,$mytime,$g1,$g2,$g3,$g4,$g5,$g6);
$line = $line . "\n";
}
print SHADOW $line;
}
flock(SHADOW,LOCK_UN);
close(SHADOW);
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. " - нужен спец по perl." 
Сообщение от Vivis emailИскать по авторуВ закладки(??) on 05-Дек-05, 15:34  (MSK)
>#!/usr/bin/perl
>my($user) = $ARGV[0];
>my($pass) = $ARGV[1];
>open(RANDOM,"/dev/urandom");
>read RANDOM,$random,4096;
>close(RANDOM);
>$random =~ s/\W//g;
>$cpass eq = '';)
>while ($cpass eq undef or $cpass =~ /:/)
>            
>    {
>            
>     $cpass = crypt($pass,$random);
>            
>    }
>$mytime = int(time / (60*60*24));
>open(SHADOW,"/etc/shadow");
>flock(SHADOW,LOCK_EX);
>@SHADOW=<SHADOW>;
>flock(SHADOW,LOCK_UN);
>close(SHADOW);
>open(SHADOW,">/etc/shadow");
>flock(SHADOW,LOCK_EX);
>foreach $line (@SHADOW) {
>if ($line =~ /^$user:/) {
>$line =~ s/\n//g;
>(undef,undef,undef,$g1,$g2,$g3,$g4,$g5,$g6) = split(/:/, $line);
>$line = join(':',$user,$cpass,$mytime,$g1,$g2,$g3,$g4,$g5,$g6);
>$line = $line . "\n";
>}
>print SHADOW $line;
>}
>flock(SHADOW,LOCK_UN);
>close(SHADOW);


Украинские братья работают за еду? :)
А если используется pam_tcb? А если это FreeBSD?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. " - нужен спец по perl." 
Сообщение от dawnshade emailИскать по авторуВ закладки on 06-Дек-05, 00:29  (MSK)
>Украинские братья работают за еду? :)
>А если используется pam_tcb? А если это FreeBSD?


имеено. Так же они наивно думают, что скрипт спод вебсервера будет выполнятся с правами root (или это они так серваки настраивают, чтобы рут не дропался, которые они тут в каждую дырку пихают).
Ах! они читать еще не умеют... автор-то просил под веб, а они ему суют  $ARGV[0]....

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. " - нужен спец по perl." 
Сообщение от eSupport.org.ua Искать по авторуВ закладки on 06-Дек-05, 02:09  (MSK)
>имеено. Так же они наивно думают, что скрипт спод вебсервера будет выполнятся
>с правами root (или это они так серваки настраивают, чтобы рут
>не дропался, которые они тут в каждую дырку пихают).

При чем тут вебсервер и скрипт на перле?

>Ах! они читать еще не умеют... автор-то просил под веб, а они
>ему суют  $ARGV[0]....

Нет, Это Вы не умеете. Автор не просил под веб, автор просил перловый скрипт.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. " - нужен спец по perl." 
Сообщение от eSupport.org.ua Искать по авторуВ закладки on 06-Дек-05, 02:12  (MSK)
>Украинские братья работают за еду? :)

Это не работа вообще. Если для Вас - это работа, то для нас - это пустяки. А за пустяки деньги не берем.

>А если используется pam_tcb? А если это FreeBSD?

Код для FreeBSD:
($fd0, $fd1) = POSIX::pipe();
POSIX::write( $fd0, $pass, length($pass) );
system("/usr/sbin/pw","usermod","$user","-h",$fd1);

P.S. Читайте маны - они рулез.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. " - нужен спец по perl." 
Сообщение от FreD emailИскать по авторуВ закладки on 06-Дек-05, 21:37  (MSK)
>>Украинские братья работают за еду? :)
>
>Это не работа вообще. Если для Вас - это работа, то для
>нас - это пустяки. А за пустяки деньги не берем.
>
>P.S. Читайте маны - они рулез.
молодцы esuuport, уважаю

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. " - нужен спец по perl." 
Сообщение от Vivis emailИскать по авторуВ закладки(??) on 07-Дек-05, 09:08  (MSK)
>>Украинские братья работают за еду? :)
>
>Это не работа вообще. Если для Вас - это работа, то для
>нас - это пустяки. А за пустяки деньги не берем.

А если он не заработает? Саппорт от вас уже денег стоить будет? :-))

>>А если используется pam_tcb? А если это FreeBSD?
>
>Код для FreeBSD:
>($fd0, $fd1) = POSIX::pipe();
>POSIX::write( $fd0, $pass, length($pass) );
>system("/usr/sbin/pw","usermod","$user","-h",$fd1);
>
>P.S. Читайте маны - они рулез.

Гениальный сниппет! Может на шелле тоже сможете? :)


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

8. " - нужен спец по perl." 
Сообщение от eSupport.org.ua Искать по авторуВ закладки on 08-Дек-05, 00:07  (MSK)
>А если он не заработает? Саппорт от вас уже денег стоить будет?
>:-))

Будет

>Гениальный сниппет! Может на шелле тоже сможете? :)

Можем. Пишите в support at esupport.org.ua


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

9. " - нужен спец по perl." 
Сообщение от kost emailИскать по авторуВ закладки(??) on 17-Дек-05, 01:12  (MSK)
>#!/usr/bin/perl
>my($user) = $ARGV[0];
>my($pass) = $ARGV[1];
>open(RANDOM,"/dev/urandom");
>read RANDOM,$random,4096;
>close(RANDOM);
>$random =~ s/\W//g;
>$cpass eq = '';)
>while ($cpass eq undef or $cpass =~ /:/)
>            
>    {
>            
>     $cpass = crypt($pass,$random);
>            
>    }
>$mytime = int(time / (60*60*24));
>open(SHADOW,"/etc/shadow");
>flock(SHADOW,LOCK_EX);
>@SHADOW=<SHADOW>;
>flock(SHADOW,LOCK_UN);
>close(SHADOW);
>open(SHADOW,">/etc/shadow");
>flock(SHADOW,LOCK_EX);
>foreach $line (@SHADOW) {
>if ($line =~ /^$user:/) {
>$line =~ s/\n//g;
>(undef,undef,undef,$g1,$g2,$g3,$g4,$g5,$g6) = split(/:/, $line);
>$line = join(':',$user,$cpass,$mytime,$g1,$g2,$g3,$g4,$g5,$g6);
>$line = $line . "\n";
>}
>print SHADOW $line;
>}
>flock(SHADOW,LOCK_UN);
>close(SHADOW);


Не смог удержаться чтобы не прокоментировать код г-на eSupport.org.ua
Работать он конечно-же НЕ будет.

Критика по мери возврастания грубости ошибок:

Смысл локализовать переменные $user и $pass если все остальные не
локализованы + неплохо бы использавть use strict.

Загадочная строка 8 $cpass eq = '';)
Имелось ввиду, наверно, $cpass = '';

while ($cpass eq undef or $cpass =~ /:/)
$cpass eq undef - eq используется для строк undef не является строкой,
должно быть defined($cpass) or $cpass =~ /:/

flock(SHADOW,LOCK_EX) - константа(точнее процедура без параметров)
LOCK_EX НЕ импортируется по умолчания,
необходимо вызвать use Fcntl qw(:flock)

>flock(SHADOW,LOCK_UN);
>close(SHADOW);

Так делать категорически нельзя. Блокировка снимается при вызове close(),
читаем маны. При ручном снятии блокировки не происходит очистка буфера!!!
Физически оставшиеся данные из буфера будут записаны в файл только
при закрытии манипулятора.

Если очень хочется снять блокировку необходимо отключать буферизацию:
select((select(SHADOW), $| = 1)[0])
Подробнее можно прочитать в Perl CookBook.

Между первым открытием /etc/shadow (для чтения) и вторым
(для записи), существует вероятность потери данных, т.к. велика
возвожность вклинивания др.(такого-же) процесса, учитывая, что при
блокировки файла процессы выстраиваются в очередь.

Надо хотябы использовать LOCK_SH при первом открытии чтобы
уменьшить эту вероятность.

______________________
ICQ 330378228

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

10. " - нужен спец по perl." 
Сообщение от eSupport.org.ua Искать по авторуВ закладки on 17-Дек-05, 22:26  (MSK)
>Не смог удержаться чтобы не прокоментировать код г-на eSupport.org.ua
>Работать он конечно-же НЕ будет.

Незначительные ньюансы имеются, но код рабочий.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру