При попытке заставить какое-либо chrooted приложение обнаруживаться в X11, то Вам будут нужны несколько вещей, настроенных правильно. Каждый - допустимое DISPLAY
переменная среды, вторая, является надлежащим файлом Xauthority, и третий и самый важный, доступ к сокету, используемому X11/Xorg. X11 может использовать или сокет сети TCP или сокет Домена Unix. Сокет TCP будет легче использовать от chroot, но самым современным рабочим столам выключили TCP с -nolisten tcp
или что-то подобное установило на X-сервере. Сокеты TCP запускаются в порте TCP 6000 для дисплея:0 до 6 063 для последнего дисплея. Пока сокеты TCP слушают, Вы не должны должны быть делать что-либо больше с сокетами. Все еще необходимо волноваться о DISPLAY и Xauthority. Сокеты домена Unix требуют немного большего количества работы и, по крайней мере, на Linux, находятся под /tmp/.X11-unix/X?
где? число от 0 до 63. Если Ваш chroot находился в той же файловой системе как /tmp
затем можно использовать жесткие ссылки, по крайней мере, на Linux. Символьные ссылки не оставят chroot. Замена? с числом требуемого дисплея:
mkdir /path/to/chroot/tmp
chmod 1777 /path/to/chroot/tmp
mkdir /path/to/chroot/tmp/.X11-unix
chmod 1777 /path/to/chroot/tmp/.X11-unix
ln -f /tmp/.X11-unix/X? /path/to/chroot/tmp/.X11-unix/X?
mkdir
и chmod
только потребность, которая будет сделана однажды, но файл сокета, должна будет быть воссоздана с ln
на каждых X сессиях. Если /tmp
не находится в той же файловой системе, жизнь более трудна, и Вам будет нужно некоторое хакерство, такое как создание /tmp/.X11-unix
символьная ссылка на соответствующий каталог под chroot. Затем, удостоверьтесь DISPLAY
переменная среды установлена и соответствует тому, что используется Вашим терминалом и другими приложениями X11. Наконец, для копирования по .Xauthority
, использовать xauth
. Необходимо найти cookie соответствия для сессии X11, и этот cookie будет отличаться для каждой сессии. Использовать xauth list $DISPLAY
распечатать cookie для Вашего DISPLAY
. Имя будет похоже host:?
или host/unix:?
где хост является именем хоста компьютера и? число дисплея. Число дисплея может быть получено с echo $DISPLAY
и это будет число после двоеточия (:) и перед любым периодом (.) для копирования по Xauthority, используйте что-то вроде этого:
xauth extract /path/to/chroot/.Xauthority host/unix:1
xauth -f /path/to/chroot/.Xauthority list
Вторая команда простой список скопированные записи. Если необходимо скопировать при использовании sudo или другая команда для изменения пользователей попробуйте что-то вроде этого:
xauth extract - host/unix:1 | sudo xauth -f /path/to/chroot/.Xauthority merge -
Если место Вы помещаете .Xauthority
файл не является корневым каталогом для chrooted пользователя, необходимо будет установить XAUTHORITY
переменная среды:
export XAUTHORITY=/path/to/chroot/.Xauthority
Как можно, вероятно, сказать, это не типично для запущения приложения GUI под chroot.
Я не думаю, что существует что-либо, что необходимо сделать специально для приложений Java, но действительно необходимо сделать что-то для приложений для GUI в целом.
Я сделал это на своем домашнем компьютере, но я не дома прямо сейчас, так терпите меня. У меня есть сценарий, который монтирует все в мой chroot как /dev
и /proc
, но это также копирует ~/.X*
также. Если я помню правильно, в Вашей домашней папке существуют файлы, которые запускаются с .Xauth
, и Вы копируете тех, которые в домашнюю папку Вашей chroot среды. По моему опыту, эти файлы должны быть скопированы каждый раз, когда X перезапущен.
То, что я сделал бы для проверения этого метода, было, я только что запустил простое X приложений как xterm
. Это было просто быстрое и простое приложение, с которым я мог протестировать. xterm
должен дать Вам сообщение об ошибке, если оно не может соединиться с X-сервером.
У меня, оказывается, есть полный пакет X11, установленный в мой chroot, но я не знаю достаточно приблизительно X, чтобы знать, работают ли chroot'd приложения на chroot'd X-сервере или на X-сервере хоста.
Это работало на меня на ArchLinux chrooting в Debian. В хосте:
$ xauth list
latitude/unix:0 MIT-MAGIC-COOKIE-1 d4474d13c
Теперь в chroot среде:
# xauth add latitude/unix:0 MIT-MAGIC-COOKIE-1 d4474d13c
# xcalc # works!
xauth: error in locking authority file /tmp/kde-panzi/xauth-1000-_0
... А-ч, вероятно, огибающий Вар! спасибо
– panzi
09.07.2014, 03:47
strace -efile -oprog.trace prog
предельная трассировка только до доступа к файлу, хранит трассировку кprog.trace
и выполненияprog
. – penguin359 07.04.2011, 22:06