Что сделать для запущения приложения Java GUI в chrooted среде?

Просто установите mailutils, который должен содержать mail:

# apt-get install mailutils

Читайте больше о почте и GNU mailutils здесь

6
06.04.2011, 15:43
3 ответа

При попытке заставить какое-либо 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.

10
27.01.2020, 20:21
  • 1
    Многие, большое спасибо. Благодарите своему учебному руководству, я смог выполнить xterm без проблем (btw. Я думал, что openroot является дизайном для "скрытия" всех тех страшных деталей от пользователя), однако когда я выполняю JDownloader - никакое изменение, буквально. Это перестало работать за исключением (тот, я отправил рассматриваемый). –  greenoldman 07.04.2011, 12:46
  • 2
    chroot's может быть трудно отладить. Очевидно, что-то все еще отсутствует, но я не уверен что. Иногда я могу выяснить при помощи strace или эквивалентной программы. Сравнение работы strace с поврежденной. Главным образом вероятно, это пытается получить доступ к некоторому файлу, возможно сокет. strace -efile -oprog.trace prog предельная трассировка только до доступа к файлу, хранит трассировку к prog.trace и выполнения prog. –  penguin359 07.04.2011, 22:06
  • 3
    Примечание: если Ваш chroot не находится в той же файловой системе как/tmp, то можно ли связать, монтируют.X11-Unix –  totaam 23.02.2014, 19:25

Я не думаю, что существует что-либо, что необходимо сделать специально для приложений Java, но действительно необходимо сделать что-то для приложений для GUI в целом.

Я сделал это на своем домашнем компьютере, но я не дома прямо сейчас, так терпите меня. У меня есть сценарий, который монтирует все в мой chroot как /dev и /proc, но это также копирует ~/.X* также. Если я помню правильно, в Вашей домашней папке существуют файлы, которые запускаются с .Xauth, и Вы копируете тех, которые в домашнюю папку Вашей chroot среды. По моему опыту, эти файлы должны быть скопированы каждый раз, когда X перезапущен.

То, что я сделал бы для проверения этого метода, было, я только что запустил простое X приложений как xterm. Это было просто быстрое и простое приложение, с которым я мог протестировать. xterm должен дать Вам сообщение об ошибке, если оно не может соединиться с X-сервером.

У меня, оказывается, есть полный пакет X11, установленный в мой chroot, но я не знаю достаточно приблизительно X, чтобы знать, работают ли chroot'd приложения на chroot'd X-сервере или на X-сервере хоста.

1
27.01.2020, 20:21
  • 1
    . С openroot и пользователем root в chroot среде я получаю ошибку: "Недопустимый MIT-MAGIC-COOKIE-1 keyWarning: Эта программа является suid-корневой программой или запускается полностью пользователь". и с постоянным клиентом просто "xterm ошибка Xt: не Может открыть дисплей::0". –  greenoldman 07.04.2011, 12:29

Это работало на меня на 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!
6
27.01.2020, 20:21
  • 1
    Хорошо это просто телевизор я: xauth: error in locking authority file /tmp/kde-panzi/xauth-1000-_0 ... А-ч, вероятно, огибающий Вар! спасибо –  panzi 09.07.2014, 03:47

Теги

Похожие вопросы