Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: ✔️ SMB Dateifreigaben
Azure Files unterstützt identitätsbasierte Authentifizierung über Server Message Block (SMB) für Linux-virtuelle Maschinen (VMs) durch Verwendung des Kerberos-Authentifizierungsprotokolls mit lokalen Active Directory Domain Services (AD DS). Um dieses Verfahren zu verwenden, müssen Sie Ihre AD DS-Umgebung mit Microsoft Entra ID synchronisieren, indem Sie Microsoft Entra Connect Sync verwenden.
Weitere Informationen zu unterstützten Optionen und Überlegungen finden Sie unter Overview von Azure Files identitätsbasierten Authentifizierungsoptionen für den SMB-Zugriff.
Hinweis
In diesem Artikel wird Ubuntu für die Beispielschritte verwendet. Ähnliche Konfigurationen gelten auch für RHEL- und SLES-Clients und ermöglichen es Ihnen, Azure-Dateifreigaben mithilfe von lokalem AD DS einzubinden.
Einschränkungen des Linux SMB-Clients
Sie können keine identitätsbasierte Authentifizierung verwenden, um Azure-Dateifreigaben beim Systemstart auf Linux-Clients mithilfe von fstabEinträgen einzubinden. Diese Einschränkung besteht, weil der Client das Kerberos-Ticket nicht früh genug erhält, um es beim Systemstart einzubinden. Sie können einen fstab-Eintrag verwenden und die Option noauto angeben, mit der ein Benutzer die Dateifreigabe nach der Anmeldung mit einem einfachen Bereitstellungsbefehl ohne alle Parameter mounten kann. Sie können auch mithilfe von autofs die Freigabe beim Zugriff einbinden.
Voraussetzungen
Bevor Sie einen Linux-Client so konfigurieren, dass er lokale AD DS-Authentifizierung über SMB für Azure-Dateifreigaben verwendet, erfüllen Sie die folgenden Voraussetzungen:
- Eine Linux-VM, auf der Ubuntu 18.04 oder höher oder eine entsprechende RHEL- oder SLES-VM ausgeführt wird. Die VM muss eine Netzwerkverbindung zu Ihren lokalen AD DS-Domänencontrollern haben und DNS-Server verwenden, die die AD DS-Domäne auflösen können.
- Eine lokale AD DS-Umgebung, die mit Microsoft Entra ID synchronisiert wurde, indem Microsoft Entra Connect Sync verwendet wurde.
- Eine SMB-Azure-Dateifreigabe in einem Speicherkonto, das für die lokale AD DS-Authentifizierung konfiguriert ist.
- Stammbenutzer- oder Benutzeranmeldeinformationen für ein lokales Benutzerkonto, das vollständige sudo-Rechte hat (bei diesem Leitfaden „localadmin“).
- Die Linux-VM ist noch nicht mit einer anderen AD DS-Domäne verbunden. Wenn ja, verlassen Sie diese Domäne, bevor Sie die VM mit dieser Domain verbinden.
- Ein AD DS-Domänenbenutzerkonto mit der Berechtigung, Computer mit der Domäne zu verbinden.
Die Installation des Samba-Pakets ist nicht unbedingt erforderlich, bietet Ihnen aber einige nützliche Tools und bringt automatisch andere Pakete ein, z. B. samba-common und smbclient. Führen Sie die folgenden Befehle zu dessen Installation aus. Wenn Sie während der Installation zur Eingabe von Werten aufgefordert werden, lassen Sie sie leer.
sudo apt update -y
sudo apt install samba winbind libpam-winbind libnss-winbind krb5-config krb5-user keyutils cifs-utils
Das wbinfo Tool ist Teil der Samba-Suite und eignet sich für Authentifizierungs- und Debuggingzwecke, z. B. überprüfen, ob der Domänencontroller erreichbar ist, überprüfen, mit welcher Domäne ein Computer verbunden ist, und Informationen zu Benutzern zu finden.
Stelle sicher, dass der Linux-Host die Zeit mit den AD DS-Domänencontrollern synchronisiert. Siehe die Dokumentation für deine Linux-Distribution. Für einige Distributionen kannst du das mit systemd-timesyncd machen. Bearbeiten Sie /etc/systemd/timesyncd.conf, um die folgende Konfiguration hinzuzufügen. Ersetzen Sie ntp.server durch denselben Network Time Protocol (NTP)-Server-Hostnamen oder dieselbe IP-Adresse, die auch Ihre AD DS-Umgebung verwendet.
[Time]
NTP=ntp.server
FallbackNTP=ntp.ubuntu.com
Starten Sie dann den Dienst neu:
sudo systemctl restart systemd-timesyncd.service
AD DS Kerberos-Authentifizierung aktivieren
Befolgen Sie diese Schritte, um die Kerberos-Authentifizierung mit dem lokalen AD DS zu ermöglichen. Weitere Informationen zur Konfiguration von Samba finden Sie unter Samba einrichten als Domänenmitglied.
Stellen Sie sicher, dass die AD DS-Domänencontroller erreichbar und auffindbar sind
Stellen Sie sicher, dass die konfigurierten DNS-Server Ihre AD DS-Domäne und Domänencontroller auflösen können.
systemd-resolve --statusGlobal DNSSEC NTA: 10.in-addr.arpa 16.172.in-addr.arpa 168.192.in-addr.arpa 17.172.in-addr.arpa 18.172.in-addr.arpa 19.172.in-addr.arpa 20.172.in-addr.arpa 21.172.in-addr.arpa 22.172.in-addr.arpa 23.172.in-addr.arpa 24.172.in-addr.arpa 25.172.in-addr.arpa 26.172.in-addr.arpa 27.172.in-addr.arpa 28.172.in-addr.arpa 29.172.in-addr.arpa 30.172.in-addr.arpa 31.172.in-addr.arpa corp d.f.ip6.arpa home internal intranet lan local private test Link 2 (eth0) Current Scopes: DNS LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no DNS Servers: 10.0.2.5 10.0.2.4 10.0.0.41 DNS Domain: domain1.contoso.comWenn die DNS-Server die IP-Adressen des Domänencontrollers enthalten, setze dann Hostname und FQDN ein. Wenn der Befehl nicht die erwartete Ausgabe liefert, siehe Problembehandlung bei der Ermittlung von AD DS-Domänencontrollern.
Problembehandlung bei der Ermittlung von AD DS-Domänencontrollern
Stellen Sie sicher, dass Sie die IP-Adressen des AD DS-Domänencontrollers pingen können.
ping 10.0.2.5PING 10.0.2.5 (10.0.2.5) 56(84) bytes of data. 64 bytes from 10.0.2.5: icmp_seq=1 ttl=128 time=0.898 ms 64 bytes from 10.0.2.5: icmp_seq=2 ttl=128 time=0.946 ms ^C --- 10.0.2.5 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 0.898/0.922/0.946/0.024 msWenn der Ping nicht funktioniert, überprüfen Sie die Voraussetzungen und stellen Sie sicher, dass Ihre VM Netzwerkverbindung zu den AD DS-Domänencontrollern hat.
Wenn die IP-Adressen auf Ping reagieren, die DNS-Server jedoch nicht automatisch erkannt werden, können Sie die DNS-Server manuell hinzufügen. Bearbeiten Sie
/etc/netplan/50-cloud-init.yamlmit Ihrem bevorzugten Text-Editor.# This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud-init's # network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} network: ethernets: eth0: dhcp4: true dhcp4-overrides: route-metric: 100 dhcp6: false match: macaddress: 00:22:48:03:6b:c5 set-name: eth0 nameservers: addresses: [10.0.2.5, 10.0.2.4] version: 2Wenden Sie dann die Änderungen an:
sudo netplan --debug applywinbind geht davon aus, dass der DHCP-Server die DNS-Domäneneinträge auf dem neuesten Stand hält. Diese Annahme gilt jedoch nicht für Azure DHCP. Verwenden Sie dieses Handbuch zum Erstellen eines Netzwerkskripts, um den Client für DDNS-Updates einzurichten. Hier ist ein Beispielskript, das sich in
/etc/dhcp/dhclient-exit-hooks.d/ddns-update.#!/bin/sh # only execute on the primary nic if [ "$interface" != "eth0" ] then return fi # When you have a new IP, perform nsupdate if [ "$reason" = BOUND ] || [ "$reason" = RENEW ] || [ "$reason" = REBIND ] || [ "$reason" = REBOOT ] then host=`hostname -f` nsupdatecmds=/var/tmp/nsupdatecmds echo "update delete $host a" > $nsupdatecmds echo "update add $host 3600 a $new_ip_address" >> $nsupdatecmds echo "send" >> $nsupdatecmds nsupdate $nsupdatecmds fi
Nachdem das Problem gelöst ist, richten Sie einen Hostnamen und einen vollständig qualifizierten Domainnamen ein.
Einrichten des Hostnamens und des vollqualifizierten Domänennamens (FQDN)
Aktualisieren Sie die Datei /etc/hosts mithilfe Ihres Text-Editors mit dem endgültigen FQDN (nach dem Beitritt zur Domäne) und dem Alias für den Host. Die IP-Adresse spielt derzeit keine Rolle, da diese Zeile hauptsächlich verwendet wird, um kurzen Hostnamen in FQDN zu übersetzen. Weitere Informationen finden Sie unter Einrichten von Samba als Domänenmitglied.
127.0.0.1 contosovm.contosodomain.contoso.com contosovm
#cmd=sudo vim /etc/hosts
#then enter this value instead of localhost "ubuntuvm.contosodomain.contoso.com UbuntuVM"
Überprüfen Sie nun, dass Ihr Hostname korrekt aufgelöst wird, indem Sie die folgenden drei Befehle ausführen.
Verwenden Sie getent hosts, um zu überprüfen, dass der Kurzname des Hosts zum FQDN aufgelöst wird. Du kannst die zurückgegebene IP-Adresse ignorieren.
getent hosts contosovm
127.0.0.1 contosovm.contosodomain.contoso.com contosovm
Verwenden Sie dnsdomainname, um zu überprüfen, ob der Domainname korrekt konfiguriert ist.
dnsdomainname
contosodomain.contoso.com
Benutze sie hostname -f , um zu bestätigen, dass das vollständige FQDN gelöst ist.
hostname -f
contosovm.contosodomain.contoso.com
Hinweis
Einige Linux-Distributionen verlangen, dass du den hostnamectl Befehl für hostname -f zum Aktualisieren ausführst:
hostnamectl set-hostname contosovm.contosodomain.contoso.com
Einrichten von „krb5.conf“
Konfigurieren /etc/krb5.conf Sie so, dass das Kerberos-Schlüsselverteilungszentrum (KDC) auf einem AD DS-Domänencontroller zur Authentifizierung kontaktiert werden kann. Weitere Informationen finden Sie in der Kerberos-Dokumentation des MIT. Hier ist eine /etc/krb5.conf-Beispieldatei.
[libdefaults]
default_realm = CONTOSODOMAIN.CONTOSO.COM
dns_lookup_realm = false
dns_lookup_kdc = true
Einrichten von „smb.conf“
Identifizieren Sie den Pfad zu smb.conf.
sudo smbd -b | grep "CONFIGFILE"
CONFIGFILE: /etc/samba/smb.conf
Ändere die SMB-Konfiguration so, dass sie als AD DS-Domänenmitglied fungiert. Das folgende Beispiel verwendet das rid idmap-Backend.
Überprüfen Sie die Auswahl eines idmap-Backends und wählen Sie das Backend, das die Anforderungen Ihrer AD DS-Umgebung erfüllt.
[global]
workgroup = CONTOSODOMAIN
security = ADS
realm = CONTOSODOMAIN.CONTOSO.COM
winbind refresh tickets = Yes
vfs objects = acl_xattr
map acl inherit = Yes
store dos attributes = Yes
dedicated keytab file = /etc/krb5.keytab
kerberos method = secrets and keytab
winbind use default domain = Yes
load printers = No
printing = bsd
printcap name = /dev/null
disable spoolss = Yes
log file = /var/log/samba/log.%m
log level = 1
idmap config * : backend = tdb
idmap config * : range = 3000-7999
idmap config CONTOSODOMAIN : backend = rid
idmap config CONTOSODOMAIN : range = 10000-999999
template shell = /bin/bash
template homedir = /home/%U
Erzwingen Sie, dass winbind die geänderte Konfigurationsdatei erneut lädt.
sudo smbcontrol all reload-config
Tritt der AD DS-Domäne bei.
Verwenden Sie den net ads join Befehl, um dem Host der Domäne beizutreten. Wenn der Befehl einen Fehler zurückgibt, lesen Sie die Problembehandlung für Samba-Domänenmitglieder , um das Problem zu beheben.
sudo net ads join -U contososmbadmin
Enter contososmbadmin's password:
Using short domain name -- CONTOSODOMAIN
Joined 'CONTOSOVM' to dns domain 'contosodomain.contoso.com'
Stellen Sie sicher, dass der DNS-Eintrag für diesen Host in AD DS DNS existiert.
nslookup contosovm.contosodomain.contoso.com 10.0.2.5
Server: 10.0.2.5
Address: 10.0.2.5#53
Name: contosovm.contosodomain.contoso.com
Address: 10.0.0.8
Einrichten von „nsswitch.conf“
Wenn Sie planen, dass sich Benutzer aktiv bei den Clientcomputern anmelden und auf die Azure-Dateifreigaben zugreifen, müssen Sie die nsswitch.conf einrichten. Wenn der geplante Zugriff auf Anwendungen beschränkt ist, die durch ein Benutzerkonto oder Computerkonto dargestellt werden, das kerberos-Authentifizierung für den Zugriff auf die Dateifreigabe benötigt, können Sie diesen Schritt überspringen.
Nachdem Sie dem Host der Domäne beigetreten sind, fügen Sie den Benutzer- und Gruppennachschlagepfaden die winbind-Bibliotheken hinzu. Verwenden Sie Ihren Text-Editor zum Bearbeiten von /etc/nsswitch.conf und Hinzufügen der folgenden Einträge:
passwd: compat systemd winbind
group: compat systemd winbind
Aktivieren Sie den winbind-Dienst, damit er beim Neustart automatisch startet.
sudo systemctl enable winbind
Synchronizing state of winbind.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable winbind
Starten Sie den Dienst neu.
sudo systemctl restart winbind
sudo systemctl status winbind
winbind.service - Samba Winbind Daemon
Loaded: loaded (/lib/systemd/system/winbind.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-04-24 09:34:31 UTC; 10s ago
Docs: man:winbindd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 27349 (winbindd)
Status: "winbindd: ready to serve connections..."
Tasks: 2 (limit: 4915)
CGroup: /system.slice/winbind.service
├─27349 /usr/sbin/winbindd --foreground --no-process-group
└─27351 /usr/sbin/winbindd --foreground --no-process-group
Apr 24 09:34:31 contosovm systemd[1]: Starting Samba Winbind Daemon...
Apr 24 09:34:31 contosovm winbindd[27349]: [2020/04/24 09:34:31.724211, 0] ../source3/winbindd/winbindd_cache.c:3170(initialize_winbindd_cache)
Apr 24 09:34:31 contosovm winbindd[27349]: initialize_winbindd_cache: clearing cache and re-creating with version number 2
Apr 24 09:34:31 contosovm winbindd[27349]: [2020/04/24 09:34:31.725486, 0] ../lib/util/become_daemon.c:124(daemon_ready)
Apr 24 09:34:31 contosovm systemd[1]: Started Samba Winbind Daemon.
Apr 24 09:34:31 contosovm winbindd[27349]: STATUS=daemon 'winbindd' finished starting up and ready to serve connections
Stellen Sie sicher, dass die Domänenbenutzer und -gruppen ermittelt werden.
getent passwd contososmbadmin
contososmbadmin:*:12604:10513::/home/contososmbadmin:/bin/bash
getent group 'domain users'
domain users:x:10513:
Wenn die vorherigen Schritte nicht funktionieren, prüfen Sie, ob ein AD DS-Domänencontroller mit dem Tool wbinfo erreichbar ist:
wbinfo --ping-dc
Konfigurieren von PAM für winbind
Wenn Sie planen, dass Benutzer sich aktiv bei Clientcomputern anmelden und auf die Azure-Dateifreigaben zugreifen, müssen Sie PAM für Winbind konfigurieren. Wenn der geplante Zugriff auf Anwendungen beschränkt ist, die durch ein Benutzerkonto oder Computerkonto dargestellt werden, das kerberos-Authentifizierung für den Zugriff auf die Dateifreigabe benötigt, können Sie diesen Schritt überspringen.
Platzieren Sie winbind im Authentifizierungsstapel, damit Domänenbenutzer sich über winbind authentifizieren, indem Sie PAM (Pluggable Authentication Module) für winbind konfigurieren. Der zweite Befehl stellt sicher, dass das System bei der ersten Anmeldung das Startverzeichnis für einen Domänenbenutzer erstellt.
sudo pam-auth-update --enable winbind
sudo pam-auth-update --enable mkhomedir
Überprüfen Sie, dass die PAM-Authentifizierungskonfiguration die richtigen pam_winbind.so Argumente in /etc/pam.d/common-authenthält:
grep pam_winbind.so /etc/pam.d/common-auth
auth [success=1 default=ignore] pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
Wenn der Befehl keine Ausgabe zurückgibt, wird erneut ausgeführt sudo pam-auth-update --enable winbind , um sicherzustellen, dass winbind zum PAM-Authentifizierungsstack hinzugefügt wird.
Sie können sich jetzt als Domänenbenutzer bei diesem System anmelden, entweder über ssh, su oder andere Authentifizierungsmittel.
su - contososmbadmin
Password:
Creating directory '/home/contososmbadmin'.
contososmbadmin@contosovm:~$ pwd
/home/contososmbadmin
contososmbadmin@contosovm:~$ id
uid=12604(contososmbadmin) gid=10513(domain users) groups=10513(domain users),10520(group policy creator owners),10572(denied rodc password replication group),11102(dnsadmins),11104(aad dc administrators),11164(group-readwrite),11165(fileshareallaccess),12604(contososmbadmin)
Überprüfen Sie die AD DS-Authentifizierung unter Linux
Um zu überprüfen, dass der Client-Rechner mit der AD DS-Domäne verbunden ist, suchen Sie mit einem AD DS DNS-Server die FQDN des Clients nach und bestätigen, dass der DNS-Eintrag für den Client existiert. In vielen Fällen <dnsserver> ist es dasselbe wie der AD DS-Domainname, mit dem der Client verbunden ist.
nslookup <clientname> <dnsserver>
Führen Sie als Nächstes klist aus, um die Tickets im Kerberos-Cache anzuzeigen:
klist
Die Ausgabe sollte einen Eintrag enthalten, der mit krbtgt beginnt und ähnlich aussieht wie:
krbtgt/CONTOSODOMAIN.CONTOSO.COM@CONTOSODOMAIN.CONTOSO.COM
Wenn Sie nicht PAM für winbind konfiguriert haben, wird klist den Ticketeintrag vielleicht nicht angezeigt. In diesem Fall können Sie den Benutzer manuell authentifizieren, um die Tickets zu erhalten:
wbinfo -K contososmbadmin
Sie können den Befehl auch im Rahmen eines Skripts ausführen:
wbinfo -K 'contososmbadmin%SUPERSECRETPASSWORD'
Einbinden der Dateifreigabe
Nachdem Sie die Kerberos-Authentifizierung aktiviert und Ihre Linux-VM Domänenmitglied angehört haben, können Sie die Dateifreigaben mounten.
Verwenden Sie die folgende Bereitstellungsoption mit allen Zugriffssteuerungsmodellen, um die Kerberos-Sicherheit zu aktivieren: sec=krb5 Lassen Sie den Benutzernamen und das Kennwort aus, wenn Sie sec=krb5 verwenden. Beispiel:
sudo mount -t cifs $SMB_PATH $MNT_PATH -o sec=krb5,cruid=$UID,serverino,nosharesock,actimeo=30,mfsymlinks
Hinweis
Dieses Feature unterstützt nur ein vom Server erzwungenes Zugriffssteuerungsmodell, das NT-ACLs ohne Modusbits verwendet. Linux-Tools, die NT-ACLs aktualisieren, sind minimal. Aktualisieren Sie daher ACLs über Windows. Vom Client erzwungene Zugriffssteuerungsmodelle (modefromsid,idsfromsid) und vom Client übersetzte Zugriffssteuerungsmodelle (cifsacl) werden zurzeit nicht unterstützt.
Zusätzliche Azure Files SMB-Einbindungsoptionen für Linux
Einbindung mit einer einzelnen benutzenden Person im Vergleich zur Einbindung mit mehreren Benutzenden
In einem Einzelbenutzer-Mount-Anwendungsfall greift ein einzelner Benutzer in der AD DS-Domäne auf den Mount-Punkt auf und teilt ihn nicht mit anderen Benutzern in der Domäne. Jeder Dateizugriff erfolgt im Kontext des Benutzers, dessen krb5-Anmeldeinformationen zum Mounten der Dateifreigabe verwendet werden. Jede benutzende Person im lokalen System, der auf den Bereitstellungspunkt zugreift, nimmt die Identität dieser benutzenden Person an.
In einem Mehrbenutzer-Mount-Anwendungsfall gibt es immer noch einen einzelnen Mount-Punkt, aber mehrere AD DS-Nutzer können auf denselben Mount-Punkt zugreifen. In Szenarien, in denen mehrere Benutzende auf demselben Client auf dieselbe Freigabe zugreifen, das System für Kerberos konfiguriert und mit sec=krb5 eingebunden wurde, sollten Sie die Einbindungsoption multiuser verwenden.
Dateiberechtigungen
Dateiberechtigungen sind wichtig, insbesondere, wenn Linux- und Windows-Clients auf die Dateifreigabe zugreifen. Verwenden Sie zum Konvertieren von Dateiberechtigungen in DACLs für Dateien eine Standardeinbindungsoption, z. B. file_mode=<>,dir_mode=<>. Der Client erzwingt nur Dateiberechtigungen, die als file_mode und dir_mode angegeben sind. Der Server erzwingt die Zugriffssteuerung basierend auf der Sicherheitsbeschreibung der Datei oder des Verzeichnisses.
Dateibesitz
Dateibesitz ist wichtig, insbesondere, wenn Linux- und Windows-Clients auf die Dateifreigabe zugreifen. Wählen Sie eine der folgenden Einbindungsoptionen aus, um die Dateibesitz-UID/GID in die Besitzer-/Gruppen-SID für Datei-DACL zu konvertieren:
- Verwenden eines Standardwerts, z. B. uid=<>,gid=<>
- Konfigurieren Sie UID/GID-Mapping über RFC2307 und AD DS mit nss_winbind oder nss_sssd.
Kohärenz des Dateiattribut-Caches
Die Leistung ist wichtig, selbst wenn Dateiattribute nicht immer richtig sind. Der Standardwert für actimeo ist „1“ (Sekunde). Dies bedeutet, dass die auf dem Server zwischengespeicherten Dateiattribute dort erneut abgerufen werden, wenn sie älter als 1 Sekunde sind. Das Erhöhen des Werts auf 60 bedeutet, dass Attribute mindestens eine Minute zwischengespeichert werden. Verwenden Sie für die meisten Anwendungsfälle einen Wert von 30 für diese Option (actimeo=30).
Erwägen Sie bei neueren Kerneln, die actimeo-Features präziser festzulegen. Sie können acdirmax zum Zwischenspeichern bei der erneuten Überprüfung von Verzeichniseinträgen und acregmax zum Zwischenspeichern von Dateimetadaten verwenden, z. B. acdirmax=60,acregmax=5.
Nächster Schritt
Weitere Informationen zum Mounten einer SMB-Dateifreigabe unter Linux finden Sie unter: