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

Как правильно раздать права?

Добавлено: 2009-03-06 9:58:44
Telegazik
Тут небольшая проблема, может кто подскажет как правильнее сделать.
Есть страничка, на ней забивает мак адрес абонента, скрпит все пишет в базу mysql. Надо чтобы скрипт добавлял новый мак в лист статик ip днср и рестартовал службу. Но проблема упирается в правильную раздачу прав, ведь днсп работает под другим юзером, а скрипт под www:www как я понимаю. Как реализовать?

Re: Как правильно раздать права?

Добавлено: 2009-03-06 10:05:25
zg
через судо

Re: Как правильно раздать права?

Добавлено: 2009-03-06 10:05:53
paradox
system
вроде работал

Re: Как правильно раздать права?

Добавлено: 2009-03-06 13:02:22
Telegazik
system - это порт? Утилитка?
Односложный ответ очень трудно трактовать однозначно. Не могли бы вы пояснить свой ответ?

Re: Как правильно раздать права?

Добавлено: 2009-03-06 13:41:02
skeletor
Я бы сделал так. Написал бы скрипт и запихнул бы его в крон по времени запуска каждую минуту. Этот скрипт по крону будет запускать от рута, собственно может выполнять добавление записей в dhcp и последующий рестарт демона. Будет файлик, в который будут заносится изменения о МАСе. А скрипт будет читать данные из файла, и добавлять\удалять записи. Естественно, нужна проверка на валидность добавляемых данных.

Re: Как правильно раздать права?

Добавлено: 2009-03-06 13:52:12
Telegazik
Интересное решение. Попробую так реализовать!
Спасибо за подсказку!

Re: Как правильно раздать права?

Добавлено: 2009-03-06 14:53:44
paradox
как задали вопрос так и ответили
вы ж не сказали на каком языке у вас скрипт
system то функция выполнение команды
ищите в своем языке такую функцию и запускайте
в крайнем случае враппер всегда работал

Re: Как правильно раздать права?

Добавлено: 2009-04-16 22:20:10
Dmitriy_K
У меня вот тоже сходные проблемы. Сейчас завожу сайты на новый сервер FreeBSD. Поддержки кого-то, кто знал настройки исполнения скриптов нет. И вот нарвался на затык с правами на исполнение такого фрагмента:

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

function make_cache($filename)
   {
   global $common_data_server;
   $content=$this->body.$this->separator.$this->title.$this->separator.$this->keywords.$this->separator.$this->description;
   @mkdir($common_data_server."block_cache/block".$this->block_id."/");
   chmod($common_data_server."block_cache/block".$this->block_id."/",0777);
   $file=fopen($common_data_server."block_cache/block".$this->block_id."/".$filename,"w");
   fwrite($file,$content);
   fclose($file);
   chmod($common_data_server."block_cache/block".$this->block_id."/".$filename,0777);
   }
Я, конечно не знаток, но вижу команды создания директории и т.д.
Ошибки начинаются с первого "chmod" и до конца.
Я проверил права исполняемого здесь скрипта. Они высокие: на время тестирования мой пользовательский логин (не рутовский).

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

Current PHP script owner: admin
Права на папки тоже такие же.
Видимых несоответствий нет. :cz2:

А в результате вылезает такое:

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

Warning: chmod() [function.chmod]: Operation not permitted in /data/modules/module/module.php on line 120
Warning: fopen(/data/block_cache/block1035/c4ae60988ec59ac33a84cf3fef2ba974.html) [function.fopen]: failed to open stream: Permission denied in /data/modules/module/module.php on line 122
Warning: fwrite(): supplied argument is not a valid stream resource in /data/modules/module/module.php on line 123
Warning: fclose(): supplied argument is not a valid stream resource in /data/modules/module/module.php on line 124
Warning: chmod() [function.chmod]: Operation not permitted in /data/modules/module/module.php on line 125
Warning: chmod() [function.chmod]: Operation not permitted in /data/modules/module/module.php on line 120

Re: Как правильно раздать права?

Добавлено: 2009-04-16 22:25:15
zg
Dmitriy_K писал(а):Права на папки тоже такие же.
выложи права и владельца на папку

Re: Как правильно раздать права?

Добавлено: 2009-04-17 18:02:34
Dmitriy_K
zg писал(а):выложи права и владельца на папку
Сейчас у меня на неё права 755

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

drwxr-xr-x  *****  wheel  512 Oct 28 15:29 data
На папке, куда скрипт пытается прописать директории

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

/data/block_cache/
были такие же прова. Переделал на пользователя "apache" со всеми разрешениями - не помогло.
В PHP "safe_mode = Off". Вообще, попробую его переставить, может было неправильно собирать его из исходников с

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

--enable-safe-mode
Можно ли как-то вычислить проблему по логам? Где и как стоит поискать?

Re: Как правильно раздать права?

Добавлено: 2009-04-17 18:07:24
zg
скрипт кривой, логи тут не помогут

Re: Как правильно раздать права?

Добавлено: 2009-04-17 19:50:53
Dmitriy_K
zg писал(а):скрипт кривой, логи тут не помогут
Да, там вся система запутана. Её фирма РБК разрабатывала. Куча недокументированных возможностей. Я нашёл пока пять скриптов, в которых был зашит старый рутовый пароль на базу. Может и на другие права даступа параметры где-то заныканы.

А с какой стороны всё-таки можно попробовать подступиться к проблеме?

Re: Как правильно раздать права?

Добавлено: 2009-04-17 20:04:03
zg
Dmitriy_K писал(а):Куча недокументированных возможностей.
эм... лучше сказать атавизмов
Dmitriy_K писал(а):А с какой стороны всё-таки можно попробовать подступиться к проблеме?
var_dump

Re: Как правильно раздать права?

Добавлено: 2009-04-17 20:19:08
Dmitriy_K
Вот хрень! Эмпирически попробовал сменить пользователя на все директории на "apache" и ошибки пропали. Оказывается высоких прав на исполнение скриптам недостаточно, нужно чтобы совпадало с тем, что у сервера. Блинн, а для тестирования двух серверов мне теперь придётся менять пользователя то на "apache", то на "nginx"? :-o
Кстати, как из мирового опыта лучше будет выставить права на PHP-диры?
744 или как ещё?

Re: Как правильно раздать права?

Добавлено: 2009-04-17 20:50:47
zg
Dmitriy_K писал(а):Кстати, как из мирового опыта лучше будет выставить права на PHP-диры?
это например какие?

Re: Как правильно раздать права?

Добавлено: 2009-04-17 21:04:16
Dmitriy_K
Можно было бы 755 для удобства (просмотр не через админа), но не знаю насколько безопасно. Пожалуй, лучше обойдусь.