Страница 1 из 1

Запуск процесса от другого пользователя

Добавлено: 2008-08-26 14:25:37
savio
Есть у меня скрипт mytest.php - читает с БД ссылку и запускает wget. Скрипт должен работать от юзера mytets
добавил юзера mytest? далее делаю

Код: Выделить всё

 chown mytest:mytest /usr/local/www/test/cron/mytest.php

далее закидываю на выполнение скрипта в крон новоиспеченного пользователя запись

Код: Выделить всё

crontab -u mytest -e
собствено запись

Код: Выделить всё

*/1     *       *       *       *       /usr/local/www/test/cron/mytest.php
Жду минуту и смотрю top
...
9092 root 1 96 0 5760K 2464K select 0:01 0.00% wget
...
запустился wget от root'а. чего делаю не так?

Re: Запуск процесса от другого пользователя

Добавлено: 2008-08-26 14:38:46
manefesto
пробуй

Код: Выделить всё

sudo mytest
crontab -e

Re: Запуск процесса от другого пользователя

Добавлено: 2008-08-26 14:51:23
savio
cсделал
#su mytest
#crontab -e
тоже самое. стартует от рута

Re: Запуск процесса от другого пользователя

Добавлено: 2008-08-26 14:57:36
terminus
/usr/local/bin/php случайно не суидный?

Re: Запуск процесса от другого пользователя

Добавлено: 2008-08-26 14:59:46
savio
извеняюсь, но что значит "суидный"?

Re: Запуск процесса от другого пользователя

Добавлено: 2008-08-26 15:00:37
manefesto
тэкс...очень странно.
По идее не должно такого быть.
Сделай так.
Напиши в начало wget.sh следующие

Код: Выделить всё

echo `whoami` > /tmp/startwget
А потом смотри /tmp/startwget от имени кого запустилось.
Просто получается что cron запускает юзерскую задачу, а вот смена пользователя не происходит.

Re: Запуск процесса от другого пользователя

Добавлено: 2008-08-26 15:05:59
terminus

Код: Выделить всё

Проверить:
# ls -laso /usr/local/bin/php
Суидный - тот у которого поставлен бит суидности - выполнение происходит не от лица того кто запускает, а от того кто владелец. Например:

Код: Выделить всё

если выполнить от рута
# chown root:wheel ./srcipt.sh
# chmod 4555 ./script.sh 

а потом от юзера
$ ./script.sh

то скрипт все равно запустится от рута

Re: Запуск процесса от другого пользователя

Добавлено: 2008-08-26 15:40:27
savio
ясно. вот результат выполнения

Код: Выделить всё

]# ls -laso /usr/local/bin/php
12512 -rwxr-xr-x  1 root  wheel  - 6381943 Apr  5 15:40 /usr/local/bin/php


Re: Запуск процесса от другого пользователя

Добавлено: 2008-08-26 15:48:32
LimpTeaM
прошу прощения за то что влезаю, но есть вопросик :)
разве в кроне нельзя указать пользователя от которого должен запускаться скрипт?

Код: Выделить всё

*/1     *       *       *       *    mytest   /usr/local/www/test/cron/mytest.php
ну это как предположение :)

Re: Запуск процесса от другого пользователя

Добавлено: 2008-08-26 15:58:17
savio
нужно, но только в файле /etc/crontab

Re: Запуск процесса от другого пользователя

Добавлено: 2008-08-26 16:12:13
savio
так кому ставить бит суидности? поставил его скрипту

Код: Выделить всё

#chmod u+s mytest.php
# ls -l
#-rwsrwxrwx  1 mytest  mytest  9546 Aug 26 14:11 mytest.php
в mytest.php есть

Код: Выделить всё

#/usr/local/bin/php
<?php
...
exec(" /usr/local/bin/wget {ну и ссылка на скачку которую беру с MySql}");
...
?>
wget попрежнему стартует с крона от рута...

Re: Запуск процесса от другого пользователя

Добавлено: 2008-08-26 16:28:58
savio
нда.... ничего не понимаю...
отключил на время cron.
зашел под юзером(su mytest)
запустил скрипт - wget работает от пользователя mytest
убил процесс. зашел под рутом, запустил суидный mytest.php - wget запустился под рутом
по ходу дела этот суидный бит никакой роли не играет?

Re: Запуск процесса от другого пользователя

Добавлено: 2008-08-26 21:14:15
f_andrey
savio писал(а):по ходу дела этот суидный бит никакой роли не играет?
Граждане не ленитесь читать документацию и прочие хорошие книжки, суидный бит нужен для запуска программ требуюших административных полномочий НЕ привелигированными пользователями.
Кстати а что вы читали по теме прежде чем задать вопрос?