在監獄內建造 NanoBSD

在監獄內建造 NanoBSD

我正在嘗試設定一個監獄來建立 NanoBSD 映像。它實際上是 NanoBSD 安裝之上的監獄。

我遇到的問題是我無法安裝設備md來執行“建置映像”部分。是否根本不可能md在監獄內安裝設備,或者是否有一些其他我需要轉動旋鈕嗎?

在主機上

/etc/rc.conf.local

jail_enable="YES"
jail_mount_enable="YES"
jail_list="build"
jail_set_hostname_allow="NO"
jail_build_hostname="build.vm"
jail_build_ip="192.168.0.100"
jail_build_rootdir="/mnt/zpool0/jails/build/home"
jail_build_devfs_enable="YES"
jail_build_devfs_ruleset="devfsrules_jail_build"

/etc/devfs.rules

[devfsrules_jail_build=5]
# nothing

監獄內

[root@build /usr/obj/nanobsd.PROLIANT_MICROSERVER]# sysctl security.jail
security.jail.param.cpuset.id: 0
security.jail.param.host.hostid: 0
security.jail.param.host.hostuuid: 64
security.jail.param.host.domainname: 256
security.jail.param.host.hostname: 256
security.jail.param.children.max: 0
security.jail.param.children.cur: 0
security.jail.param.enforce_statfs: 0
security.jail.param.securelevel: 0
security.jail.param.path: 1024
security.jail.param.name: 256
security.jail.param.parent: 0
security.jail.param.jid: 0
security.jail.enforce_statfs: 1
security.jail.mount_allowed: 1
security.jail.chflags_allowed: 1
security.jail.allow_raw_sockets: 0
security.jail.sysvipc_allowed: 0
security.jail.socket_unixiproute_only: 1
security.jail.set_hostname_allowed: 0
security.jail.jail_max_af_ips: 255
security.jail.jailed: 1

[root@build /usr/obj/nanobsd.PROLIANT_MICROSERVER]# mdconfig -l
md2 md0 md1 

md0md1是主機的虛擬磁碟。

bsdlabel看起來很明智

[root@build /usr/obj/nanobsd.PROLIANT_MICROSERVER]# bsdlabel /dev/md2s1
# /dev/md2s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:  1012016       16    4.2BSD        0     0     0 
  c:  1012032        0    unused        0     0         # "raw" part, don't edit

newfs運作正常

[root@build /usr/obj/nanobsd.PROLIANT_MICROSERVER]# newfs -U /dev/md2s1a
/dev/md2s1a: 494.1MB (1012016 sectors) block size 16384, fragment size 2048
    using 4 cylinder groups of 123.55MB, 7907 blks, 15872 inodes.
    with soft updates
super-block backups (for fsck -b #) at:
 160, 253184, 506208, 759232

mount失敗

[root@build /usr/obj/nanobsd.PROLIANT_MICROSERVER]# mount /dev/md2s1a _.mnt/
mount: /dev/md2s1a : Operation not permitted

更新:

我的一位同事指出

有一些檔案系統類型無論如何都無法安全地安裝在監獄中,例如 UFS、MSDOFS、EXTFS、XFS、REISERFS、NTFS 等,因為安裝它的用戶可以存取原始儲存並可能在一種會讓整個系統陷入恐慌的方式。

http://www.mail-archive.com/[電子郵件受保護]/msg160389.html

md因此,標準 nanobsd.sh 在使用裝置建置映像時似乎不會在監獄內運作。我將嘗試的一種可能的解決方案是chroot從主機進入建造監獄,而不是jexec外殼。

答案1

正如你所說,chroot 是正確的選擇。

您不想實現安全性,只需建置並更改根目錄以便安裝腳本能夠正確運行。這就是 chroot 的用途。

在某些系統上,沒有 chroot 二進位文件,但編寫一個簡單的腳本很容易實現您想要的一切(嘿,您可以稍後重複使用它!)。

相關內容