2gusia (2gusia) wrote,
2gusia
2gusia

Category:

Консоль клетки (jail)

Клетка до некоторой степени - отдельная машина, использующая ядро хост системы но со своим установленным софтом (т.н. мир). Чтобы клетку как-то использовать этот софт надо настроить-установить. Наиболее прямой способ настроить клетку - командная строка.Как в неё попасть?

Самый простой способ - выполнить команду(ы) внутри клетки из консоли хост системы командой jexec, например

nas4free ~/ root~$ jexec 1 cd / && ls -la
total 18
drwxr-xr-x 3 root wheel 512 Feb 7 17:32 ./
drwxr-xr-x 18 root wheel 512 Feb 6 21:59 ../
-rw------- 1 root wheel 38 Feb 8 21:34 .bash_history
drwx------ 2 root wheel 512 Mar 1 2014 .ssh/


Но по одной команде выполнять неудобно. Одиночной команды или конвейера (&& в примере выше) обычно не хватает. Тогда как команду можно выполнить командный интерпретатор, обычно tcsh, ср

nas4free ~/ root~$ jls
JID IP Address Hostname Path
1 192.168.1.55 owncloud /mnt/Pool/Ext/Finch/usr/jails/owncloud
2 192.168.1.54 tm /mnt/Pool/Ext/Finch/usr/jails/tm
4 192.168.1.249 jail3.local /mnt/Pool/Ext/Jails/jail3


Здесь мы сначала смотрим список исполняемых клеток. И выбираем нужную по JID (уникальному номеру, который получают клетки в порядке запуска)

nas4free ~/ root~$ jexec 4 tcsh
root@jail3:/ # ls
.cshrc bin etc media rescue sys var
.profile boot lib mnt root tmp
COPYRIGHT dev libexec proc sbin usr
root@jail3:/ # exit
exit
nas4free ~/ root~$


Здесь мы запускаем командный интерпретатор (шелл в просторечье, от англ shell) внутри клетки. Обратите внимание - системное приглашение меняется от nas4free ~/ root~$ на root@jail3:/ #
Затем исполняем команды в клетке (ls для примера) и выходим из шелла (exit). Системное приглашение меняется обратно.

Прим. Команды выше я исполнял от суперпользователя (root). Обычно для административных задач это и требуется. Но в клетку можно зайти и другим (существующим в клетке и способным к логину) пользователем, напр

nas4free ~/ root~$ jexec -u www 4 tcsh
www@jail3:/ % whoami
www
www@jail3:/ % exit
exit
nas4free ~/ root~$


А вот исполнить jexec от имени непривилегированного пользователя не удастся

nas4free ~/ root~$ su transmission
[transmission@nas4free /root]$ jexec 4 tcsh
jexec: jail_attach(4): Operation not permitted
[transmission@nas4free /root]$


NB. jexec ещё и универсальный способ - для клеток, созданных любым способом - вручную, через TheBrig, qjail или ещё каким способом.

PS[Существуют и другие способы попасть в консоль клетки.]Существуют и другие способы попасть в консоль клетки.
Для qjail клеток есть команда console

nas4free ~/ root~$ qjail console tm

finch: chrooting to "/mnt/Pool/Ext/Finch" for this 1 command only.
Last login: Sat Aug 1 00:04:44 on pts/0
FreeBSD 10.2-RELEASE-p9 (NAS4FREE-amd64) #0 r294041M: Thu Jan 14 22:57:44 CET 2016

Welcome to your FreeBSD jail.
tm ~/ root~# exit
logout

nas4free ~/ root~$


Её недостаток в том, что работает тольк с созданными qjail клетками. А еще по умолчанию не настроена русская кодировка и русские буквы идут кракозябрами.

Можно настроить ssh непосредственно внутрь клетки. Это требует трудозатрат - но способ, в принципе, правильный. Например, когда кого-то можно пускать только в клетку и никак не в хост систему.

Tags: jail, nas, nas4free
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 4 comments