|
|
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)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/272528aa9e5b9.html, оценка из 5, голосов 10
|