Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> chroot() - запарка :(, chroot 
:(
    Опции темы
HISH
Дата 29.1.2004, 03:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 24.4.2003
Где: Брянск

Репутация: нет
Всего: нет



Вопрос у меня скорее алгоритмический... Но никак не могу придумать, как его решить. ситуация такая:
есть ядро..... к которому пишутся плугины. при запуске ядро делает chroot() в каталог с ними, и делает use каждому из плагинов (обычные .pm'ки). chroot() - условие обязетальное. Проблема в том, что когда я сказал chroot(), в плагинах use нельзя использовать - они то что им нужно просто не находят попробовал создавать конфиг, в котором пишу, какие модули надо до chroot() подключить - все работает. Но, например, я там использую LWP. когда создается request() (из LWP), он за собой еще какие-то use тащит а chroot() уже сделан, и прога опять вываливается

PM WWW ICQ   Вверх
ElectricalStorm
Дата 30.1.2004, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: нет
Всего: 9



может быть проблема с путями !
можно и спользовать для определения пути к плугинам
use lib;



--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
HISH
Дата 30.1.2004, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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. В каждый каталог кидать свою копию модулей - накладно получается :-/
Поступило предложение сделать хардлинки на все модули, и раскидать их куда надо. Это нормально?..
PM WWW ICQ   Вверх
MuToGeN
Дата 31.1.2004, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 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!
PM MAIL ICQ   Вверх
Nobody
Дата 1.2.2004, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 25.8.2003
Где: Россия, Москва

Репутация: нет
Всего: 16



А действительно ли так необходим chroot?


--------------------
Алгоритм помещения вопросов на форуме
Выражаем спасибо вот ТАК
Use the Source, Luke!
PM MAIL WWW ICQ   Вверх
HISH
Дата 2.2.2004, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 24.4.2003
Где: Брянск

Репутация: нет
Всего: нет



2MuToGeN: А при чем тут PATH? Каким был, таким и остался: /usr/local/qt/bin:/usr/bin:/usr/sbin и так далее
А задача вообще такая: пишется модульный бот для chat.ru. Чат сам представляет из себя кучу комнат, которые можно создавать и заходить в них. Бот должен крутиться не серваке, и когда чел заходит на определенную страничку, например, и вводит название канала, он должен на него зайти. Сам бот пишется модульным - само ядро ничего не делает, кроме реализации связей между модулями.
В целях секьюрности настройки и список модулей по каждому каналу хранится в отдельной папке, и когда боту говорят "зайди на канал main", он делает chroot('main'), читает настройки и загружает именно те модули, которые хранятся именно в этой папке. Сделано это для того, чтобы на разных каналах могли быть разное поведение бота и список его функций (все это разруливается админом канала, которому предоставляется доступ по ftp или ssh к папке канала). А chroot() обязателен для обеспечения безопасности (ну это, я думаю, объяснять не надо) - админ канала может закачивать какие угодно модули к себе в песочницу, но ничему повредить не сможет. Единственный выход без chroot'а, ИМХО - это админу сервера вручную просматривать каждый модуль, который подключается к боту - но это, ессесно, не то.
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0460 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.