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 Google Cloud NetApp Volumes werden an NFS-Clients freigegeben, indem ein Pfad exportiert wird, der einem Client oder einer Gruppe von Clients zugänglich ist. Berechtigungen zum Mounten dieser Exporte werden durch Exportrichtlinien und -Regeln definiert, die von Google Cloud NetApp Volumes Administratoren konfigurierbar sind.

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 die NFS sowie die spezifischen in Google Cloud NetApp Volumes verfügbaren Sicherheitsfunktionen und ihre Implementierung behandelt.

Lokale UNIX-Standardbenutzer und -Gruppen

Google Cloud NetApp Volumes enthält mehrere Standard-UNIX-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 Google Cloud NetApp Volumes 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 Macht eines Root-Benutzers über die Dateien und Ordner in Google Cloud NetApp Volumes über Exportrichtlinien und -Regeln sowie über ein Konzept, das als Root-Squash bekannt ist, gesteuert werden.

Root Squashing stellt sicher, dass der Root-Benutzer, der auf einen NFS-Mount zugreift, auf den anonymen numerischen Benutzer 65534 (siehe Abschnitt „“) gequetscht wirdDer anonyme Benutzer und derzeit nur bei Verwendung von NetApp Volumes-Performance verfügbar ist, indem er während der Erstellung von Exportrichtlinien für Root-Zugriff auf aus wählt. Wenn der Root-Benutzer auf den anonymen Benutzer gequetscht wird, hat er keinen Zugriff mehr auf chown oder "Setuid/setgid-Befehle (das klebrige Bit)" auf Dateien oder Ordner im NFS-Mount, und Dateien oder Ordner, 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, sollten Sie ein Volume mit NTFS-ACLs verwenden, einen Windows-Benutzer namens 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 Google Cloud NetApp Volumes ist 65534.

Diese UID ist normalerweise mit dem Benutzernamen oder nfsnobody in Linux-Umgebungen verknüpft nobody. Google Cloud NetApp Volumes verwendet auch 65534 als lokalen UNIX-Benutzer` pcuser` (siehe Abschnitt „Lokale UNIX-Standardbenutzer und -Gruppen“), was auch der Standard-Fallback-Benutzer für Windows-zu-UNIX-Namenszuordnungen ist, wenn kein gültiger übereinstimmender UNIX-Benutzer in LDAP gefunden werden kann.

Aufgrund der Unterschiede in Benutzernamen in Linux und Google Cloud NetApp Volumes für UID 65534, die Namenszeichenfolge für Benutzer zugeordnet 65534 möglicherweise nicht bei der Verwendung von NFSv4.1 übereinstimmen. Daher können Sie in einigen Dateien und Ordnern als Benutzer sehen nobody. Weitere Informationen zu diesem Problem und zur Behebung finden Sie im Abschnitt „NFSv4.1 und der niemand-Benutzer/Gruppe“.

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 Ebene der Google Cloud NetApp-Volumes ab.

Für NetApp Volumes-SW sind folgende Optionen für die Konfiguration von Exportrichtlinien verfügbar:

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

  • RO/RW-Zugangsregeln. Wählen Sie Lese-/Schreibzugriff oder Schreibzugriff aus, um den Zugriff auf den Export zu steuern.NetApp Volumes-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 Google Cloud NetApp Volumes ermöglicht es dem Root-Benutzer nur, chown/chgrp auf Dateien und Ordnern auszuführen. Andere Benutzer sehen einen Operation not permitted Fehler – selbst bei Dateien, die ihnen gehören. Wenn Sie root Squash verwenden (wie im Abschnitt „“ beschriebenDer Root-Benutzer), wird der root auf einen nicht-root-Benutzer gequetscht und es ist kein Zugriff auf chown und chgrp erlaubt. Derzeit gibt es keine Problemumgehungen in Google Cloud NetApp-Volumes, um chown und chgrp für nicht-root-Benutzer zuzulassen. 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

Google Cloud NetApp Volumes unterstützt sowohl Modus-Bits (wie 644, 777 und so weiter für rwx) als auch NFSv4.1 ACLs zur Kontrolle von Berechtigungen auf NFS Clients für Volumes, die den Unix Sicherheitsstil verwenden. 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.

Außerdem können NFS-Clients bei der Verwendung von NTFS-Protokollvolumes die Namenszuordnung von Google Cloud NetApp Volumes für Windows Benutzer nutzen, die dann zum Auflösen der NTFS-Berechtigungen verwendet werden. Dies erfordert eine LDAP-Verbindung zu Google Cloud NetApp-Volumes, um Übersetzungen von Zahlen-IDs zu Benutzernamen bereitzustellen, da Google Cloud NetApp-Volumes einen gültigen UNIX-Benutzernamen benötigen, um einem Windows-Benutzernamen ordnungsgemäß zugeordnet zu werden.

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. Google Cloud NetApp Volumes unterstützen weder POSIX ACLs noch erweiterte Attribute (wie chattr), granulare ACLs sind also nur in den folgenden Szenarien mit NFSv3 möglich:

  • 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 die UNIX-Identitätsverwaltung und eine gültige UNIX-Benutzer- und Gruppeninformation (siehe Abschnitt "„LDAP“") und sind nur bei NetApp-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 mit NFSv3-Mounts zu verwenden, müssen Sie als Protokolltyp auswählen Both (NFSv3/NFSv4.1).

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 Google Cloud NetApp Volumes erweiterte Gruppenunterstützung, um die maximal unterstützten Gruppen auf bis zu 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 "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. Google Cloud NetApp Volumes bietet keine Username-Auflösung für diese numerischen IDs mit NFSv3, wobei UNIX-Sicherheitsvolumes nur Modusbits verwenden. 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-Sicherheitsstilvolumes müssen Google Cloud NetApp-Volumes eine numerische ID an einen 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 derartige Sicherheitslücken zu vermeiden, stehen Google Cloud NetApp Volumes einige Optionen zur Verfügung.

  • 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 NetApp Volumes-Performance Instanzen und nur mit NFSv4.1 verfügbar.

  • Beschränkung der Liste der Hosts in Ihren Exportrichtlinien, welche NFSv3-Clients Zugriff auf das Google Cloud NetApp Volumes Volume haben

  • 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

Google Cloud NetApp Volumes unterstützt NFSv4.x ACLs und bietet klare Vorteile gegenüber normalen POSIX-ähnlichen Berechtigungen wie die folgenden:

  • 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 der Gruppen-ID-Auflösung (GID), was effektiv die GID-LimitNFSv4.1 ACLs von NFS-Clients kontrolliert werden, nicht von Google Cloud NetApp Volumes. 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 eines SETATTR-Vorgangs eine NFSv4.1-ACL auf eine Datei festlegt, legt Google Cloud NetApp Volumes diese ACL auf das Objekt fest und ersetzt so 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 im Verlauf einer GETATTR-Operation eine NFSv4.1-ACL für eine Datei erhält, liest Google Cloud NetApp Volumes die dem Objekt zugeordnete NFSv4.1-ACL. Es 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 Berechtigungsebene zu steuern, auf der Dateien und Ordner ohne Administratoreingriff in einem Verzeichnis erstellt werden. Standardmäßig können in Google Cloud NetApp Volumes umask geerbte ACLs außer Kraft setzen, was erwartetes Verhalten nach "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 Benutzername und der Gruppenname des NFSv4.1-Clients einen Namensstring an und sendet ihn an die Instanz von Google Cloud NetApp Volumes. Wenn dieser Benutzername/Gruppenname und die ID-String-Kombination nicht übereinstimmen, wird der Benutzer und/oder die Gruppe auf den Standardbenutzer Niemand gequetscht, der in der Datei auf dem Client angegeben /etc/idmapd.conf ist.

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 Abhängigkeiten des Namensservers wie LDAP-Server erforderlich, um für eine Client-übergreifende Konsistenz und Google Cloud NetApp Volumes eine ordnungsgemäße Auflösung der Identität von Benutzer- und Gruppennamen zu gewährleisten.

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

Wenn LDAP in Google Cloud NetApp Volumes aktiviert ist, automatisiert Google Cloud NetApp Volumes die NFS-ID-Domäne, um zu ändern, was für die Suchdomäne im DNS konfiguriert ist, und Clients müssen nicht geändert werden, es sei denn, sie verwenden andere DNS-Domain-Suchnamen.

Wenn Google Cloud NetApp Volumes einen Benutzernamen oder Gruppennamen in lokalen Dateien oder LDAP auflösen können, wird der Domänenstring verwendet und die nicht übereinstimmenden Domänen-IDs an niemanden vergeben. Wenn Google Cloud NetApp-Volumes keinen Benutzernamen oder Gruppennamen in lokalen Dateien oder LDAP finden können, wird der numerische ID-Wert verwendet, und der NFS-Client löst den Namen ordnungsgemäß auf (dies ähnelt dem NFSv3-Verhalten).

Ohne die NFSv4.1 ID-Domäne des Kunden zu ändern, die mit dem Google Cloud NetApp Volumes-Volume übereinstimmt, sehen Sie das folgende Verhalten:

  • UNIX-Benutzer und -Gruppen mit lokalen Einträgen in Google Cloud NetApp-Volumes (z. B. root, wie in lokalen UNIX-Benutzern und -Gruppen definiert) werden auf den Niemand-Wert gequetscht.

  • UNIX-Benutzer und -Gruppen mit Einträgen in LDAP (wenn Google Cloud NetApp Volumes zur Verwendung von LDAP konfiguriert ist) knacken an niemanden, wenn sich DNS-Domänen zwischen NFS-Clients und Google Cloud NetApp Volumes 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 Folgendes mit Google Cloud NetApp Volumes 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-Funktionen gefüllt sind (NFS Kerberos in Google NetApp Volumes erfordert für die ordnungsgemäße Funktion eine Benutzer-SPN auf UNIX-Benutzerzuordnung.)

  • LDAP auf der Instanz von Google Cloud NetApp Volumes 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, müssen Google Cloud NetApp Volumes user1@CVSDEMO.LOCAL finden können (uid 1234, gid 1234). Wenn der Benutzer in Google Cloud NetApp Volumes USER1@CVSDEMO.LOCAL ist, dann stimmt er nicht überein (Großbuchstaben USER1 versus 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 der Server müssen sich beide damit einverstanden erklären, dass ein Benutzer tatsächlich der Benutzer ist, den er vorgibt zu sein. Daher müssen Sie Folgendes überprüfen, um sicherzustellen, dass der Benutzer, den der Client sieht, über dieselben Informationen verfügt wie der Benutzer, den Google Cloud NetApp Volumes sieht.

  • NFSv4.x ID-Domain. Client: idmapd.conf File; Google Cloud NetApp Volumes verwenden defaultv4iddomain.com und können nicht manuell geändert werden. Wenn Sie LDAP mit NFSv4.1 verwenden, ändert Google Cloud NetApp Volumes die ID-Domäne in die DNS-Suchdomäne, die mit der AD-Domäne identisch ist.

  • Benutzername und numerische IDs. Dadurch wird festgelegt, wo der Client nach Benutzernamen sucht und die Switch-Konfiguration für den Namensservice verwendet – Client nsswitch.conf- und/oder lokale Passwd- und Gruppendateien. Google Cloud NetApp Volumes lassen keine Änderungen daran zu, fügt jedoch bei Aktivierung LDAP automatisch zur Konfiguration hinzu.

  • Gruppenname und numerische IDs. Dies bestimmt, wo der Client nach Gruppennamen sucht, und verwendet die Switch-Konfiguration für den Namensservice – Client nsswitch.conf- und/oder lokale Passwd- und Gruppendateien. Google Cloud NetApp Volumes lassen keine Änderungen daran zu, fügt jedoch bei Aktivierung LDAP automatisch zur Konfiguration hinzu.

In fast allen Fällen, wenn Sie in Benutzer- und Gruppenlisten von Clients sehen nobody, ist das Problem die Übersetzung von Benutzer- oder Gruppennamen-Domänen-IDs zwischen Google Cloud NetApp Volumes und dem NFS-Client. Um dieses Szenario zu vermeiden, verwenden Sie LDAP zum Auflösen von Benutzer- und Gruppeninformationen zwischen Clients und Google Cloud NetApp Volumes.

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 ist beispielsweise die Ausgabe des Befehls nach einem Benutzer, der vom Client gefunden werden kann, und Google Cloud NetApp-Volumes greifen auf einen NFSv4.x-Mount zu:

# 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