И так, имеем:
1. Ubuntu 7.10 или выше
2. Желание использовать Skype
3. Огромную параною на использование проприетарного софта (подкрепленную ценными данными на компьютере).
Решение: запираем Skype в chroot — окружение.
И так устанавливаем schroot и debootstrap:
$sudo apt-get install schroot debootstrap
Редактируем файл /etc/schroot/schroot.conf
[sid] description=Debian sid (unstable) #location=/srv/schroot/sid #устарело, теперь используется directory directory=/srv/schroot/sid priority=3 users=rom groups=rom root-groups=rom
Устанавливаем минимальную систему (Debian) используя debootstrap, добавляя устанавливаемые пакеты с помощью —include=пакет1,пакет2,пакет3 и удаляя лишние с помошью —exclude=пакет1,пакет2, пакет3.
sid — это тип chroot.
/srv/schroot/sid — путь до корня chroot:
$ sudo debootstrap --arch i386 --include=aptitude sid /srv/schroot/sid http://ftp.br.debian.org/debian
теперь так
$ sudo debootstrap --arch i386 --include=aptitude sid /srv/schroot/sid http://http.debian.net/debian/
Запускаем chroot-окружение с правами root в нутри «тюрьмы» (я буду обозначать шел внутри chroot как skype# и skype$)
$ schroot -c sid -u root
Создаем пользователя skype (<id_rom> и <gid_rom> — это uid и gid пользователя реальной системы)
skype# adduser --disabled-password --uid <id_rom> --gid <gid_rom> skype
Устанавливаем скаченный дистрибутив для debian с официального сайта skype:
skype# dpkg --force-all -i skype-debian_2.0.0.72-1_i386.deb
Удовлетворяем зависимости:
skype# apt-get -f install skype# exit
В основной системе монтируем части реальной файловой системы (можно попробовать урезать):
$ sudo mount /dev /srv/schroot/sid/dev -o bind $ sudo mount /proc /srv/schroot/sid/proc -o bind $ sudo mount /tmp/.ICE-unix /srv/schroot/sid/tmp/.ICE-unix -o bind $ sudo mount /tmp/.X11-unix /srv/schroot/sid/tmp/.X11-unix -o bind
Так же, что бы не монтировать каждый раз после перезагрузки, можно прописать автомонтирование в /etc/fstab:
/dev /srv/schroot/sid/dev auto bind 0 0 /proc /srv/schroot/sid/proc auto bind 0 0 /tmp/.ICE-unix /srv/schroot/sid/tmp/.ICE-unix auto bind 0 0 /tmp/.X11-unix /srv/schroot/sid/tmp/.X11-unix auto bind 0 0
Проверяем переменную $DISPLAY реального пользователя:
$ echo $DISPLAY :0.0
Выключаем контроль за подключения к X-серверу, разрешая не авторизованные локальные подключения:
$ xhost +local:
Переходим в schroot и устанавливаем переменную:
$ cd / && schroot -c sid -u rom /bin/bash
skype$ export DISPLAY=":0.0"
Запускаем Skype:
skype$ skype --dbpath=/home/skype/.Skype & skype$ exit
Включаем контроль за подключения к X-серверу:
$ xhost -local:
Пользуемся 🙂
P.S. Скрипты для ленивых:
Для запуска используем скрипт /home/rom/skype.sh :
#/bin/sh #Настройка параметров web-камеры /usr/bin/dov4l -d /dev/video0 -b 25000 -c 3000 -n 7000 -w 0 >/dev/null xhost +local: cd / && schroot -c sid-roman -u rom /bin/sh /home/skype/skype.sh sleep 30 xhost -local:
Который в свою очередь вызывает другой скрипт в chroot окружении /srv/schroot/sid/home/skype/skype.sh :
export DISPLAY=":0.0" LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so skype --dbpath=/home/skype/.Skype & exit # LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so перед skype требуется для работы web-камеры.
Все.
Дорогой товарищ!
Мне очень понравилась эта статья 🙂
А мог ли бы ты нарисовать подобную методику для Мандривы?
Если платформа х64 и ядро новое, то необходимо подгружать 32х библиотеку, т. е. в пути писать не /usr/lib/, а /usr/lib32/
Как я понял, rom — это основной пользователь хост-системы?
А пользователь skype — это пользователь «тюрьмы», который должен иметь другое имя, но тот же uid, что и rom?
По моему нет, не обязательно. Это получилось автоматически. Главное что бы права на папки в основной системы были правильно расставлены, а иначе ничего сохранить не получится. Есть желание, можете проверить и отписаться 🙂
Вся безопасность такого решения летит к чертям, когда /dev монтируется в chroot-окружение
Да, вы правы по поводу /dev, но под мою задачу достаточно, а так вы правы надо монтировать только требуемые устройства о чем я и написал «В основной системе монтируем части реальной файловой системы (можно попробовать урезать):»
MAKEDEV жёсткий проканает для ограничения?