- open_basedir и Crontab,
Pahanivo, 19:31 , 03-Сен-10 (1)>Подскажите, пожалуйста, как ограничить пользователя его домашней директорией, если он запускает скрипты >кроном? а какая разница кроном он запускает или нет?
- open_basedir и Crontab,
bartwell, 19:47 , 03-Сен-10 (2)Разница в том, что если из-под апача, то для каждого виртуалхоста можно указать свой open_basedir. А как указать разные open_basedir для каждого пользователя?
- open_basedir и Crontab,
Pahanivo, 06:27 , 06-Сен-10 (3)
- open_basedir и Crontab,
bartwell, 10:37 , 06-Сен-10 (4)>>Разница в том, что если из-под апача, то для каждого виртуалхоста можно >>указать свой open_basedir. А как указать разные open_basedir для каждого пользователя? >> > >http://www.php.ru/manual/features.safe-mode.html#ini.sect.sa... >тут написано вроде ... если я правильно понял что тебе надо ... >Нет, это немного не то. Нужно чтобы крон запускал PHP-скрипты у пользователя user1 с open_basedir=/home/user1/, у пользователя user2 - open_basedir=/home/user2/ и т.д.
- open_basedir и Crontab,
Pahanivo, 17:35 , 06-Сен-10 (5)>>>Разница в том, что если из-под апача, то для каждого виртуалхоста можно >>>указать свой open_basedir. А как указать разные open_basedir для каждого пользователя? >>> >> >>http://www.php.ru/manual/features.safe-mode.html#ini.sect.sa... >>тут написано вроде ... если я правильно понял что тебе надо ... >> > >Нет, это немного не то. Нужно чтобы крон запускал PHP-скрипты у пользователя >user1 с open_basedir=/home/user1/, у пользователя user2 - open_basedir=/home/user2/ и т.д. цитирую (последнее предложение) open_basedir string Ограничивает список файлов, которые могут быть открыты в PHP, указанным деревом директорий независимо от того, используется защищенный режим или нет. Каждый раз, когда скрипт пытается открыть файл, например, при помощи функции fopen() или gzopen(), проверяется месторасположение файла. В случае, если он находится вне указанного дерева директорий, PHP отказывает в открытия файла. Все символические ссылки распознаются и преобразуются, поэтому обойти это ограничение при помощи символических ссылок невозможно. Специальное значение . указывает, что базовой следует считать директорию, в которой расположен сам скрипт.
- open_basedir и Crontab,
bartwell, 17:45 , 06-Сен-10 (6)Но ведь скрипт может быть расположен в /home/user1/dir1/dir2/ и тогда это специальное значение будет указывать именно на /home/user1/dir1/dir2/, а не на /home/user1/, как нужно...
- open_basedir и Crontab,
Pahanivo, 17:53 , 06-Сен-10 (7)>Но ведь скрипт может быть расположен в /home/user1/dir1/dir2/ и тогда это специальное >значение будет указывать именно на /home/user1/dir1/dir2/, а не на /home/user1/, как >нужно... mv/cp ? :))
- open_basedir и Crontab,
bartwell, 17:59 , 06-Сен-10 (8)Эмм, в смысле, заставлять пользователей копировать все свои файлы в одну папку (/home/user1/)? ) Не подойдет )
- open_basedir и Crontab,
Nimdar, 19:05 , 06-Сен-10 (9)>Но ведь скрипт может быть расположен в /home/user1/dir1/dir2/ и тогда это специальное >значение будет указывать именно на /home/user1/dir1/dir2/, а не на /home/user1/, как >нужно... Ничего подобного. Если open_basedir будет установлен /home/user1/ (обязательно закрывать слешом, иначе будут доступны /home/user11, /home/user111, /home/user12, короче все /home/user1*), то скрипт может находиться как угодно глубоко в /home/user1. Понятие "дерево директорий" подразумевает конкретную директорию со всеми поддиректориями. Как ты верно заметил, в случае php-apache это запросто. php-cli такое не пройдёт. Т.е. на твой вопрос > А как указать разные open_basedir для каждого пользователя? ответ - никак. Надо играть пользовательскими правами, т.е. запретить user1 лазить к user2 и т.д.
- open_basedir и Crontab,
Pahanivo, 19:15 , 06-Сен-10 (10)>Как ты верно заметил, в случае php-apache это запросто. > >php-cli такое не пройдёт. Т.е. на твой вопрос >> А как указать разные open_basedir для каждого пользователя? > >ответ - никак. > >Надо играть пользовательскими правами, т.е. запретить user1 лазить к user2 и т.д. >я не видел в доках явного указания что фича работает только в модульном режиме ... ткни плиз - cli не особо юзал
- open_basedir и Crontab,
bartwell, 19:30 , 06-Сен-10 (11)>>Как ты верно заметил, в случае php-apache это запросто. >> >>php-cli такое не пройдёт. Т.е. на твой вопрос >>> А как указать разные open_basedir для каждого пользователя? >> >>ответ - никак. А есть ли возможность запускать php-скрипт в cli с определенным php.ini? Я видел в хелпе опцию "-c <path>|<file> Look for php.ini file in this directory", но не уверен в ее назначении. И опять-таки, как будет тогда полностью вызываться скрипт? /home/user1/script.php > php -c /ini/user1.ini - так? Не повлечет ли это за собой проблем?
- open_basedir и Crontab,
bartwell, 19:32 , 06-Сен-10 (12)>я не видел в доках явного указания что фича работает только в >модульном режиме ... >ткни плиз - cli не особо юзал Сама директива-то доступна и работает. Но если в режиме модуля апача можно указать эту директиву в <VirtualHost>, то в режиме командной строки никаких виртуальных хостов нет и указывать ее просто негде...
- open_basedir и Crontab,
Pahanivo, 09:17 , 07-Сен-10 (13)>>я не видел в доках явного указания что фича работает только в >>модульном режиме ... >>ткни плиз - cli не особо юзал > >Сама директива-то доступна и работает. Но если в режиме модуля апача можно указать эту директиву в <VirtualHost>, то в режиме командной строки никаких виртуальных хостов нет и указывать ее просто негде...о чудо! открываю php.ini и вижу эту директиву! (повторяю, сам к cli режиме не пробовал - но я нигде не вижу надписи "не работает в cli")
- open_basedir и Crontab,
bartwell, 10:23 , 07-Сен-10 (14)Ну понятное дело, что она там есть. Я ж говорю, сама директива-то доступна и работает. Проблема в том, что php.ini один, а пользователей много. И для всех он один. А open_basedir нужен для всех разный.
- open_basedir и Crontab,
Pahanivo, 11:49 , 07-Сен-10 (15)>Ну понятное дело, что она там есть. Я ж говорю, сама директива-то >доступна и работает. Проблема в том, что php.ini один, а пользователей >много. И для всех он один. А open_basedir нужен для всех >разный. ПОСТАВЬ ТОЧКУ!
- open_basedir и Crontab,
bartwell, 11:57 , 07-Сен-10 (16)>ПОСТАВЬ ТОЧКУ! Точка будет приравнена к текущей директории, а не к домашней. Это не подходит.
- open_basedir и Crontab,
Pahanivo, 12:05 , 07-Сен-10 (17)>>ПОСТАВЬ ТОЧКУ! > >Точка будет приравнена к текущей директории, а не к домашней. Это не >подходит. и? у тебя скрипт шарится по всей файлухе? или сам скрипт лежит не в хомяке?
- open_basedir и Crontab,
bartwell, 12:10 , 07-Сен-10 (18)>и? у тебя скрипт шарится по всей файлухе? или сам скрипт лежит >не в хомяке? Если скрипт лежит в /home/user1/www/dir1/script.php, то он не сможет например выполнить include("/home/user1/script.php");
- open_basedir и Crontab,
Pahanivo, 12:26 , 07-Сен-10 (19)>>и? у тебя скрипт шарится по всей файлухе? или сам скрипт лежит >>не в хомяке? > >Если скрипт лежит в /home/user1/www/dir1/script.php, то он не сможет например выполнить include("/home/user1/script.php"); >используй safe_mode
- open_basedir и Crontab,
bartwell, 12:38 , 07-Сен-10 (20)>используй safe_mode safe_mode в 5.3 объявлен как deprecated... Не очень хорошее решение.
- open_basedir и Crontab,
Nimdar, 14:17 , 07-Сен-10 (22)>>и? у тебя скрипт шарится по всей файлухе? или сам скрипт лежит >>не в хомяке? > >Если скрипт лежит в /home/user1/www/dir1/script.php, то он не сможет например выполнить include("/home/user1/script.php"); >Если у тебя open_basedir будет /home/user1/, то никаких проблем не будет, я выше уже писал. И чтобы два раза не вставать, да, можно использовать -с php.ini для каждого пользователя. Но как ты заставишь и проконтролируешь пользователей, чтобы они запускали скрипты именно так?
- open_basedir и Crontab,
bartwell, 16:04 , 07-Сен-10 (26)>И чтобы два раза не вставать, да, можно использовать -с php.ini для >каждого пользователя. Но как ты заставишь и проконтролируешь пользователей, чтобы они >запускали скрипты именно так? А если дать возможность добавлять задания только через WEB-панель... То, похоже, проблему можно решить этим способом.
- open_basedir и Crontab,
Nimdar, 14:20 , 07-Сен-10 (23)>>>ПОСТАВЬ ТОЧКУ! >> >>Точка будет приравнена к текущей директории, а не к домашней. Это не >>подходит. > >и? у тебя скрипт шарится по всей файлухе? или сам скрипт лежит >не в хомяке? Так проблема, как я понимаю, в том, чтобы какой-нибудь особо продвинутый пользователь не мог шариться и/или запускать скрипт не в хомяке. Короче, нечто вроде php-чрута.
- open_basedir и Crontab,
Nimdar, 14:15 , 07-Сен-10 (21)>[оверквотинг удален] >>> А как указать разные open_basedir для каждого пользователя? >> >>ответ - никак. >> >>Надо играть пользовательскими правами, т.е. запретить user1 лазить к user2 и т.д. >> > >я не видел в доках явного указания что фича работает только в >модульном режиме ... >ткни плиз - cli не особо юзал Я нигде не утверждал, что в cli не работает. Но в _данном_конкретном_ случае open_basedir не имеет смысла, ибо пользователей много, а параметр - один, и привязать его к конкретному пользователю невозможно.
- open_basedir и Crontab,
Pahanivo, 14:46 , 07-Сен-10 (24)>[оверквотинг удален] >>>Надо играть пользовательскими правами, т.е. запретить user1 лазить к user2 и т.д. >>> >> >>я не видел в доках явного указания что фича работает только в >>модульном режиме ... >>ткни плиз - cli не особо юзал > >Я нигде не утверждал, что в cli не работает. Но в _данном_конкретном_ >случае open_basedir не имеет смысла, ибо пользователей много, а параметр - >один, и привязать его к конкретному пользователю невозможно. кто пишет скрипт - пользователь! где он лежит - в хомяке! используя "точку" можно по крайней мере запереть его там - хотя вообще какой глубинный смысл этого?
- open_basedir и Crontab,
Nimdar, 14:57 , 07-Сен-10 (25)>[оверквотинг удален] >>>ткни плиз - cli не особо юзал >> >>Я нигде не утверждал, что в cli не работает. Но в _данном_конкретном_ >>случае open_basedir не имеет смысла, ибо пользователей много, а параметр - >>один, и привязать его к конкретному пользователю невозможно. > >кто пишет скрипт - пользователь! >где он лежит - в хомяке! >используя "точку" можно по крайней мере запереть его там - хотя вообще >какой глубинный смысл этого? Уже в который раз забываешь один момент :) А если скрипт "глубже" хоть на один каталог? Ему будет недоступен остальной хомяк, а этого делать нельзя. Пользователь должен иметь полную свободу в своём ~, и резвиться там как ему заблагорассудится, но не должен иметь возможности выйти из своего домашнего каталога.
- open_basedir и Crontab,
Pahanivo, 17:39 , 07-Сен-10 (28)>Уже в который раз забываешь один момент :) >А если скрипт "глубже" хоть на один каталог? Ему будет недоступен остальной >хомяк, а этого делать нельзя. Пользователь должен иметь полную свободу в >своём ~, и резвиться там как ему заблагорассудится, но не должен >иметь возможности выйти из своего домашнего каталога. я это прекрасно понимаю - учите пользователей грамотно писать скрипты вообще тут вариант и сесть и рыбу съесть - надо тоже определится уже ...
- open_basedir и Crontab,
Nimdar, 15:28 , 08-Сен-10 (30)>>Уже в который раз забываешь один момент :) >>А если скрипт "глубже" хоть на один каталог? Ему будет недоступен остальной >>хомяк, а этого делать нельзя. Пользователь должен иметь полную свободу в >>своём ~, и резвиться там как ему заблагорассудится, но не должен >>иметь возможности выйти из своего домашнего каталога. > >я это прекрасно понимаю - учите пользователей грамотно писать скрипты С какой это стати я, как админ, должен учить пользователей? Для этого есть их более опытные коллеги. Чтобы не наломали дров, выделяется загончик, и пусть там делают что хотят. >вообще тут вариант и сесть и рыбу съесть - надо тоже определится >уже ...
- open_basedir и Crontab,
bartwell, 16:17 , 07-Сен-10 (27)>кто пишет скрипт - пользователь! >где он лежит - в хомяке! >используя "точку" можно по крайней мере запереть его там - хотя вообще >какой глубинный смысл этого? Nimdar правильно сказал. Хотелось бы наверное только добавить пример: К примеру имеем двух пользователей (на деле их гораздо больше) Вариант 1. Ставим в php.ini open_basedir=/home/user1/ Результат: пользователь user1 не может подняться выше домашней директории (все верно), а у user2 вообще перестают работать PHP-скрипты (неверно!). Вариант 2. Ставим в php.ini open_basedir=. К примеру, user1 пишет скрипт размещеный в /home/user1/www/script.php со следующим кодом <? require("/home/user1/functions.php"); ?> и получает ошибку, что ему нельзя оттуда инклудить файлы (неверно!). Именно поэтому оба эти варианты непригодны.
- open_basedir и Crontab,
Pahanivo, 17:41 , 07-Сен-10 (29)>[оверквотинг удален] > >Вариант 2. >Ставим в php.ini open_basedir=. >К примеру, user1 пишет скрипт размещеный в /home/user1/www/script.php со следующим кодом ><? >require("/home/user1/functions.php"); >?> >и получает ошибку, что ему нельзя оттуда инклудить файлы (неверно!). > >Именно поэтому оба эти варианты непригодны. сделай уже все правами на диры + acl - хватит заниматься садомазо ...
|