Skip to main content
NetApp Solutions
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

NFS

Beitragende

NFS ist ein Distributed File System-Protokoll. Es handelt sich um einen offenen IETF-Standard, der in Request for Comments (RFC) definiert ist und unter dem jeder dieses Protokoll implementieren kann.

Volumes in Cloud Volumes Service werden für NFS-Clients freigegeben, indem ein Pfad exportiert wird, der für einen Client oder eine Gruppe von Clients zugänglich ist. Die Berechtigungen zum Mounten dieser Exporte werden durch Richtlinien und Regeln für den Export definiert, die von Cloud Volumes Service-Administratoren konfiguriert werden können.

Die NetApp NFS-Implementierung gilt als Gold-Standard für das Protokoll und wird in unzähligen Enterprise-NAS-Umgebungen eingesetzt. In den folgenden Abschnitten werden NFS, spezifische Sicherheitsfunktionen in Cloud Volumes Service sowie deren Implementierung behandelt.

Lokale UNIX-Standardbenutzer und -Gruppen

Cloud Volumes Service enthält mehrere UNIX Standard-Benutzer und -Gruppen für verschiedene grundlegende Funktionen. Diese Benutzer und Gruppen können derzeit nicht geändert oder gelöscht werden. Neue lokale Benutzer und Gruppen können derzeit nicht zu Cloud Volumes Service hinzugefügt werden. UNIX-Benutzer und -Gruppen außerhalb der Standardbenutzer und -Gruppen müssen von einem externen LDAP-Namensdienst bereitgestellt werden.

Die folgende Tabelle zeigt die Standardbenutzer und -Gruppen sowie die zugehörigen numerischen IDs. NetApp empfiehlt, keine neuen Benutzer oder Gruppen in LDAP oder auf den lokalen Clients zu erstellen, die diese numerischen IDs erneut verwenden.

Standardbenutzer: Numerische IDs Standardgruppen: Numerische IDs
  • Stammverzeichnis:0

  • Pcuser:65534

  • Niemand:65535

  • Stammverzeichnis:0

  • Daemon: 1

  • Pcuser:65534

  • Niemand:65535

Hinweis Bei der Verwendung von NFSv4.1 wird der Root-Benutzer möglicherweise als niemand angezeigt, wenn er Verzeichnislisting-Befehle auf NFS-Clients ausführt. Dies liegt an der Konfiguration der ID-Domänenzuordnung des Clients. Siehe Abschnitt genannt NFSv4.1 und der niemand-Benutzer/Gruppe Finden Sie weitere Informationen zu diesem Problem und wie Sie es lösen können.

Der Root-Benutzer

In Linux hat das Root-Konto Zugriff auf alle Befehle, Dateien und Ordner in einem Linux-basierten Dateisystem. Aufgrund der Leistungsfähigkeit dieses Kontos müssen Benutzer häufig aufgrund von Best Practices für die Sicherheit deaktiviert oder auf irgendeine Weise eingeschränkt werden. Bei NFS-Exporten kann die Leistung, die ein Root-Benutzer über die Dateien und Ordner hat, im Cloud Volumes Service über Exportrichtlinien und -Regeln gesteuert werden. Auch das Konzept wird als Root Squash bezeichnet.

Root-Squashing sorgt dafür, dass der Root-Benutzer, der auf eine NFS-Bereitstellung zugreift, auf den anonymen numerischen Benutzer 65534 (siehe Abschnitt „Der anonyme Benutzer“) und ist derzeit nur verfügbar, wenn CVS-Performance verwendet wird, indem Sie bei der Erstellung von Regeln für Exportrichtlinien aus für Root-Zugriff auswählen. Wenn der Root-Benutzer auf den anonymen Benutzer zerquetscht wird, hat er keinen Zugriff mehr auf das Ausführen von Chown oder "Setuid/setgid-Befehle (das klebrige Bit)" In Dateien oder Ordnern im NFS-Mount und Dateien oder Ordnern, die vom Root-Benutzer erstellt wurden, zeigen die Anon-UID als Eigentümer/Gruppe an. Darüber hinaus können NFSv4 ACLs nicht vom Root-Benutzer geändert werden. Der Root-Benutzer hat jedoch weiterhin Zugriff auf chmod und gelöschte Dateien, für die er keine expliziten Berechtigungen besitzt. Wenn Sie den Zugriff auf die Datei- und Ordnerberechtigungen eines Root-Benutzers beschränken möchten, ziehen Sie in Betracht, ein Volume mit NTFS ACLs zu verwenden und einen Windows-Benutzer mit dem Namen zu erstellen root, Und die gewünschten Berechtigungen auf die Dateien oder Ordner anwenden.

Der anonyme Benutzer

Die anonyme (anon) Benutzer-ID gibt eine UNIX-Benutzer-ID oder einen UNIX-Benutzernamen an, der Client-Anforderungen ohne gültige NFS-Anmeldeinformationen zugeordnet ist. Dies kann den Root-Benutzer einschließen, wenn Root-Squashing verwendet wird. Der anon-Benutzer in Cloud Volumes Service ist 65534.

Diese UID ist normalerweise dem Benutzernamen zugeordnet nobody Oder nfsnobody In Linux Umgebungen zu managen. Cloud Volumes Service verwendet auch 65534 als den lokalen UNIX-Benutzer` pcuser` (siehe Abschnitt “Lokale UNIX-Standardbenutzer und -Gruppen“), der auch der Standard-Fallback-Benutzer für Windows auf UNIX-Namenszuordnungen ist, wenn kein gültiger übereinstimmender UNIX-Benutzer in LDAP gefunden werden kann.

Aufgrund der Unterschiede bei Benutzernamen in Linux und Cloud Volumes Service für UID 65534, konnte die Namenszeichenfolge für Benutzer, die 65534 zugeordnet sind, bei der Verwendung von NFSv4.1 nicht übereinstimmen. Dies könnte zu sehen sein nobody Als Benutzer auf einigen Dateien und Ordnern. Siehe Abschnitt „NFSv4.1 und der niemand-Benutzer/Gruppe“ Für Informationen zu diesem Problem und zur Lösung dieses Problems.

Zugriffssteuerung/Exporte

Der erste Export-/Freigabzugriff für NFS-Mounts wird über hostbasierte Exportrichtlinien gesteuert, die in einer Exportrichtlinie enthalten sind. Eine Host-IP, ein Hostname, ein Subnetz, eine Netzwerkgruppe oder eine Domäne sind definiert, um den Zugriff auf die Bereitstellung der NFS-Freigabe und die Zugriffsebene zu ermöglichen, die dem Host erlaubt ist. Die Konfigurationsoptionen für die Exportrichtlinie hängen von der Cloud Volumes Service-Ebene ab.

Für CVS-SW stehen die folgenden Optionen für die Konfiguration von Exportrichtlinien zur Verfügung:

  • Client-Match. kommagetrennte Liste von IP-Adressen, kommagetrennte Liste von Hostnamen, Subnetzen, Netzgruppen, Domain-Namen.

  • RO/RW-Zugriffsregeln. Wählen Sie Lese-/Schreibschutz oder Schreibschutz, um den Zugriff auf den Export zu steuern.CVS-Performance bietet die folgenden Optionen:

  • Client-Match. kommagetrennte Liste von IP-Adressen, kommagetrennte Liste von Hostnamen, Subnetzen, Netzgruppen, Domain-Namen.

  • RO/RW-Zugriffsregeln. Wählen Sie Lese-/Schreibschutz oder Schreibschutz, um den Zugriff auf den Export zu steuern.

  • Root-Zugriff (ein/aus). konfiguriert Root Squash (siehe Abschnitt „Der Root-Benutzer„ Weitere Informationen).

  • Protokolltyp. Dies beschränkt den Zugriff auf die NFS-Bereitstellung auf eine bestimmte Protokollversion. Wenn Sie sowohl NFSv3 als auch NFSv4.1 für das Volume angeben, lassen Sie entweder beide Felder leer oder aktivieren Sie beide Kontrollkästchen.

  • Kerberos-Sicherheitsstufe (wenn Kerberos aktivieren ausgewählt ist). bietet die Optionen von krb5, krb5i und/oder krb5p für schreibgeschützten oder schreibgeschützten Zugriff.

Eigentümerschaft (chown) und Change Group (chgrp) ändern

NFS auf Cloud Volumes Service ermöglicht es dem Root-Benutzer nur chown/chgrp auf Dateien und Ordnern auszuführen. Andere Benutzer sehen ein Operation not permitted Fehler – auch bei den eigenen Dateien. Wenn Sie Root Squash verwenden (wie im Abschnitt “ beschriebenDer Root-Benutzer“), wird die Root zu einem nicht-Root-Benutzer gequetscht und darf keinen Zugriff auf Chown und chgrp haben. Derzeit gibt es in Cloud Volumes Service keine Problemumgehungen, um chown und chgrp für nicht-Root-Benutzer zu ermöglichen. Wenn Eigentumsänderungen erforderlich sind, ziehen Sie die Verwendung von doppelten Protokoll-Volumes in Erwägung und legen Sie den Sicherheitsstil auf NTFS fest, um die Berechtigungen von Windows-Seite aus zu steuern.

Berechtigungsmanagement

Cloud Volumes Service unterstützt beide Mode-Bits (z. B. 644, 777 usw. für rwx) und NFSv4.1 ACLs, um die Berechtigungen auf NFS-Clients für Volumes zu steuern, die den UNIX-Sicherheitsstil nutzen. Hierfür wird das standardmäßige Berechtigungsmanagement verwendet (z. B. chmod, chown oder nfs4_setfacl) und arbeitet mit jedem Linux-Client zusammen, der diese unterstützt.

Wenn Sie außerdem Dual-Protokoll-Volumes auf NTFS setzen, können NFS-Clients die Cloud Volumes Service-Namenszuweisung für Windows-Benutzer nutzen, die dann zur Behebung der NTFS-Berechtigungen verwendet werden. Dazu ist eine LDAP-Verbindung zu Cloud Volumes Service erforderlich, um numerische ID-zu-Benutzernamen-Übersetzungen bereitzustellen, da Cloud Volumes Service einen gültigen UNIX-Benutzernamen benötigt, um einen Windows-Benutzernamen korrekt zuzuordnen.

Bereitstellung granularer ACLs für NFSv3

Mode-Bit-Berechtigungen decken nur Besitzer, Gruppe und alle anderen in der Semantik ab. Dies bedeutet, dass für Basic NFSv3 keine granularen Benutzerzugriffskontrollen vorhanden sind. Cloud Volumes Service unterstützt weder POSIX ACLs noch erweiterte Attribute (wie z. B. Chattr), sodass granulare ACLs nur in den folgenden Szenarien mit NFSv3 möglich sind:

  • NTFS Security Style Volumes (CIFS Server erforderlich) mit gültigen Zuordnungen von UNIX zu Windows-Benutzern.

  • NFSv4.1 ACLs werden mithilfe eines Administrator-Clients unter Verwendung von NFSv4.1 angewendet.

Beide Methoden erfordern eine LDAP-Verbindung für das UNIX-Identitätsmanagement und eine gültige UNIX-Benutzer- und Gruppeninformationen (siehe Abschnitt "„LDAP“") Und sind nur mit CVS-Performance Instanzen verfügbar. Um Volumes im NTFS-Sicherheitsstil mit NFS zu verwenden, müssen Sie Dual-Protokoll (SMB und NFSv3) oder Dual-Protokoll (SMB und NFSv4.1) verwenden, auch wenn keine SMB-Verbindungen hergestellt werden. Um NFSv4.1 ACLs für NFSv3-Mounts zu verwenden, müssen Sie auswählen Both (NFSv3/NFSv4.1) Als Protokolltyp.

Normale UNIX Modus Bits bieten nicht die gleiche Granularitätsebene in Berechtigungen, die NTFS oder NFSv4.x ACLs bieten. In der folgenden Tabelle wird die Berechtigungsgranularität zwischen NFSv3-Modus-Bits und NFSv4.1 ACLs verglichen. Informationen zu NFSv4.1 ACLs finden Sie unter "nfs4_acl – NFSv4 Access Control-Listen".

Bits im NFSv3 Modus NFSv4.1 ACLs
  • Legen Sie bei der Ausführung die Benutzer-ID fest

  • Legen Sie bei der Ausführung die Gruppen-ID fest

  • Getauschtes Text speichern (nicht in POSIX definiert)

  • Leseberechtigung für Eigentümer

  • Schreibberechtigung für Eigentümer

  • Berechtigung für Eigentümer einer Datei ausführen oder die Berechtigung für Eigentümer im Verzeichnis suchen (suchen)

  • Berechtigung für Gruppe lesen

  • Schreibberechtigung für Gruppe

  • Berechtigung für eine Gruppe in einer Datei ausführen oder die Berechtigung für die Gruppe im Verzeichnis suchen (suchen)

  • Lesen Sie die Erlaubnis für andere

  • Schreibberechtigung für andere

  • Berechtigung für andere in einer Datei ausführen oder die Berechtigung für andere Personen im Verzeichnis suchen (suchen)

ACE-Typen (Access Control Entry) (allow/Deny/Audit) * Vererbung-Flags * Verzeichnis-Erben * Datei-Erben * No-propate-Erben * Erben-only

Berechtigungen * Read-Data (Files) / list-Directory (Verzeichnisse) * Write-Data (Files) / create-file (Directories) * append-Data (files) / create-Unterverzeichnis (Directories) * execute (files) / change-Directory (Directories) * delete * delete-child * read-attributes * write-named-aCLL * write-awned-attributes * read-ACL Synchronize-awner

Schließlich ist die NFS-Gruppenmitgliedschaft (sowohl in NFSv3 als AUCH NFSV4.x) auf ein Standardlimit von 16 für AUTH_SYS begrenzt, gemäß den RPC-Paketlimits. NFS Kerberos bietet bis zu 32 Gruppen und NFSv4 ACLs entfernen die Beschränkung durch granulare Benutzer- und Gruppen-ACLs (bis zu 1024 Einträge pro ACE).

Darüber hinaus bietet Cloud Volumes Service erweiterte Gruppen-Support, um die maximal unterstützten Gruppen auf 32 zu erweitern. Dazu ist eine LDAP-Verbindung zu einem LDAP-Server erforderlich, der gültige UNIX-Benutzer- und Gruppenidentitäten enthält. Weitere Informationen zur Konfiguration finden Sie unter "Erstellen und Managen von NFS-Volumes" In der Google-Dokumentation.

NFSv3-Benutzer- und Gruppen-IDs

NFSv3-Benutzer- und Gruppen-IDs kommen über das Netzwerk als numerische IDs und nicht als Namen. Cloud Volumes Service bietet keine Nutzername-Auflösung für diese numerischen IDs mit NFSv3, mit UNIX-Sicherheitsstil-Volumes mit Just-Mode-Bits. Wenn NFSv4.1 ACLs vorhanden sind, ist eine numerische ID-Suche und/oder Suche nach Namespace erforderlich, um die ACL ordnungsgemäß zu lösen – sogar bei Verwendung von NFSv3. Bei NTFS-Volumes im Sicherheitsstil muss Cloud Volumes Service eine numerische ID einem gültigen UNIX-Benutzer auflösen und dann einem gültigen Windows-Benutzer zuordnen, um Zugriffsrechte auszuhandeln.

Sicherheitseinschränkungen von NFSv3 Benutzer- und Gruppen-IDs

Bei NFSv3 müssen Client und Server niemals bestätigen, dass der Benutzer, der einen Lese- oder Schreibversuch mit einer numerischen ID versucht, ein gültiger Benutzer ist; er ist einfach implizit vertrauenswürdig. Das öffnet das Dateisystem bis zu potenziellen Verstößen, indem es einfach eine numerische ID vortäuscht. Um Sicherheitslücken wie diese zu verhindern, gibt es einige Optionen für Cloud Volumes Service.

  • Die Implementierung von Kerberos für NFS zwingt Benutzer, sich mit einem Benutzernamen und einem Kennwort oder einer Keytab-Datei zu authentifizieren, um ein Kerberos-Ticket für den Zugriff in einem Mount zu erhalten. Kerberos ist mit CVS-Performance-Instanzen und nur mit NFSv4.1 verfügbar.

  • Die Einschränkung der Liste der Hosts in Ihren Exportrichtlinien beschränkt die Grenzen, die NFSv3-Clients auf das Cloud Volumes Service-Volume zugreifen können.

  • Durch die Verwendung von Dual-Protokoll-Volumes und die Anwendung von NTFS-ACLs auf das Volume sind NFSv3-Clients gezwungen, numerische IDs auf gültige UNIX-Benutzernamen zu lösen, um sich für den ordnungsgemäßen Zugriff auf Mounts zu authentifizieren. Dazu muss LDAP aktiviert und UNIX-Benutzer- und Gruppenidentitäten konfiguriert werden.

  • Das Squashing des Root-Benutzers begrenzt den Schaden, den ein Root-Benutzer auf einen NFS-Mount tun kann, aber das Risiko wird nicht vollständig beseitigt. Weitere Informationen finden Sie im Abschnitt „Der Root-Benutzer.“

Letztendlich ist die NFS-Sicherheit auf das beschränkt, was die Protokollversion verwendet, die Sie Angebote verwenden. NFSv3, obwohl mehr Performance im Allgemeinen als NFSv4.1, nicht dasselbe Maß an Sicherheit bietet.

NFSv4.1

NFSv4.1 bietet im Vergleich zu NFSv3 eine höhere Sicherheit und Zuverlässigkeit. Dies hat folgende Gründe:

  • Integrierte Sperrung über einen Leasingbasierten Mechanismus

  • Statusorientierte Sessions

  • Alle NFS-Funktionen über einen einzelnen Port (2049)

  • Nur TCP

  • ID-Domain-Zuordnung

  • Kerberos Integration (NFSv3 kann Kerberos verwenden, aber nur für NFS, nicht für zusätzliche Protokolle wie NLM)

NFSv4.1-Abhängigkeiten

Aufgrund der zusätzlichen Sicherheitsfunktionen in NFSv4.1 sind einige externe Abhängigkeiten beteiligt, die nicht für die Verwendung von NFSv3 benötigt wurden (ähnlich wie SMB Abhängigkeiten wie Active Directory erfordert).

NFSv4.1 ACLs

Cloud Volumes Service bietet Unterstützung für NFSv4.x ACLs, die bestimmte Vorteile gegenüber normalen POSIX-Berechtigungen bieten, wie z. B.:

  • Granulare Steuerung des Benutzerzugriffs auf Dateien und Verzeichnisse

  • Bessere NFS-Sicherheit

  • Bessere Interoperabilität mit CIFS/SMB

  • Entfernung der NFS-Beschränkung von 16 Gruppen pro Benutzer mit AUTH_SYS-Sicherheit

  • ACLs umgehen die Notwendigkeit einer Gruppen-ID-Lösung (GID), die effektiv das GID limitNFSv4.1 ACLs werden von NFS-Clients gesteuert, nicht von Cloud Volumes Service. Um NFSv4.1 ACLs zu verwenden, stellen Sie sicher, dass die Softwareversion Ihres Clients sie unterstützt und die richtigen NFS-Dienstprogramme installiert sind.

Kompatibilität zwischen NFSv4.1 ACLs und SMB-Clients

NFSv4 ACLs unterscheiden sich von Windows ACLs auf Dateiebene (NTFS ACLs), haben aber ähnliche Funktionen. In NAS-Umgebungen mit mehreren Protokollen, wenn NFSv4.1 ACLs vorhanden sind und Sie Dual-Protokoll-Zugriff verwenden (NFS und SMB auf den gleichen Datensätzen), werden Clients mit SMB2.0 und später nicht in der Lage sein, ACLs von Windows-Sicherheitregisterkarten anzuzeigen oder zu verwalten.

Funktionsweise von NFSv4.1 ACLs

Als Referenz sind folgende Begriffe definiert:

  • Access control list (ACL). eine Liste der Berechtigungs Einträge.

  • Zugangskontrolleintrag (ACE). Ein Berechtigungseintrag in der Liste.

Wenn ein Client während einer SETATTR-Operation eine NFSv4.1-ACL für eine Datei setzt, setzt Cloud Volumes Service diese ACL für das Objekt und ersetzt eine vorhandene ACL. Wenn es keine ACL für eine Datei gibt, werden die Modus-Berechtigungen für die Datei von EIGENTÜMER@, GROUP@ und EVERYONE@ berechnet. Wenn SUID/SGID/STICKY Bits in der Datei vorhanden sind, sind diese nicht betroffen.

Wenn ein Client während einer GETATTR Operation eine NFSv4.1 ACL für eine Datei erhält, liest Cloud Volumes Service die mit dem Objekt verknüpfte NFSv4.1 ACL, erstellt eine Liste von Aces und gibt die Liste an den Client zurück. Wenn die Datei über eine NT ACL oder Mode Bits verfügt, wird eine ACL aus Modus-Bits erstellt und an den Client zurückgegeben.

Der Zugriff wird verweigert, wenn in der ACL ein ACE VERWEIGERN vorhanden ist; der Zugriff wird gewährt, wenn ACE ZULASSEN vorhanden ist. Der Zugang wird jedoch auch verweigert, wenn keines der Asse in der ACL vorhanden ist.

Ein Sicherheitsdeskriptor besteht aus einer Sicherheits-ACL (SACL) und einer Ermessensdatei (Discretionary ACL, DACL). Bei der Ausführung von NFSv4.1 mit CIFS/SMB ist die DACL 1-to-One-Zuordnung mit NFSv4 und CIFS. Die DACL besteht aus DEM ERLAUBEN und DEN LEUGNEN Assen.

Wenn ein einfaches chmod Wird auf einer Datei oder einem Ordner mit NFSv4.1 ACLs gesetzt ausgeführt, bestehende Benutzer- und Gruppen-ACLs bleiben erhalten, aber der STANDARDEIGENTÜMER@, GROUP@, EVERYONE@ ACLs werden geändert.

Ein Client, der NFSv4.1 ACLs verwendet, kann ACLs für Dateien und Verzeichnisse auf dem System festlegen und anzeigen. Wenn eine neue Datei oder ein Unterverzeichnis in einem Verzeichnis erstellt wird, das über eine ACL verfügt, erbt dieses Objekt alle Asse in der ACL, die mit dem entsprechenden gekennzeichnet wurden "Ervererbungsflaggen".

Wenn eine Datei oder ein Verzeichnis über eine NFSv4.1-ACL verfügt, wird diese ACL verwendet, um den Zugriff zu steuern, unabhängig davon, welches Protokoll für den Zugriff auf die Datei oder das Verzeichnis verwendet wird.

Dateien und Verzeichnisse erben Asse von NFSv4 ACLs auf übergeordneten Verzeichnissen (möglicherweise mit entsprechenden Änderungen), solange die Asse mit den korrekten Vererbung-Flags markiert wurden.

Wenn eine Datei oder ein Verzeichnis als Ergebnis einer NFSv4-Anforderung erstellt wird, hängt die ACL für die resultierende Datei oder das Verzeichnis davon ab, ob die Dateierstellungsanforderung eine ACL oder nur standardmäßige UNIX-Dateizugriffsberechtigungen enthält. Die ACL hängt auch davon ab, ob das übergeordnete Verzeichnis über eine ACL verfügt.

  • Wenn die Anforderung eine ACL enthält, wird diese ACL verwendet.

  • Wenn die Anforderung nur standardmäßige UNIX-Dateizugriffsberechtigungen enthält und das übergeordnete Verzeichnis keine ACL besitzt, wird der Client-Dateimodus verwendet, um standardmäßige UNIX-Dateizugriffsberechtigungen festzulegen.

  • Wenn die Anforderung nur Standardberechtigungen für den Zugriff auf UNIX-Dateien enthält und das übergeordnete Verzeichnis über eine nicht vererbbare ACL verfügt, wird eine Standard-ACL auf Basis der Mode-Bits, die an die Anforderung übergeben wurden, auf dem neuen Objekt festgelegt.

  • Wenn die Anforderung nur Standardzugriffsberechtigungen für UNIX-Dateien enthält, aber das übergeordnete Verzeichnis über eine ACL verfügt, werden die Asse in der ACL des übergeordneten Verzeichnisses von der neuen Datei oder dem neuen Verzeichnis geerbt, solange die Aces mit den entsprechenden Vererbung-Flags gekennzeichnet wurden.

ACE-Berechtigungen

Die Berechtigungen für NFSv4.1 ACLs verwenden eine Reihe von Groß- und Kleinbuchstaben (z. B. rxtncy) Um den Zugriff zu steuern. Weitere Informationen zu diesen Buchstabenwerten finden Sie unter "WIE: Verwenden Sie NFSv4 ACL".

NFSv4.1 ACL-Verhalten mit Umask und ACL-Vererbung

"NFSv4 ACLs bieten die Möglichkeit, eine ACL-Vererbung anzubieten". ACL-Vererbung bedeutet, dass Dateien oder Ordner, die unter Objekten mit NFSv4.1 ACLs-Satz erstellt wurden, die ACLs basierend auf der Konfiguration des erben können "ACL-Vererbungskennzeichnung".

"Umfragen" Wird verwendet, um die Berechtigungsstufe zu steuern, auf der Dateien und Ordner in einem Verzeichnis ohne Administratorinteraktion erstellt werden. Standardmäßig können mit Cloud Volumes Service übernommene ACLs überschrieben werden. Dies ist ein erwartetes Verhalten wie per "RFC 5661".

ACL-Formatierung

NFSv4.1 ACLs haben bestimmte Formatierung. Das folgende Beispiel ist ein ACE-Satz für eine Datei:

A::ldapuser@domain.netapp.com:rwatTnNcCy

Das vorangegangene Beispiel folgt den Richtlinien im ACL-Format von:

type:flags:principal:permissions

Einen Typ von A Bedeutet „Zulassen“. Die Erben-Flags werden in diesem Fall nicht festgelegt, da der Principal keine Gruppe ist und keine Vererbung beinhaltet. Da es sich bei ACE nicht um EINEN AUDIT-Eintrag handelt, müssen die Audit-Flags nicht festgelegt werden. Weitere Informationen zu NFSv4.1 ACLs finden Sie unter "http://linux.die.net/man/5/nfs4_acl".

Wenn die NFSv4.1 ACL nicht richtig eingestellt ist (oder eine Namenszeichenfolge nicht vom Client und Server aufgelöst werden kann), verhält sich die ACL möglicherweise nicht wie erwartet. Andernfalls kann die ACL-Änderung nicht angewendet werden und einen Fehler verursacht.

Beispielfehler sind:

Failed setxattr operation: Invalid argument
Scanning ACE string 'A:: user@rwaDxtTnNcCy' failed.

Explizites ABLEHNEN

Die Berechtigungen in NFSv4.1 können explizite DENY-Attribute für EIGENTÜMER, GRUPPE und ALLE enthalten. Das liegt daran, dass NFSv4.1 ACLs Standard-Deny sind. Dies bedeutet, dass, wenn eine ACL nicht ausdrücklich von einem ACE gewährt wird, sie verweigert wird. Explizite DENY-Attribute überschreiben alle ZUGRIFFSOPTIONEN, explizit oder nicht.

DENY Aces werden mit einem Attribut-Tag von festgelegt D.

Im folgenden Beispiel ist DER GRUPPE@ alle Lese- und Ausführungsberechtigungen erlaubt, aber der gesamte Schreibzugriff wird verweigert.

sh-4.1$ nfs4_getfacl /mixed
A::ldapuser@domain.netapp.com:ratTnNcCy
A::OWNER@:rwaDxtTnNcCy
D::OWNER@:
A:g:GROUP@:rxtncy
D:g:GROUP@:waDTC
A::EVERYONE@:rxtncy
D::EVERYONE@:waDTC

DENY Aces sollten möglichst vermieden werden, da sie verwirrend und kompliziert sein können; ACLS, die nicht explizit definiert sind, WERDEN implizit verweigert. Wenn Asse VERWEIGERN festgelegt sind, wird Benutzern möglicherweise der Zugriff verweigert, wenn sie erwarten, dass ihnen Zugriff gewährt wird.

Der vorhergehende Satz von Assen entspricht 755 im Modus Bits, was bedeutet:

  • Der Eigentümer hat volle Rechte.

  • Gruppen haben schreibgeschützt.

  • Andere haben nur gelesen.

Selbst wenn die Berechtigungen auf das Äquivalent von 775 angepasst werden, kann der Zugriff aufgrund der expliziten DENY-Einstellung für ALLE verweigert werden.

Abhängigkeiten für die Zuordnung der NFSv4.1 ID-Domäne

NFSv4.1 nutzt die ID-Domain-Mapping-Logik als Sicherheitsschicht, um zu überprüfen, ob ein Benutzer, der auf einen NFSv4.1-Mount zugreifen möchte, tatsächlich derjenige ist, der behauptet. In diesen Fällen hängt der vom NFSv4.1-Client stammende Benutzername und Gruppenname eine Namenszeichenfolge an und sendet sie an die Cloud Volumes Service-Instanz. Wenn diese Kombination aus Benutzername/Gruppenname und ID-Zeichenfolge nicht übereinstimmt, dann wird der Benutzer und/oder die Gruppe auf den Standard-niemand-Benutzer gesetzt, der im angegeben wurde /etc/idmapd.conf Datei auf dem Client.

Diese ID-Zeichenfolge ist eine Voraussetzung für die ordnungsgemäße Einhaltung von Berechtigungen, insbesondere wenn NFSv4.1 ACLs und/oder Kerberos verwendet werden. Daher sind Serverabhängigkeiten des Nameservice wie LDAP-Server erforderlich, um die Konsistenz zwischen Clients und Cloud Volumes Service für eine ordnungsgemäße Identitätsauflösung von Benutzer und Gruppennamen zu gewährleisten.

Cloud Volumes Service verwendet einen statischen Standard-ID-Domänennamen von defaultv4iddomain.com. NFS-Clients verwenden standardmäßig den DNS-Domain-Namen für seine ID-Domain-Namen-Einstellungen. Sie können den ID-Domain-Namen in jedoch manuell anpassen /etc/idmapd.conf.

Wenn LDAP in Cloud Volumes Service aktiviert ist, dann Cloud Volumes Service automatisiert die NFS ID Domain zu ändern, was für die Suche Domain in DNS konfiguriert ist und Clients nicht geändert werden müssen, es sei denn sie verwenden unterschiedliche DNS Domain Suchnamen.

Wenn Cloud Volumes Service einen Benutzernamen oder Gruppennamen in lokalen Dateien oder LDAP auflösen kann, wird die Domänenzeichenfolge verwendet und nicht übereinstimmende Domänen-IDs Squash an niemand. Wenn Cloud Volumes Service einen Benutzernamen oder Gruppennamen nicht in lokalen Dateien oder LDAP finden kann, wird der numerische ID-Wert verwendet, und der NFS-Client löst den Namen richtig aus (dies entspricht dem NFSv3-Verhalten).

Ohne die NFSv4.1 ID-Domäne des Clients zu ändern, um mit dem zu übereinstimmen, was der Cloud Volumes Service-Datenträger verwendet, sehen Sie folgendes Verhalten:

  • UNIX-Benutzer und -Gruppen mit lokalen Einträgen in Cloud Volumes Service (wie root, wie in lokalen UNIX-Benutzern und -Gruppen definiert) werden auf den nobody-Wert gequetscht.

  • UNIX-Benutzer und -Gruppen mit Einträgen in LDAP (wenn Cloud Volumes Service so konfiguriert ist, dass sie LDAP verwenden), nehmen keine Wimpern auf, wenn sich DNS-Domänen zwischen NFS-Clients und Cloud Volumes Service unterscheiden.

  • UNIX-Benutzer und -Gruppen ohne lokale Einträge oder LDAP-Einträge verwenden den numerischen ID-Wert und lösen den auf dem NFS-Client angegebenen Namen. Wenn auf dem Client kein Name vorhanden ist, wird nur die numerische ID angezeigt.

Die Ergebnisse des vorhergehenden Szenarios:

# ls -la /mnt/home/prof1/nfs4/
total 8
drwxr-xr-x 2 nobody nobody 4096 Feb  3 12:07 .
drwxrwxrwx 7 root   root   4096 Feb  3 12:06 ..
-rw-r--r-- 1   9835   9835    0 Feb  3 12:07 client-user-no-name
-rw-r--r-- 1 nobody nobody    0 Feb  3 12:07 ldap-user-file
-rw-r--r-- 1 nobody nobody    0 Feb  3 12:06 root-user-file

Wenn die Client- und Server-ID-Domänen übereinstimmen, wird die gleiche Dateiliste angezeigt:

# ls -la
total 8
drwxr-xr-x 2 root   root         4096 Feb  3 12:07 .
drwxrwxrwx 7 root   root         4096 Feb  3 12:06 ..
-rw-r--r-- 1   9835         9835    0 Feb  3 12:07 client-user-no-name
-rw-r--r-- 1 apache apache-group    0 Feb  3 12:07 ldap-user-file
-rw-r--r-- 1 root   root            0 Feb  3 12:06 root-user-file

Weitere Informationen zu diesem Thema und wie man es löst, finden Sie im Abschnitt „NFSv4.1 und der niemand-Benutzer/Gruppe.“

Kerberos Abhängigkeiten

Wenn Sie Kerberos mit NFS verwenden möchten, müssen Sie für Cloud Volumes Service Folgendes haben:

  • Active Directory-Domäne für Kerberos-Verteilzentrum-Dienste (KDC)

  • Active Directory-Domäne mit Benutzer- und Gruppenattributen, die mit UNIX-Informationen für LDAP-Funktionalität gefüllt sind (NFS-Kerberos im Cloud Volumes Service benötigt für die ordnungsgemäße Funktion einen Benutzer-SPN für UNIX-Benutzerzuordnung).

  • LDAP auf der Cloud Volumes Service-Instanz aktiviert

  • Active Directory-Domäne für DNS-Services

NFSv4.1 und der niemand-Benutzer/Gruppe

Eines der häufigsten Probleme bei einer NFSv4.1-Konfiguration ist, wenn eine Datei oder ein Ordner in einer Auflistung mit angezeigt wird ls Als im Besitz des user:group Kombination von nobody:nobody.

Beispiel:

sh-4.2$ ls -la | grep prof1-file
-rw-r--r-- 1 nobody nobody    0 Apr 24 13:25 prof1-file

Und die numerische ID lautet 99.

sh-4.2$ ls -lan | grep prof1-file
-rw-r--r-- 1 99 99    0 Apr 24 13:25 prof1-file

In manchen Fällen wird die Datei möglicherweise den korrekten Eigentümer, aber angezeigt nobody Als Gruppe.

sh-4.2$ ls -la | grep newfile1
-rw-r--r-- 1 prof1  nobody    0 Oct  9  2019 newfile1

Wer ist niemand?

Der nobody Benutzer in NFSv4.1 unterscheidet sich von dem nfsnobody Benutzer: Sie können anzeigen, wie ein NFS Client jeden Benutzer sieht, indem Sie die ausführen id Befehl:

# id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)
# id nfsnobody
uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)

Mit NFSv4.1, das nobody Der von definierte Standardbenutzer ist der Benutzer idmapd.conf Datei und kann als jeder Benutzer definiert werden, den Sie verwenden möchten.

# cat /etc/idmapd.conf | grep nobody
#Nobody-User = nobody
#Nobody-Group = nobody

Warum passiert das?

Da Sicherheit durch Namenszeichenzuordnung ein Schlüsseltenet von NFSv4.1-Operationen ist, ist das Standardverhalten, wenn eine Namenszeichenfolge nicht richtig übereinstimmt, dass der Benutzer zu einem Squash, der normalerweise keinen Zugriff auf Dateien und Ordner hat, die Benutzer und Gruppen gehören.

Wenn Sie sehen nobody Für den Benutzer und/oder die Gruppe in Dateilisten bedeutet dies im Allgemeinen, dass etwas in NFSv4.1 falsch konfiguriert ist. Hier kann die Empfindlichkeit des Falles ins Spiel kommen.

Wenn z. B. user1@CVSDEMO.LOCAL (uid 1234, gid 1234) auf einen Export zugreift, muss Cloud Volumes Service user1@CVSDEMO.LOCAL (uid 1234, gid 1234) finden können. Wenn der Benutzer in Cloud Volumes Service ist USER1@CVSDEMO.LOCAL, dann wird es nicht übereinstimmen (GROSSUSER1 vs. Kleinbuchstaben user1). In vielen Fällen können Sie Folgendes in der Meldungsdatei auf dem Client sehen:

May 19 13:14:29 centos7 nfsidmap[17481]: nss_getpwnam: name 'root@defaultv4iddomain.com' does not map into domain 'CVSDEMO.LOCAL'
May 19 13:15:05 centos7 nfsidmap[17534]: nss_getpwnam: name 'nobody' does not map into domain 'CVSDEMO.LOCAL'

Der Client und Server müssen beide zustimmen, dass ein Benutzer tatsächlich der Meinung ist, dass er sein soll. Sie müssen daher Folgendes überprüfen, um sicherzustellen, dass der Benutzer, der den Client sieht, dieselben Informationen hat wie der Benutzer, den Cloud Volumes Service sieht.

  • NFSv4.x ID Domain. Client: idmapd.conf Datei; Cloud Volumes Service verwendet defaultv4iddomain.com Und kann nicht manuell geändert werden. Bei Verwendung von LDAP mit NFSv4.1 ändert Cloud Volumes Service die ID-Domäne in das, was die DNS-Suchdomäne verwendet, was mit der AD-Domäne identisch ist.

  • Benutzername und numerische IDs. Dies legt fest, wo der Client nach Benutzernamen sucht und die Namensdienstschalter-Konfiguration nutzt – Client: nsswitch.conf Und/oder lokale Passwd- und Gruppendateien; Cloud Volumes Service erlaubt keine Änderungen, sondern fügt der Konfiguration automatisch LDAP hinzu, wenn sie aktiviert ist.

  • Gruppenname und numerische IDs. Dies legt fest, wo der Client nach Gruppennamen sucht und nutzt die Namensdienst-Switch-Konfiguration – Client: nsswitch.conf Und/oder lokale Passwd- und Gruppendateien; Cloud Volumes Service erlaubt keine Änderungen, sondern fügt der Konfiguration automatisch LDAP hinzu, wenn sie aktiviert ist.

In fast allen Fällen, wenn Sie sehen nobody Bei Benutzer- und Gruppenlisten von Clients handelt es sich um das Problem der Übersetzung von Benutzer- oder Gruppennamen-Domänen-ID zwischen Cloud Volumes Service und dem NFS-Client. Um dieses Szenario zu vermeiden, verwenden Sie LDAP, um Benutzer- und Gruppeninformationen zwischen Clients und Cloud Volumes Service aufzulösen.

Anzeigen von Name-ID-Strings für NFSv4.1 auf Clients

Wenn Sie NFSv4.1 verwenden, gibt es ein Name-String-Mapping, das während NFS-Vorgängen stattfindet, wie zuvor beschrieben.

Zusätzlich zu verwenden /var/log/messages Um ein Problem mit NFSv4-IDs zu finden, können Sie das verwenden "Nfsidmap -l" Befehl auf dem NFS Client, um anzuzeigen, welche Benutzernamen der NFSv4-Domäne ordnungsgemäß zugeordnet haben.

Dies wird beispielsweise nach einem Benutzer ausgegeben, der vom Client gefunden werden kann und Cloud Volumes Service auf einen NFSv4.x Mount zugreift:

# nfsidmap -l
4 .id_resolver keys found:
  gid:daemon@CVSDEMO.LOCAL
  uid:nfs4@CVSDEMO.LOCAL
  gid:root@CVSDEMO.LOCAL
  uid:root@CVSDEMO.LOCAL

Wenn ein Benutzer, der der NFSv4.1 ID-Domäne nicht ordnungsgemäß zugeordnet ist (in diesem Fall netapp-user) Versucht, auf denselben Mount zuzugreifen und berührt eine Datei, sie sind zugewiesen nobody:nobody, Wie erwartet.

# su netapp-user
sh-4.2$ id
uid=482600012(netapp-user), 2000(secondary)
sh-4.2$ cd /mnt/nfs4/
sh-4.2$ touch newfile
sh-4.2$ ls -la
total 16
drwxrwxrwx  5 root   root   4096 Jan 14 17:13 .
drwxr-xr-x. 8 root   root     81 Jan 14 10:02 ..
-rw-r--r--  1 nobody nobody    0 Jan 14 17:13 newfile
drwxrwxrwx  2 root   root   4096 Jan 13 13:20 qtree1
drwxrwxrwx  2 root   root   4096 Jan 13 13:13 qtree2
drwxr-xr-x  2 nfs4   daemon 4096 Jan 11 14:30 testdir

Der nfsidmap -l Ausgabe zeigt den Benutzer an pcuser Im Display, aber nicht netapp-user; Dies ist der anonyme Benutzer in unserer Export-Policy Regel (65534).

# nfsidmap -l
6 .id_resolver keys found:
  gid:pcuser@CVSDEMO.LOCAL
  uid:pcuser@CVSDEMO.LOCAL
  gid:daemon@CVSDEMO.LOCAL
  uid:nfs4@CVSDEMO.LOCAL
  gid:root@CVSDEMO.LOCAL
  uid:root@CVSDEMO.LOCAL