有些系統管理者把 jail 分為下列兩種:“complete(完全)” jail — 通常包括完整的 FreeBSD 系統;另一種則為 “service(服務)” jail — 專門只跑某單一可能要用特殊權限的程式或 service。 這只是一種概念上的區分 ,並不影響如何建立 jail 的過程。 至於如何建立 jail 在 jail(8) 內有更詳細的說明:
#
setenv D /here/is/the/jail
#
mkdir -p $D
![]()
#
cd /usr/src
#
make world DESTDIR=$D
![]()
#
cd etc/
[12]#
make distribution DESTDIR=$D
![]()
#
mount -t devfs $D/dev
首先就是先為 jail 找個家。 該路徑是在 host 系統中的 jail
實體位置。 習慣是放在 | |
該指令將會在 jail 目錄中安裝所需的 binary、library、manual 說明等 。 這些是以傳統的 FreeBSD 方式完成 — 即首先先編譯所有檔案, 接著再裝到目的地。 | |
使用 | |
對於 jail 環境而言,devfs(8) 檔案系統的掛載並非必須, 但另一方面,幾乎所有應用程式都會需要存取至少一個設備(device), 這主要取決於該程式目的而定。 控制 jail 所能存取的設備非常重要, 因為不正確的設定,會讓攻擊者對 jail 有機可趁。 至於如何透過 devfs(8) 來控制的規則,可以參閱 devfs(8) 及 devfs.conf(5) 說明。 |
裝好 jail 之後,就可以用 jail(8) 工具。 jail(8)
需要四項必填參數,這些參數在 節 15.3.1, “何為 Jail” 有介紹過。
除了這四個參數之外,還可以指定其他參數,像是以特定帳號在 jail 中執行
process。
參數取決於 jail 類型而定;對於 virtual system(虛擬系統)
,那麼就選擇 command
/etc/rc
,
因為它會完成真正 FreeBSD 系統啟動所需的操作。 對於 service(服務)
jail 而言,執行的指令取決於將在 jail 內執行的 service
或應用程式而定。
Jail 通常要在系統開機時啟動,因此 FreeBSD 的 rc
機制提供一些便利的方式來簡化這些工作:
開機時要啟動的 jail 清單要加到 rc.conf(5) 設定檔:
jail_enable="YES" # 若設為 NO 則表示不自動啟動 jail
jail_list="www
" # 若有許多 jail 則請以空白隔開來寫
對於每一筆在 jail_list
所列出的 jail,
也要在 rc.conf(5) 做出相對應的設定:
jail_www
_rootdir="/usr/jail/www" # jail 的根目錄 jail_www
_hostname="www
.example.org" # jail 的 hostname jail_www
_ip="192.168.0.10" # jail 的 IP address jail_www
_devfs_enable="YES" # 在 jail 內 mount devfs jail_www
_devfs_ruleset="www_ruleset
" # jail 內所用的 devfs 規則表
在 rc.conf(5) 所預設的 jail 啟動設定會跑
/etc/rc
內的 jail script,也就是說會假設 jail
是完整的虛擬系統。 若要用 service jail 類型,則要另外指定啟動指令,
方法是設定對應的
jail_
設定。jailname
_exec_start
若欲知道所有可用的選項清單,請參閱 rc.conf(5) 說明。
也可以透過手動執行 /etc/rc.d/jail
script
來啟動或停止 rc.conf
所設定的 jail:
#
/etc/rc.d/jail start www
#
/etc/rc.d/jail stop www
目前尚無任何方法來很乾淨地關閉 jail(8)。 此乃因為正常用來關閉系統的指令,目前尚不能在 jail 中使用。 目前關閉 jail 最佳的方式,是在 jail 內執行下列指令,或者 jail 外面透過 jexec(8) 執行下列指令:
#
sh /etc/rc.shutdown
詳情請參閱 jail(8) 說明。
本文及其他文件,可由此下載: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。
若有 FreeBSD 方面疑問,請先閱讀
FreeBSD 相關文件,如不能解決的話,再洽詢
<questions@FreeBSD.org>。
關於本文件的問題,請洽詢
<doc@FreeBSD.org>。