• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

zfs in der jail mit ezjail

pbtraveller

Well-Known Member
Themenstarter #1
Hi,

ich würde gerne in regelmäßigen Abständen einen zfs-pool von einer Maschinen auf eine andere über ssh per send und recv spiegeln. Das soll automatisiert erfolgen, weshalb die sendende Maschine einen key für den ssh-Zugang zur empfangenden Machine benötigt. Ich würde aber gerne sicherstellen, dass diejenigen, die auf die sendende Maschine Root-Zugriff haben, nicht ohne Kennwort auch auf die empfangende Maschine zugreifen können. Ich hatte daher folgende Idee:

1. ich erstelle auf der empfangenden Maschine eine jail mittels ezjail,
2. mounte den pool auf der empfangenden Maschine in per "zfs jail" in die jail,
3. gebe der sendenden Maschine einen Zugriff nur auf die Jail der empfangenden Jail.

Ich habe jetzt mal eine Jail auf der empfangenden Maschine angelegt und auch der Jail mittels "zfs jail jailname poolname" Zugriff auf den pool gegeben (so dachte ich zumindest). Wenn ich jetzt per "jexec JID su" in die Jail wechsele zeigt mir diese auch den pool und etwa darauf liegende filesysteme an. Allerdings kann ich in der Jail keine filesysteme erstellen. Ich erhalte immer ein "cannot create 'testdrive/test': permission denied"

Was muss ich noch ändern? Ich habe mich natürlich bereits im Netz umgeschaut und dort jede Menge zu devfs gelesen. Nur leider schiebe ich nicht, welche Settings ich konkret vornehmen muss.

ezjail beinhaltet ja unter /usr/local/etc/ezjail.conf die options:

#ezjail_mount_enable="YES"
#ezjail_devfs_enable="YES"
#ezjail_devfs_ruleset="devfsrules_jail"
#ezjail_procfs_enable="YES"
#ezjail_fdescfs_enable="YES

aber auch diese scheinen keinen Unterschied zu machen.

Kann mir jemand weiterhelfen?

Danke und Gruß

pbtraveller
 

Nukama

Well-Known Member
#2
Hey,

es muss ein eigenes Ruleset (z.B. "devfsrules_jail_zfs") erstellt werden, in der das zfs Device in der Jail angezeigt wird (unhide),
dass dann unter /usr/local/etc/ezjail/jailname mit export jail_jailname_devfs_ruleset="devfsrules_jail_zfs" jailspezifisch aktiviert werden kann.
Dann sollte es möglich sein (wobei meines erachtens noch eine ZFS Option gesetzt werden muss) den ZFS Datensatz innerhalb einer Jail zu administrieren.
Ich hoffe, damit ist dir geholfen. Ich finde auf die schnelle meine Konfiguration nicht mehr. ;)

Grüße
 
#3
Du könntest den SSH-Schlüssel auch an ein Kommando binden, dann kann man mit dem Schlüssel nur das eine Kommando ausführen und bekommt kein Login damit.

Rob
 

solarix

Konsolenpenner
#4
Hallo ich wollte nach fragen ob Du Dein Problem schon gelöst hast.

Hänge hier mit einem neu installierten FreeBSD 10
Code:
 uname -a
FreeBSD gnom 10.0-RELEASE FreeBSD 10.0-RELEASE #0 r260789: Thu Jan 16 22:34:59 UTC 201
gerade am gleichen Schmerz. mit zfs list innerhalb des Jails sehe ich zwar das Dataset.
Aber mounten oder zfs set mountpoint funktioniert überhaupt nicht.
Code:
cannot set property for  permission denied
Bekomme da auch nur ein cannot set property for permission denied

Kann es sein das sich da bei den sysctl's etwas geändert hat?

Code:
security.jail.mount_allowed=1
security.jail.enforce_statfs=0
die devfs Rules haben zumindest auf einem älteren FreeBSD mal funktioniert.
Code:
[devfsrules_zfs=10]
add include $devfsrules_hide_all
add include $devfsrules_unhide_basic
add include $devfsrules_unhide_login
add path 'zfs' unhide
Dem OS, scheint es auch relativ egal zu sein das die ZFS Properties auf jailed gesetzt wurden.

Code:
root@gnom:/usr/local/etc/ezjail # zfs get all |grep jailed
halde                                    jailed                on                    local
halde/apache                            jailed                on                    local
halde/home                              jailed                on                    local
halde/samba                              jailed                on                    local