감옥 안에서 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

따라서 표준 nanobsd.sh는 md장치를 사용하여 이미지를 만드는 동안 감옥 내에서 실행되지 않는 것 같습니다. 내가 시도할 잠재적인 해결책 중 하나는 chroot호스트에서 jexec셸이 아닌 빌드 감옥으로 들어가는 것입니다.

답변1

당신이 말했듯이 chroot가 갈 길입니다.

보안을 달성하고 싶지 않다면 설치 스크립트가 올바르게 작동하도록 루트를 빌드하고 변경하기만 하면 됩니다. 이것이 바로 chroot의 목적입니다.

일부 시스템에는 chroot 바이너리가 없지만 원하는 모든 것을 달성하는 간단한 스크립트를 코딩하는 것은 쉽습니다(그리고 나중에 다시 사용할 수 있습니다!).

관련 정보