Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Запускаем софт в chroot: на примере Chromium  (Прочитано 7268 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Zeratul

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
    • NWS
Запускаем софт в chroot: на примере Chromium
« : 08 Сентября 2010, 10:33:21 »
Для начала небольшая выкладка мыслей. Отношение к how-to почти не имеет:
(Нажмите, чтобы показать/скрыть)

У нас имеется — Ubuntu 10.04 и быстрый интернет (нужно не мало качать)
Задача — запустить софт (в случае данной статьи, chromium) в песочнице.



— Подготавливаем систему для чрута
1. Получаем права рута:
sudo -i
2. Устанавливаем необходимые пакеты:
apt-get install schroot debootstrap
3. Создаем папку где будет размещаться будущая система:
mkdir -p /chroot/chromiumПапку конечно можно создавать любую и в любом разделе, если он смонтирован не с флагами noexec/nosuid (имхо).

4. Делаем бекап конфигурационного файла schroot:
cp /etc/schroot/schroot.conf /etc/schroot/schroot.conf.backup
5. Открываем /etc/schroot/schroot.conf в любом удобном для вас редакторе:
И прописываем туда (можно в начало, куда хотите) примерно следующее:
# Внутри скобок имя чрута при вызове
[chromium]
description=Jail for Chromium. Ubuntu lucid

# Путь до чрута
directory=/chroot/chromium

priority=3

# Здесь заменяем user на свой логин в системе
users=user
groups=user
# Желательно во всех (если сделаете больше одного) чрутах использовать именно логин пользователя основной системы
# Иначе в будущем при использовании буду некоторые не соответствия.
# Я не знаю могут ли они помешать работе системы, но лучше перестраховаться.

# Настоятельно рекомендую оставить как есть.
root-users=root
# Чуть позже мы будем подключать часть вашей корневой системы в чрут
# И поэтому лучше не создавать путей обхода системных механизмов поднятия прав

6. Собираем будущий чрут в папке:
debootstrap --arch i386 --include="aptitude,python-software-properties,nano" --verbose lucid /chroot/chromium http://us.archive.ubuntu.com/ubuntu /usr/share/debootstrap/scripts/lucidВсе параметры можно изменить под себя. Например поставить текстовый редактор (консольный) по вкусу.
Базовый набор пакетов я не ставлю (так как внутри идет гном и много мусора), он называется `ubuntu-standard`.


— Настраиваем систему
7. Входим в собранную систему под рутом:
schroot -c chromium -u root
8. Создаем группу и пользователя с именами и id  как на основной системе:
# Создаем группу пользователей
addgroup --gid 1000 user
# И пользователя от которого будет работать софт
adduser --disabled-password --uid 1000 --gid 1000 user

9. Подключаем основной репозиторий. Добавляем в /etc/apt/sources.list следующие строки:
deb http://us.archive.ubuntu.com/ubuntu/ lucid multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ lucid multiverse

10. Подключаем PPA chromium-daily:
add-apt-repository ppa:chromium-daily
11. Обновляем БД пакетов:
apt-get update
12. Устанавливаем Chromium:
apt-get install chromium-browser
13. Внимание. Вероятно данный шаг зависит от билда хромиума, поэтому выполнять только если флеш не работает!
Цитировать
Вообще флеш плагин устанавливается вот так:
apt-get install flashplugin-nonfreeТребуется подключенный multiverse репозиторий.

Чуть ниже костыльный способ:
(Нажмите, чтобы показать/скрыть)

14. Устанавливаем пакеты для GTK2 темы, в моем случае `Human-Clearlooks`:
apt-get install gtk2-engines gtk2-engines-murrine
15. Создаем папки куда будет записан конфиг стиля для GTK:
mkdir -p /home/user/.gconf/desktop/gnome/interface
16. Записываем в конфиг /home/user/.gconf/desktop/gnome/interface/%gconf.xml следующее:
<?xml version="1.0"?>
<gconf>
        <entry name="accessibility" mtime="1274437979" type="bool" value="true"/>
        <entry name="icon_theme" mtime="1283883812" type="string">
                <stringvalue>Humanity</stringvalue>
        </entry>
        <entry name="gtk_theme" mtime="1283884223" type="string">
                <stringvalue>Human-Clearlooks</stringvalue>
        </entry>
</gconf>
Замечу, аналогичный файл (с выбранной вами темой) имеется и у вас, его надо просто скопировать с основной системы в chroot.
Если файла у вас нет, то это значит, что у вас свежая Ubuntu. Просто смените тему (можно туда и обратно): файл должен появиться.

17. Выходим из schroot:
exit
18. Заканчиваем c GTK. Копируем используемую вами тему в chroot:
cp -R /usr/share/themes/Human-Clearlooks /chroot/chromium/usr/share/themes

— Соединяем чрут с основной системой
19. Внимание. Данный шаг можно пропустить, и просто ребутнуть машину после записи постоянных конфигов (20 и 21 действия).
(Нажмите, чтобы показать/скрыть)

20. Аккуратно. Добавляем в конец файла /etc/fstab:
# Chromium CHROOT
/dev            /chroot/chromium/dev            auto bind 0 0
/proc           /chroot/chromium/proc           auto bind 0 0
# Опять же не уверен
#/sys            /chroot/chromium/sys            auto bind 0 0

21. Добавляем в /etc/rc.local до `exit`:
# Выставляем правильный права на /dev/shm в руте.
chmod 777 /chroot/chromium/dev/shm
# Почему так получается при бинде, не понятно.
# А ведь хромиум (конкретно он!) хочет писать в эту директорию

# Chromium chroot
mount -o bind /tmp/.ICE-unix /chroot/chromium/tmp/.ICE-unix
mount -o bind /tmp/.X11-unix /chroot/chromium/tmp/.X11-unix

22. Нам больше не нужны права рута на основной машине, выходим:
exit

— Автоматизация запуска
23. Проверяем переменную $DISPLAY реального пользователя:
echo $DISPLAY
# Выдаст скорее всего:
# :0.0

24. Создаем папку для ручных скриптов, если у вас таковой нету:
mkdir ~/.scripts
25. Создаем пусковой скрипт ~/.scripts/chromium.sh:
#!/bin/sh
xhost +local:
cd / && schroot -c chromium -u user /bin/sh /home/user/chromium.sh
sleep 30
xhost -local:

26. Выставляем права на исполнение:
chmod +x ~/.scripts/chromium.sh
27. Заходим в chroot но уже под пользователя:
schroot -c chromium -u user
28. Создаем файл /home/user/chromium.sh:
export DISPLAY=":0.0"

chromium-browser %U&
exit

29. Выходим из chroot:
exit
30. Тестируем:
~/.scripts/chromium.shЕсли все правильно, то после появления сообщения о разрешение локальных коннектов к X, у вас откроется браузер.

— Мелкие доработки

....Будет дополнятся....
Хотелось бы добавить информацию о том, как сделать все более безопасно и ещё удобнее.
Ну а так же хотелось написать скрипты для крона, который будет обновлять чрут автоматически.

Ну и самое главное - уточнить наличие проблемы с флеш плагином.


Пока how-to в виде демо-версии. Пока надо уточнить безопасность самой системы использования schroot.
Ну и как минимум дать проверить профессионалам.  :)

Но все пункты были проверены и должны работать.
« Последнее редактирование: 24 Октября 2010, 02:24:16 от Zeratul »
Просьба использовать для связи Jabber или icq.
Этот аккуант исключительно для выкладывания HowTo.

 

Страница сгенерирована за 0.026 секунд. Запросов: 21.