The OpenNET Project / Index page

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

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

"смена EUID в перловом скрипте"
Сообщение от Andrey_эМ emailИскать по авторуВ закладки on 29-Сен-03, 11:03  (MSK)
Приветствую всех :)

Ситуация: скрипт запускается из-под сишного суидного враппера:

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

Заранее спасибо.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "смена EUID в перловом скрипте"
Сообщение от Andrey_эМ emailИскать по авторуВ закладки on 29-Сен-03, 15:32  (MSK)

>На всякий случай: все это делается для того, чтобы в суидном скрипте выполнить foreach (</path/*.ext>), чего этот чертов taint mode не позволяет.

Проблема решена (точнее, обойдена) использованием readdir вместо foreach.

Всем спасибо...

p.s. а узнать, отчего не менялся euid, все же хотелось бы :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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