Der OpenSolaris fork Openindiana und SMB CIFS Share mit ZFS
Man hat bei Solaris über CIFS die Möglichkeit die Berechtigungsstruckturen von Microsoft Windows Systemen zusetzten. Ich meine damit, man macht eine Freigabe und kann dann die Datei- und Ordnerberechtigungen auf dieser Freigabe mit seinem Windows Client genau so bearbeiten und setzten, als wenn diese auf einem anderen Windows System liegen. Man hat sogar die Möglichkeit sein Solaris System ins Active Directory seiners ADS zu buchen und dieses zur Rechtevergabe zu nutzen! Ja, ich finde es auch geil 🙂
Hier möchte ich nun einmal in einem kleinen Beispiel beschreiben wie man einen einfachen Share für diesen Zweck aufbaut und wie man die Berechtigungen setzt.
Als Ausgangssystem nehme ich ein OpenIndiana in der Version oi_151a2 und mit lokalen Benutzeraccounts. Wenn ich Zeit finde mache ich noch ein Update mit Active Directory Integration…
Damit ich bei meinen „Spielchen“ Mist bauen darf, erstelle ich mir vor solchen Arbeiten immer ein neues Boot Environment:
$ beadm create vor-cifs-test Created successfully
Jetzt kann schon mal nicht mehr viel schief gehen!
Wir brauchen natürlich noch den kernelbasierten Teil des CIFS Server für Solaris, dieser installiert sich wie folgt fast von alleine:
$ pkg install storage-server Zu installierende Pakete: 19 Startumgebung erstellen: Nein Neu zu startende Dienste: 1 DOWNLOAD PAKETE DATEIEN ÜBERTRAGUNG (MB) Completed 19/19 750/750 47.9/47.9 PHASE AKTIONEN Installationsphase 1498/1498 PHASE ELEMENTE Paketstatus-Aktualisierungsphase 19/19 Abbildstatus-Aktualisierungsphase 2/2
Jetzt sind nun nicht nur die Grundlagen für den CIFS Samba Server gelegt sondern auch für alle anderen denkbaren Storage Ideen 🙂
So dann werfen wir mal die Riemen auf den Samba Server:
$ svcadm enable -r smb/server $ svcadm start network/smb/server:default
Kurze Kontrolle ob alles läuft:
$ svcs |grep smb online 14:32:45 svc:/network/smb/client:default online 14:32:46 svc:/network/shares/group:smb online 14:33:03 svc:/network/smb/server:default
Perfekt, weiter gehts! Damit unsere Windosen die Kiste schneller und einfach finden buchen wir sie noch in eine Workgroup:
$ smbadm join -w KERNEL-TEST After joining KERNEL-TEST the smb service will be restarted automatically. Would you like to continue? [no]: yes Successfully joined KERNEL-TEST
Samba-Server reboot tut nun gut:
$ svcadm restart network/smb/server:default
Damit normale Systembenutzer auch smb Kennwörter bekommen muss pam_smb_passwd aktiviert werden. Dazu muss folgendes in der Datei /etc/pam.conf ergänzt werden:
other password required pam_smb_passwd.so.1 nowarn # echo "other password required pam_smb_passwd.so.1 nowarn" >> /etc/pam.conf
Setzt man nun seinem Benutzer ein neues Kennwort, bekommt er zusätzlich auch sein smb Kennwort.
$ passwd benutzername
Ich habe bereits einen einfachen Datenpool, daher richte ich auf diesem nur noch ein weiteres ZFS Filesystem ein, welches ich später freigeben möchte.
Microsoft unterscheidet normalerweise nicht zwischen Groß- und Kleinschreibung auf Dateisystemebene. Dieses beachte ich natürlich beim Anlegen vom neuen ZFS Filesystem. Sollte man später das gleiche Filesystem noch per NFS freigeben wollen, sollte man das „non-blocking mandatory locking“ aktivieren. Dieses beachte ich natürlich auch direkt beim erstellen des Filesystems. Dieses schaut nun also so aus:
$ zfs create -o casesensitivity=mixed -o nbmand=on fileserver/daten
Jetzt kann ich dieses Filesystem schon freigeben, dieses möchte ich unter dem Namen „DatenShare“ tun. Eine kurze Beschreibung der Freigabe darf natürlich nicht fehlen:
$ zfs set "sharesmb=name=DatenShare,description=Der Testdaten Share" fileserver/daten
Dann legen wir einen Testbenutzer an und vergeben ein Kennwort:
$ useradd -g cifsshare -s /bin/false -c TestUser -m test $ passwd test New Password: Re-enter new Password: passwd: password successfully changed for test
Nun sorgen wir mit folgendem Befehl dafür das unser neues ZFS Filesystem diesem Benutzer gehört:
$ chown -R test:cifsshare /fileserver/daten
Damit am Ende alle Berechtigungen vererbt werden benötigen wir folgendes:
$ zfs set aclinherit=passthrough fileserver/daten $ zfs set aclmode=passthrough fileserver/daten
Jetzt wird es spannend! Mit folgendem Befehl (diese geht über mehrere Zeilen) vergeben alle Rechte für: Alle Benutzer, Alle Gruppen, Jeden
Zur Verdeutlichung und als Test sicher erst mal gut.
/usr/bin/chmod A=\ owner@:rwxpdDaARWcCos:fd-----:allow,\ group@:rwxpdDaARWcCos:fd-----:allow,\ everyone@:rwxpdDaARWcCos:fd-----:allow \ /fileserver/daten
Hier sollte man darauf achten, wirklich das Solaris chown zu nutzen. Denn das GNU chown versteht die Optionen nicht.
$ which chown /usr/bin/chown
Jetzt können wir mal testen auf den Share zuzugreifen und Rechte zu setzen (Windows booten….. *schnarch*)!
Damit es mit dem Vererben der Berechtigungen deutlicher wird erstelle ich noch einen zweiten Share:
$ chown -R test:cifsshare /fileserver/daten $ zfs create -o casesensitivity=mixed -o nbmand=on fileserver/daten2 $ zfs set "sharesmb=name=DatenShare2,description=Der Testdaten Share 2" fileserver/daten2 $ chown -R test:cifsshare /fileserver/daten2 /usr/bin/chmod A=\ owner@:rwxpdDaARWcCos:fd-----:allow,\ group@:rwxpdDaARWcCos:fd-----:allow,\ everyone@:rwxpdDaARWcCos:fd-----:allow \ /fileserver/daten2
Die erweiterten ACLs lassen sich natürlich ebenfalls auf Systemebene anzeigen, hier muss man auch das Solaris ls nutzen:
$ cd /fileserver/daten $ ls -V total 4373 -rwxrwxrwx+ 1 test cifsshare 345088 Nov 20 2010 cmd.exe owner@:rwxpdDaARWcCos:------I:allow group@:rwxpdDaARWcCos:------I:allow everyone@:rwxpdDaARWcCos:------I:allow drwxrwxrwx+ 2 test cifsshare 12 Mär 22 17:39 de-DE owner@:rwxpdDaARWcCos:fd----I:allow group@:rwxpdDaARWcCos:fd----I:allow everyone@:rwxpdDaARWcCos:fd----I:allow drwxrwxrwx+ 5 test cifsshare 5 Mär 22 17:39 diagnostics owner@:rwxpdDaARWcCos:fd----I:allow group@:rwxpdDaARWcCos:fd----I:allow everyone@:rwxpdDaARWcCos:fd----I:allow drwxrwxrwx+ 2 test cifsshare 2 Mär 22 17:38 TestOrdner owner@:rwxpdDaARWcCos:fd----I:allow group@:rwxpdDaARWcCos:fd----I:allow everyone@:rwxpdDaARWcCos:fd----I:allow -rwxrwxrwx+ 1 test cifsshare 1733554 Mär 22 16:37 winrar-x64-411d.exe owner@:rwxpdDaARWcCos:------I:allow group@:rwxpdDaARWcCos:------I:allow everyone@:rwxpdDaARWcCos:------I:allow
Es lassen sich nun also die Berechtigungen vom Windows Client aus setzten.
Schreibe einen Kommentar