The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
open_basedir и Crontab, !*! bartwell, 03-Сен-10, 15:50  [смотреть все]
Подскажите, пожалуйста, как ограничить пользователя его домашней директорией, если он запускает скрипты кроном?
  • 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. А как указать разные open_basedir для каждого пользователя?
        >

        http://www.php.ru/manual/features.safe-mode.html#ini.sect.sa...
        тут написано вроде ... если я правильно понял что тебе надо ...

        • 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, !*! 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 - хватит заниматься садомазо ...




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру