Howto: Multiprotokoll NAS Server mit einer EMC² Unity

Hallo zusammen,

ich stecke im Moment in einem kleinen Projekt mit einer Unity.

Der Kunde möchte einen NAS Server einrichten worauf er gleichzeitig mit SMB und NFS zugreifen kann.

Die Anforderung ist eigentlich nicht so kompliziert:

  • Mehrere Windows User müssen auf den Share R/W Zugriff haben.
  • Ein Linux Service-User muss ebenfalls Zugriff via NFS erhalten.

Ich bin zunächst im Trial and Error Verfahren vorgegangen und bin in einige Probleme gelaufen. Zunächst einmal wollte ich einfach dem GUI folgen. Ich erstellte einen NAS Server, aktivierte beide Protokolle und wollte schlussendlich die Option „Multiprotokoll“ aktivieren. Das geht über das GUI nur, wenn man einen LDAP oder NIS Server hinterlegt hat. Hier begannen dann die Probleme. 😀 Da ich einen anderen Weg fand die Anforderung zu erfüllen, gehe ich auf diese Probleme in einem gesonderten Artikel ein (Link folgt).

Seit Version 4.1 kann man auf LDAP und NIS verzichten und stattdessen „Local-Files“ verwenden.

Hier nun ein kleines HowTo wie man dazu vorgehen muss (sieht länger aus als es ist). Ich bin mit meiner Testumgebung in einen Windows 2008R2 Setup gefallen. Mit aktuellen Versionen funktioniert es identisch.

Schritt 1: Einen NAS Server erstellen

Ziemlich selbsterklärend. Wir folgen einfach dem Wizard.

Schritt 2: Linux Identity Resolving via Local Files

Wir navigieren in die Properties unseres NAS Servers, wechseln in den Tab „Naming Services“, klicken auf „Local Files“ und aktivieren die Checkbox „Enable Unix Identity Resolving via Local Files“. Anschließend auf „Apply“.

 

Schritt 3: Multiprotokoll aktivieren

Unter dem Tab „Sharing Protocols“ gibt es den Menüpunkt „Multiprotocol“. Diese Checkbox ist deaktiviert, da wir kein NIS oder LDAP Server konfiguriert haben. In unserem Setup benötigen wir diesen jedoch nicht und seit Version 4.1 können Local Files als Ersatz genutzt werden. In meinen Augen ist das ein kleiner GUI-Bug.

Wie aktivieren wir diese Funktion trotzdem?

In dem Artikel über Thick-Provisioning standen wir ebenfalls vor einer GUI-Einschränkung und konnten uns mit dem Tool UEMCLI (Dokumentation) helfen. So auch in diesem Fall:

uemcli -d [yourMgmtIP] -u Local/admin -p [yourpassword] /net/nas/server -name [yournasserver] show
Storage system address: 10.144.239.230
Storage system port: 443
HTTPS connection

1:    ID                            = nas_3
      Name                          = multi01
      NetBIOS name                  = MULTI01
      SP                            = spa
      Storage pool                  = pool_1
      Tenant                        =
      Interface                     = if_4
      NFS enabled                   = yes
      NFSv4 enabled                 = no
      CIFS enabled                  = yes
      Multiprotocol sharing enabled = no
      Unix directory service        = local
      Health state                  = OK (5)

PS C:\>

Mit dem folgenden Befehl können wir das Feature akvieren:

PS C:\> uemcli -d [yourMgmtIP] -u Local/admin -p [yourpassword] /net/nas/server -name [yournasserver] set -mpSharingEnabled yes
Storage system address: 10.144.239.230
Storage system port: 443
HTTPS connection ID = nas_3
Operation completed successfully.
PS C:\>

Das kann man jetzt mit dem „show“-Command oder mit einem Blick ins GUI kontrollieren:

Sieht gut aus. 🙂

Schritt 4: Filesystem anlegen

Das ist wieder ziemlich selbsterklärend. Wir folgen wieder einfach dem Wizard.

 

Das Filesystem ist erstellt und ich habe auch gleich ein paar Shares anlegen lassen. Können wir jetzt darauf zugreifen?

Es sieht schlecht aus! Warum? Diese Zeile hier deutet schon drauf hin: „The user name could not be found“.

Wir haben noch ein Problem mit den Usern. Unser NAS Server weiß noch nicht wie er die User zwischen NFS und SMB mappen soll.

Schritt 5: Userpflege

Die SMB-seitigen User sind einfach, da sie einfach auf dem Active Directory geholt werden.

Nachdem wir hier aber auch LDAP verzichten, müssen wir im nächsten Schritt die relevanten User anlegen.

Ich lege zunächst einen User auf dem Linux-Host (in diesem Fall ein CentOS) an:

[root@linux01 ~]# useradd heiterbiswolkig

Mit diesem Befehl legen wir einen User und eine dazugehörige Gruppe an. Beide Informationen lesen wir jetzt aus, da wir sie auf der Unity konfigurieren müssen:

[root@linux01 ~]# cat /etc/passwd |grep heiterbiswolkig
heiterbiswolkig:x:1000:1000::/home/heiterbiswolkig:/bin/bash

[root@linux01 ~]# cat /etc/group |grep heiterbiswolkig
heiterbiswolkig:x:1000:

Wir navigieren wieder in die Properties unseres NAS Servers > Naming Services > Local Files.

Hier können wir uns jetzt ein Passwd- und Group-File herunterladen. Beides machen wir und speichern und öffnen es.

Mit einem Texteditor der Wahl fügen wir jetzt unsere gesammelten Informationen in die Files ein. Ich füge gleich noch die Informationen zum root-User (orange) mit hinzu:

passwd:

# The passwd file contains the users who can access the NAS server.
#
# Each line of the passwd file defines a user and has the format: 
#   username:password:uid:gid:gcos
# where:
# - username is the user's login name.
#   When querying for Windows users, the system checks for CIFS usernames without domain extensions.
# - password is an empty field. The encrypted password for the user is in the 
# corresponding entry in the shadow file.
# - uid is the user's unique numerical ID for the system.
# - gid is the unique numerical ID of the group to which the user belongs.
#
heiterbiswolkig:x:1000:1000::/home/heiterbiswolkig:/bin/bash
root:x:0:0:root:/root:/bin/bash

group:

# The group file defines the groups to which users belong.
#
# Each line of the group file defines a group and has the format:
#   groupname:gid:user_list
# where:
# - groupname is the name of the group.
#   When querying for Windows groups, the system checks for CIFS group names without domain extensions.
# - gid is the numerical group ID.
# - user_list is all the group member usernames, separated by commas.
#
heiterbiswolkig:x:1000:
root:x:0:

Anschließend laden wir die Files wieder hoch:

Schritt 6: Usermapping

Zu guter Letzt müssen wir noch ein Mapping zwischen den Usern definieren. Wir laden uns dafür zunächst wieder das Template herunter.

NAS Server Properies > Sharing Protocols > Multiprotocol > Retrieve Current Mapping File

In dem File selbst stehen sehr viele Beispiele. Für unsere Anforderung reichen diese beiden Zeilen.

opsdc:*:>:heiterbiswolkig
opsdc:administrator:=:root

Was bedeuten diese zwei Einträge?

  • Aus der Domain „opsdc“ wird jeder User auf den Unix-Userheiterbiswolkig“ gemappt.
  • Der User „Administrator“ aus der Domain „opsdc“ wird auf den Unix-User „root“ gemappt. Das „=“ bedeutet, dass das Mapping Bidirektional funktioniert. Also wird der Linux-User „root“ auch auf „opsdc\administrator“ gemappt.

Wir speichern das File und laden es wieder hoch „Upload New Mapping File“.

Schritt 7: Tests

Wir können jetzt den SMB Share browsen und auch Files oder Folder generieren:

 

Wir können ebenfalls den NFS share mounten (vorher „yum install nfs-utils“ nicht vergessen :-)):

[root@linux01 ~]# mkdir /mnt/share01
[root@linux01 ~]# mount 10.144.240.204:/share01 /mnt/share0

Im Anschluss sehen wir unsere generieren Folders mit den entsprechenden Ownern und Berechtigungen:

[heiterbiswolkig@linux01 share01]$ ll
total 8
drwxrwxrwx 2 root            root             152 May  8 17:41 Administrator
drwxr-xr-x 2 root            root            8192 May  8 16:40 lost+found
drwxrwxrwx 2 heiterbiswolkig heiterbiswolkig  152 May  8 17:41 UserA
[heiterbiswolkig@linux01 share01]$

Der Folder „Administrator“ wurde auch als User Administrator angelegt und wird basierend auf unserem Mapping auf den Linux-User „root“ gemappt.

Der Folder „UserA“ wurde mit einem AD-User angelegt und korrekt auf den Linux-User und -Gruppe „heiterbiswolkig“ gemappt.

Das wars. Eigentlich ganz einfach, oder? 🙂

 

Bis demnächst

Liebe Grüße

Falk

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.