Forum Webscript.Ru

Программирование => Perl => Тема начата: Skif от 10 Сентября 2004, 11:59:04

Название: запуск процесса от имени другого пользователя
Отправлено: Skif от 10 Сентября 2004, 11:59:04
Собственно сабж.
Имеется необходимость запустить ряд процессов от имени другого пользователя. Имеется вебсервер. имеется список личных сообщений с правами 600 и ясен пень права от которых работает сервер и права юзера  - различны.
Как проделать такой финт?
Название: запуск процесса от имени другого пользователя
Отправлено: NeoNox от 10 Сентября 2004, 12:21:51
Платформа?
Название: запуск процесса от имени другого пользователя
Отправлено: Skif от 10 Сентября 2004, 13:06:34
FreeBSD
root@server #uname -a
FreeBSD server.owe 5.2.1-RELEASE-p9 FreeBSD 5.2.1-RELEASE-p9 #13: Wed Sep  8 15:24:37 GMT 2004     root@server.owe:/usr/src/sys/i386/compile/SKIF  i386
root@server #

root@server #perl -v
This is perl, v5.6.1 built for i386-freebsd
Copyright 1987-2001, Larry Wall

root@server #httpd -v
Server version: Apache/2.0.48
Server built:   Jul  8 2004 20:05:59
root@server #
Название: запуск процесса от имени другого пользователя
Отправлено: NeoNox от 10 Сентября 2004, 13:21:19
http://search.cpan.org/~landman/Sudo-0.10/lib/Sudo.pm
Название: запуск процесса от имени другого пользователя
Отправлено: Phoinix от 10 Сентября 2004, 13:32:02
NeoNox

Хм... мне тоже интересен этот вопрос, но при использование этого модуля получается что будет выполняться команда:

> sudo [command]

от указанного пользователя? или просто (от него же):

> [command]

Потому, что если команда будет выполняться с sudo от имени моего пользователя, команда выполнится от пользователя root, что не совсем безопасно...

P.S. Хотя, впрочем, о чем это я... сейчас попробую...
Название: запуск процесса от имени другого пользователя
Отправлено: NeoNox от 10 Сентября 2004, 13:40:53
он использует IPC::Run.
а вообще это обертка к sudo - man sudo
Название: запуск процесса от имени другого пользователя
Отправлено: Skif от 10 Сентября 2004, 13:52:37
А такой вопрос - у меня сервер имеет пользователя www  с правами коего и работает. А файл принадлежит nobody, ясное дело, что ни шела ни каталога нету. Проблем с сим не будет?
Название: запуск процесса от имени другого пользователя
Отправлено: Phoinix от 10 Сентября 2004, 14:06:36
NeoNox

Все-таки с sudo... И модуль кривоватый...
IPC::Run - спасибо посмотрю...
Название: запуск процесса от имени другого пользователя
Отправлено: Phoinix от 10 Сентября 2004, 14:16:40
Skif
Цитировать
А файл принадлежит nobody, ясное дело, что ни шела ни каталога нету

Ну и интересно от имени какого пользователя ты тогда собрался запускать скрипты? Только судя по всему root...
Название: запуск процесса от имени другого пользователя
Отправлено: Skif от 10 Сентября 2004, 14:30:30
Вот потому и спрашиваю, чтобы потом локти не кусать.

Оптимальный вариант - от имени именно пользователя nobody

Скрипт выполняется на серваке с процессом под правами www, а сам исполняет действия(скрипт) с правами nobody.
Вот как?
Название: запуск процесса от имени другого пользователя
Отправлено: NeoNox от 10 Сентября 2004, 14:42:55
А выполнять с правами nobody основной скрипт никак?
Название: запуск процесса от имени другого пользователя
Отправлено: Skif от 10 Сентября 2004, 14:54:33
Объясни как это сделать.
Процессы httpd исполняются с правами www, а каталог и файлы которые мне надо считать 600 с владельцем nobody. Я пытаюсь просмотреть:


$mail_dir="$user_dir$cur";
print "$mail_dir
";
opendir (DIR, $mail_dir);
@allfiles = grep {$_ ne \'.\' and $_ ne \'..\'}readdir DIR;
closedir (DIR);
print @allfiles;
$a=@allfiles;
print "$a";
print "\\n";
for ($ind=0; $ind<=$a; $ind++) {
        $line_arr = $allfiles[$ind];
        $my_arr[$ind]=$line_arr;
}


в результате получаю пустой массив. Не говоря уже про то, что ни один файл я открыть не могу. Вариант поменять права на файлы не катит - каждый раз пополняются с все теми же правами. Попросту - это почтовый ящик. И туда загоняются сообщения для пользователя. Софтина шлепает владельца nobody и права 600.
Все. Ясное дело, что если процесс httpd, с правами которого запускается любой скрипт на серваке, не nobody то доступ он ни куда не получит. конечно, как вариант, надавить на чела и потребовать, что бы поправили конфиг на апаче. Но фишка в том, что у себя то я поправлю, а вот на ТОМ серваке у меня не получиться. А пишу ясен пень не для себя.
Я шел с горем по полам выбил.
Название: запуск процесса от имени другого пользователя
Отправлено: NeoNox от 10 Сентября 2004, 16:18:06
Аха. теперь я понял задачу. Значит делаем так:
1) мастерим скрипт который проверяет mail queue и рассовывает почту в твои папки, которые ты сможешь читать скриптом c правами httpd.
2) вешаем его в крон
3) достаем уже разобранную почту. можно прикрутить сюда еще создание индексов для поиска и остальную дребядень.

-1) так как ты задумал сделать не удасться. почта - штука конфиденциальная и просматривать ее кому не поподя не дадут.