Страница 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" и до конца.
Я проверил права исполняемого здесь скрипта. Они высокие: на время тестирования мой пользовательский логин (не рутовский).
Права на папки тоже такие же.
Видимых несоответствий нет.
А в результате вылезает такое:
Код: Выделить всё
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
На папке, куда скрипт пытается прописать директории
были такие же прова. Переделал на пользователя "apache" со всеми разрешениями - не помогло.
В PHP "safe_mode = Off". Вообще, попробую его переставить, может было неправильно собирать его из исходников с
Можно ли как-то вычислить проблему по логам? Где и как стоит поискать?
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"?
Кстати, как из мирового опыта лучше будет выставить права на PHP-диры?
744 или как ещё?
Re: Как правильно раздать права?
Добавлено: 2009-04-17 20:50:47
zg
Dmitriy_K писал(а):Кстати, как из мирового опыта лучше будет выставить права на PHP-диры?
это например какие?
Re: Как правильно раздать права?
Добавлено: 2009-04-17 21:04:16
Dmitriy_K
Можно было бы 755 для удобства (просмотр не через админа), но не знаю насколько безопасно. Пожалуй, лучше обойдусь.