Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Michael Smirnov                      2:5020/400     16 Nov 2001  18:46:51
 To : All
 Subject : suidperl & %ENV
 -------------------------------------------------------------------------------- 
 
 Доблестным сисадминам посвящается.....
 
 Hа FreeBSD 4.4-Release имеется CGI-скрипт, использующий модуль IBPerl
 http://ib.demo.ru/Download/IBPerl-08p3.tar.gz
 и модуль Quota-1.4 из CPAN.
 Чтобы у CGI-скрипта были права читать юзерские квоты,
 сделан root-suid-ным и сам скрипт, и /usr/bin/suidperl
 Квоты он теперь читает успешно, но при этой suid-ности
 вылезает ошибка IBPerl  при выполнении SQL-запроса.
 ---------------
 Statement Error:
 Cannot determine statement (IB_prepare).SQL=select groups,limit from sers
 where myuser='test'
 ---------------
 Cтоит убрать suid - и ошибки SQL не возникает!
 Hо нет прав для чтения квот :-(((((
 
 Юзер берется из Environment CGI-скрипта и подставляется в строку SQL:
 my $user=$ENV{'REMOTE_USER'};
 ..........
 my $st = new IBPerl::Statement( Transaction => $tr,
    TimestampFormat => '%d.%m.%Y %H:%M:%S',
    SQL => "select groups,limit from sers where myuser='$user'");
 
 Когда я беру юзера не из $ENV{'REMOTE_USER'}, а задаю
 my $user='test'
 то скрипт выполняется ДАЖЕ при suid root!
 Значит suid-ность что-то вытворяет с %ENV,
 и поганит мне значение переменной $user  !?!
 
 Пишу в лог значение $user c помощью unpack("H*",$ENV{'REMOTE_USER'}):
 получается "74657374", т.е. test
 Подумал, что этот глюк - баг самого перла,
 например, какие-нибудь отличия в обработке строк на C и Perl....
 
 Пробовал и на Perl 5.005_03, который идет с FreeBSD,
 и поставил perl-5.6.1 из сырцов (установленные модули не трогал)
 - на обоих такой глюк.
 
 Сделал suid-ным скрипт printenv из поставки Апача - работает,
 выдает этот самый %ENV!
 
 В чем причина этого злостного глюка?
 У меня идеи кончились.
 
 СУБД Interbase (FirebirdCS-0.9-4.FreeBSD).
 apache_1.3.20rusPL30.5 собран с mod_perl,
 но этот скрипт работает под чистым CGI.
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 suidperl & %ENV   Michael Smirnov   16 Nov 2001 18:46:51 
 Re: suidperl & %ENV   Michael Smirnov   21 Nov 2001 22:20:05 
Архивное /ru.perl/272528aa9e5b9.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional