![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| HISH |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 24.4.2003 Где: Брянск Репутация: нет Всего: нет |
Вопрос у меня скорее алгоритмический... Но никак не могу придумать, как его решить. ситуация такая:
есть ядро..... к которому пишутся плугины. при запуске ядро делает chroot() в каталог с ними, и делает use каждому из плагинов (обычные .pm'ки). chroot() - условие обязетальное. Проблема в том, что когда я сказал chroot(), в плагинах use нельзя использовать - они то что им нужно просто не находят попробовал создавать конфиг, в котором пишу, какие модули надо до chroot() подключить - все работает. Но, например, я там использую LWP. когда создается request() (из LWP), он за собой еще какие-то use тащит а chroot() уже сделан, и прога опять вываливается |
|||
|
||||
| ElectricalStorm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 547 Регистрация: 22.1.2004 Репутация: нет Всего: 9 |
может быть проблема с путями !
можно и спользовать для определения пути к плугинам use lib; -------------------- Нужно знать инструмент, которым пользуешься |
|||
|
||||
| HISH |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 24.4.2003 Где: Брянск Репутация: нет Всего: нет |
Нет... Пример: я делаю use LWP. Просматривается массив @INC, и по всем путям ищется LWP.pm. Он находится и подключается. Я делаю chroot(), / теперь указывает в нужный мне каталог. Если я теперь вызываю LWP::request(), и т. к. в теле этого request() есть еще другие use, то нужные модули просто не находятся (/usr/lib/perl - такого пути уже нету). Самое простое решение - закинуть в каталог, куда я chroot() делаю, всю ветку /usr/lib/perl, НО chroot() я делаю не в определенную директорию, а в параметр, который через командную строчку пероедается. То есть я хочу один набор плагинов использовать - говорю perl proga.pl First_catalog, другой набор - perl proga.pl Second_set. В каждый каталог кидать свою копию модулей - накладно получается :-/
Поступило предложение сделать хардлинки на все модули, и раскидать их куда надо. Это нормально?.. |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: нет Всего: 32 |
Что в переменной окружения PATH?
Может, chroot заодно делает chdir ~? -------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| Nobody |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 25.8.2003 Где: Россия, Москва Репутация: нет Всего: 16 |
А действительно ли так необходим chroot?
-------------------- |
|||
|
||||
| HISH |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 24.4.2003 Где: Брянск Репутация: нет Всего: нет |
2MuToGeN: А при чем тут PATH? Каким был, таким и остался: /usr/local/qt/bin:/usr/bin:/usr/sbin и так далее
А задача вообще такая: пишется модульный бот для chat.ru. Чат сам представляет из себя кучу комнат, которые можно создавать и заходить в них. Бот должен крутиться не серваке, и когда чел заходит на определенную страничку, например, и вводит название канала, он должен на него зайти. Сам бот пишется модульным - само ядро ничего не делает, кроме реализации связей между модулями. В целях секьюрности настройки и список модулей по каждому каналу хранится в отдельной папке, и когда боту говорят "зайди на канал main", он делает chroot('main'), читает настройки и загружает именно те модули, которые хранятся именно в этой папке. Сделано это для того, чтобы на разных каналах могли быть разное поведение бота и список его функций (все это разруливается админом канала, которому предоставляется доступ по ftp или ssh к папке канала). А chroot() обязателен для обеспечения безопасности (ну это, я думаю, объяснять не надо) - админ канала может закачивать какие угодно модули к себе в песочницу, но ничему повредить не сможет. Единственный выход без chroot'а, ИМХО - это админу сервера вручную просматривать каждый модуль, который подключается к боту - но это, ессесно, не то. |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |