Erstellen von NanoBSD in einem Jaling

Erstellen von NanoBSD in einem Jaling

Ich versuche, ein Jail einzurichten, um die Erstellung eines NanoBSD-Images zu ermöglichen. Es ist eigentlich ein Jail über einer NanoBSD-Installation.

Das Problem, das ich habe, ist, dass ich das Gerät nicht mounten kann, mdum den Teil „Image erstellen“ durchzuführen. Ist es einfach nicht möglich, ein mdGerät in einem Jail zu mounten, oder gibt es eineandereKnopf, an dem ich drehen muss?

Auf dem Host

/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

Im Gefängnis

[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 

md0und md1sind die Ramdisks des Hosts.

bsdlabelsieht vernünftig aus

[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

newfsläuft ok

[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

mountschlägt fehl

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

AKTUALISIEREN:

Einer meiner Kollegen wies darauf hin

Es gibt einige Dateisystemtypen, die auf keinen Fall sicher in einem Jail gemountet werden können, z. B. UFS, MSDOFS, EXTFS, XFS, REISERFS, NTFS usw., da der Benutzer, der das Dateisystem mountet, Zugriff auf den Rohspeicher hat und diesen so beschädigen kann, dass das gesamte System in Panik gerät.

Aushttp://www.mail-archive.com/[email geschützt]/msg160389.html

Es scheint also, dass das Standard-Nanobsd.sh nicht in einem Jail ausgeführt wird, während es das mdGerät zum Erstellen des Images verwendet. Eine mögliche Lösung, die ich ausprobieren werde, ist, chrootvom Host in das Build-Jail zu wechseln, anstatt jexecin eine Shell.

Antwort1

Wie gesagt, chroot ist die Lösung.

Sie möchten keine Sicherheit erreichen, sondern nur die Root erstellen und ändern, damit Ihre Installationsskripte korrekt funktionieren. Dafür ist chroot da.

Auf manchen Systemen gibt es keine Chroot-Binärdatei, aber es ist ziemlich einfach, ein einfaches Skript zu codieren, das alles erreicht, was Sie wollen (und hey, Sie können es später wiederverwenden!).

verwandte Informationen