Приветствую всех :)
Ситуация: скрипт запускается из-под сишного суидного враппера: 
char param[PATH_MAX] = "/mail/qmail/bin/uforeach.pl"; 
int main(int argc, char *argv[]) 
{ 
execv(param, argv); 
return(0); 
} 
Из-под скрипта видно, что он запущен с 
UID=1015, GID=0, EUID=0, EGID=0 
После запуска скрипт хочет сделать себе EUID=UID и EGID=GID (понизить привилегии до уровня вызвавшего пользователя). Делаю все, как написано в man perlsec на сей счет: 
#!/usr/bin/perl -w 
use strict;                                     
use integer;                                     
use English; 
    
print STDERR "1. PID=$PID, UID=$UID, GID=$GID, EUID=$EUID, EGID=$EGID\n"; 
my @temp = ($EUID, $EGID); 
$EUID = $UID; 
$EGID = $GID;    #      initgroups() also called! 
# Make sure privs are really gone 
($EUID, $EGID) = @temp; 
print STDERR "2. PID=$PID, UID=$UID, GID=$GID, EUID=$EUID, EGID=$EGID\n"; 
die "Can't drop privileges" unless $UID == $EUID  && $GID eq $EGID; 
print STDERR "Ok\n"; 
И не работает. 
Пускаю от враппер от юзера с UID=1015, GID=0, права rwsr-xr-x. Права на сам скрипт - обычный root:wheel 755. 
Имеем следующий output: 
1. PID=79963, UID=1015, GID=0 0 0, EUID=0, EGID=0 0 0 
2. PID=79963, UID=1015, GID=0 0 0, EUID=0, EGID=0 0 0 
Can't drop privileges at /mail/qmail/bin/uforeach.pl line 14. 
Ключик -U вместо/вместе с -w не помогает. 
Что можно сделать ? 
На всякий случай: все это делается для того, чтобы в суидном скрипте выполнить foreach (</path/*.ext>), чего этот чертов taint mode не позволяет. Вот и сооружаю  open(KID, "-") - "create a child process with reduced privilege who does the dirty work for you", как в мане написано. Да только приоритет понизить не могу :(
FreeBSD 4.7-RELEASE 
Perl, version 5.005_03 built for i386-freebsd 
Заранее спасибо. 

    
      Ответ на:
      
          комментарий
        от vilfred 
  
    
        Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
      
Похожие темы
- Форум двунаправленный канал через ssh на perl (2003)
 - Форум shell script suid wrapper. (2008)
 - Форум Can't locate find.pl in @INC (2015)
 - Форум Perl + FastCGI + nginx (2009)
 - Форум Postfix фильтр подсчета почты (2010)
 
- Форум Почему не работает скрипт? (2013)
 - Форум Не до конца освобоздается память программой (си и Glib) (2015)
 - Форум EUID=0 (2005)
 - Форум perl-скрипт (2013)
 - Форум скрипт perl (2002)