Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Zie Overzicht van verificatieopties op basis van identiteiten op basis van Azure Files voor SMB-toegang voor meer informatie over ondersteunde opties en overwegingen.
Azure Files ondersteunt verificatie op basis van identiteit via Server Message Block (SMB) voor virtuele Linux-machines (VM's) met behulp van het Kerberos-verificatieprotocol via de volgende methoden:
- Lokale Windows Active Directory-domeindiensten (AD DS)
- Microsoft Entra Domain Services.
Als u AD DS wilt gebruiken, moet u uw AD DS synchroniseren met Microsoft Entra ID met behulp van Microsoft Entra Connect.
Notitie
In dit artikel wordt Ubuntu gebruikt voor de voorbeeldstappen. Vergelijkbare configuraties werken voor RHEL- en SLES-clients, zodat u Azure-bestandsshares kunt koppelen met Behulp van Active Directory.
Van toepassing op
| Beheermodel | Betaalmodel | Medianiveau | Redundantie | Kleine en Middelgrote Ondernemingen (SMB) | NFS (Network File System) |
|---|---|---|---|---|---|
| Microsoft.Opslag | Geconfigureerd v2 | HDD (standaard) | Lokaal (LRS) |
|
|
| Microsoft.Opslag | Geconfigureerd v2 | HDD (standaard) | Zone (ZRS) |
|
|
| Microsoft.Opslag | Geconfigureerd v2 | HDD (standaard) | Aardrijkskunde (GRS) |
|
|
| Microsoft.Opslag | Geconfigureerd v2 | HDD (standaard) | GeoZone (GZRS) |
|
|
| Microsoft.Opslag | Geconfigureerd v1 | SSD (van hoge kwaliteit) | Lokaal (LRS) |
|
|
| Microsoft.Opslag | Geconfigureerd v1 | SSD (van hoge kwaliteit) | Zone (ZRS) |
|
|
| Microsoft.Opslag | Betalen per gebruik | HDD (standaard) | Lokaal (LRS) |
|
|
| Microsoft.Opslag | Betalen per gebruik | HDD (standaard) | Zone (ZRS) |
|
|
| Microsoft.Opslag | Betalen per gebruik | HDD (standaard) | Aardrijkskunde (GRS) |
|
|
| Microsoft.Opslag | Betalen per gebruik | HDD (standaard) | GeoZone (GZRS) |
|
|
Beperkingen voor Linux SMB-clients
U kunt geen verificatie op basis van identiteit gebruiken om Azure-bestandsshares te koppelen aan Linux-clients tijdens het opstarten met fstab-vermeldingen, omdat de client het Kerberos-ticket niet vroeg genoeg kan verkrijgen om tijdens het opstarten te koppelen. U kunt een fstab vermelding gebruiken en de noauto optie opgeven om een gebruiker in staat te stellen de bestandsshare te koppelen nadat u zich hebt aangemeld met een eenvoudige koppelingsopdracht zonder alle parameters. U kunt de share ook autofs koppelen bij toegang.
Vereisten
Voordat u AD-verificatie inschakelt via SMB voor Azure-bestandsshares, moet u de volgende vereisten voltooien.
- Een Linux-VM met Ubuntu 18.04+ of een equivalente RHEL- of SLES-VM. Als deze wordt uitgevoerd in Azure, moet de VM ten minste één netwerkinterface hebben op het VNET met Microsoft Entra Domain Services. Als u een on-premises VM gebruikt, moet uw AD DS worden gesynchroniseerd met Microsoft Entra-id.
- Root-gebruiker of gebruikersgegevens voor een lokaal gebruikersaccount met volledige sudo-rechten (voor deze handleiding localadmin genoemd).
- De Virtuele Linux-machine is nog niet toegevoegd aan een ander AD-domein. Als het al deel uitmaakt van een domein, moet het eerst dat domein verlaten voordat het lid kan worden van dit domein.
- Een Microsoft Entra-tenant is volledig geconfigureerd, met domeingebruiker die al is ingesteld.
Het installeren van het samba-pakket is niet strikt noodzakelijk, maar het biedt u enkele handige hulpprogramma's en brengt automatisch andere pakketten, zoals samba-common en smbclient. Voer de volgende opdrachten uit om deze te installeren. Als u tijdens de installatie om invoerwaarden wordt gevraagd, laat u deze leeg.
sudo apt update -y
sudo apt install samba winbind libpam-winbind libnss-winbind krb5-config krb5-user keyutils cifs-utils
Het wbinfo hulpprogramma maakt deel uit van de samba-suite en is handig voor verificatie- en foutopsporingsdoeleinden, zoals controleren of de domeincontroller bereikbaar is, controleren op welk domein een computer is gekoppeld en informatie over gebruikers zoeken.
Zorg ervoor dat de Linux-host de tijd gesynchroniseerd houdt met de domeinserver. Raadpleeg de documentatie voor uw Linux-distributie. Voor sommige distributies kunt u dit doen met behulp van systemd-timesyncd. Bewerk /etc/systemd/timesyncd.conf met uw favoriete teksteditor om het volgende op te nemen:
[Time]
NTP=onpremaadint.com
FallbackNTP=ntp.ubuntu.com
Start vervolgens de service opnieuw op:
sudo systemctl restart systemd-timesyncd.service
AD Kerberos-verificatie inschakelen
Volg deze stappen om AD Kerberos-verificatie in te schakelen. Deze Samba-documentatie kan nuttig zijn als referentie.
Zorg ervoor dat de domeinserver bereikbaar en detecteerbaar is
- Zorg ervoor dat de opgegeven DNS-servers de IP-adressen van de domeinserver bevatten.
systemd-resolve --status
Global
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.com
Als de opdracht heeft gewerkt, slaat u de volgende stappen over en gaat u verder met de volgende sectie.
Als dit niet werkt, controleer of de IP-adressen van de domeinserver worden gepingd.
ping 10.0.2.5
PING 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 ms
Als de ping niet werkt, gaat u terug naar de vereisten en controleert u of uw VIRTUELE machine zich in een VNET bevindt dat toegang heeft tot de Microsoft Entra-tenant.
Als de IP-adressen pingen, maar de DNS-servers niet automatisch worden gedetecteerd, kunt u de DNS-servers handmatig toevoegen. Bewerken
/etc/netplan/50-cloud-init.yamlmet uw favoriete teksteditor.
# 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: 2
Pas vervolgens de wijzigingen toe:
sudo netplan --debug apply
- Winbind gaat ervan uit dat de DHCP-server de DNS-records van het domein up-to-date houdt. Dit geldt echter niet voor Azure DHCP. Als u de client wilt instellen om DDNS-updates te maken, gebruikt u deze handleiding om een netwerkscript te maken. Hier is een voorbeeldscript dat zich bevindt op
/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
Maak verbinding met Microsoft Entra Domain Services en zorg ervoor dat de services detecteerbaar zijn
- Zorg ervoor dat u de domeinserver kunt pingen op basis van de domeinnaam.
ping contosodomain.contoso.com
PING contosodomain.contoso.com (10.0.2.4) 56(84) bytes of data.
64 bytes from pwe-oqarc11l568.internal.cloudapp.net (10.0.2.4): icmp_seq=1 ttl=128 time=1.41 ms
64 bytes from pwe-oqarc11l568.internal.cloudapp.net (10.0.2.4): icmp_seq=2 ttl=128 time=1.02 ms
64 bytes from pwe-oqarc11l568.internal.cloudapp.net (10.0.2.4): icmp_seq=3 ttl=128 time=0.740 ms
64 bytes from pwe-oqarc11l568.internal.cloudapp.net (10.0.2.4): icmp_seq=4 ttl=128 time=0.925 ms
^C
--- contosodomain.contoso.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3016ms
rtt min/avg/max/mdev = 0.740/1.026/1.419/0.248 ms
- Zorg ervoor dat u de Microsoft Entra-services op het netwerk kunt detecteren.
nslookup
> set type=SRV
> _ldap._tcp.contosodomain.contoso.com.
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
_ldap._tcp.contosodomain.contoso.com service = 0 100 389 pwe-oqarc11l568.contosodomain.contoso.com.
_ldap._tcp.contosodomain.contoso.com service = 0 100 389 hxt4yo--jb9q529.contosodomain.contoso.com.
Hostnaam en Fully Qualified Domain Name (FQDN) instellen
- Werk met behulp van de teksteditor het
/etc/hostsbestand bij met de uiteindelijke FQDN (na deelname aan het domein) en de alias voor de host. Het IP-adres maakt momenteel niet uit omdat deze regel voornamelijk wordt gebruikt om korte hostnaam te vertalen naar FQDN. Zie Samba instellen als domeinlid voor meer informatie.
127.0.0.1 contosovm.contosodomain.contoso.com contosovm
#cmd=sudo vim /etc/hosts
#then enter this value instead of localhost "ubuntvm.contosodomain.contoso.com UbuntuVM"
- Nu moet uw hostnaam worden omgezet. U kunt voorlopig het IP-adres negeren dat wordt omgezet. De korte hostnaam moet worden omgezet in de FQDN.
getent hosts contosovm
127.0.0.1 contosovm.contosodomain.contoso.com contosovm
dnsdomainname
contosodomain.contoso.com
hostname -f
contosovm.contosodomain.contoso.com
Notitie
Voor sommige distributies moet u de hostnamectl opdracht uitvoeren om hostnaam -f te kunnen bijwerken:
hostnamectl set-hostname contosovm.contosodomain.contoso.com
Krb5.conf instellen
- Configureer
/etc/krb5.confdit zodat het Kerberos-sleuteldistributiecentrum (KDC) met de domeinserver kan worden gecontacteerd voor verificatie. Zie de mit Kerberos-documentatie voor meer informatie. Hier volgt een voorbeeldbestand/etc/krb5.conf.
[libdefaults]
default_realm = CONTOSODOMAIN.CONTOSO.COM
dns_lookup_realm = false
dns_lookup_kdc = true
smb.conf instellen
- Identificeer het pad naar
smb.conf.
sudo smbd -b | grep "CONFIGFILE"
CONFIGFILE: /etc/samba/smb.conf
- Wijzig de SMB-configuratie om te fungeren als een domeinlid. Zie Samba instellen als domeinlid voor meer informatie. Hier volgt een voorbeeldbestand
smb.conf.
Notitie
Dit voorbeeld is voor Microsoft Entra Domain Services, waarvoor we aanbevelen backend = rid in te stellen bij het configureren van idmap. On-premises AD DS-gebruikers kiezen mogelijk liever een andere idmap-back-end.
[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
- Dwing winbind af om het gewijzigde configuratiebestand opnieuw te laden.
sudo smbcontrol all reload-config
Aan domein toevoegen
- Gebruik de
net ads joinopdracht om de host toe te voegen aan het domein Microsoft Entra Domain Services. Als de opdracht een fout genereert, raadpleegt u Problemen met samba-domeinleden oplossen om het probleem op te lossen.
sudo net ads join -U contososmbadmin # user - garead
Enter contososmbadmin's password:
Using short domain name -- CONTOSODOMAIN
Joined 'CONTOSOVM' to dns domain 'contosodomain.contoso.com'
- Zorg ervoor dat de DNS-record bestaat voor deze host op de domeinserver.
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
Als u van plan bent dat gebruikers zich actief aanmelden bij clientcomputers en toegang hebben tot de Azure-bestandsshares, moet u nsswitch.conf instellen en PAM configureren voor winbind. Als geplande toegang is beperkt tot toepassingen die worden vertegenwoordigd door een gebruikersaccount of computeraccount waarvoor Kerberos-verificatie nodig is voor toegang tot de bestandsshare, kunt u deze stappen overslaan.
nsswitch.conf instellen
- Nu de host is toegevoegd aan het domein, moet u winbindbibliotheken plaatsen op de plaatsen waar u kunt zoeken wanneer u gebruikers en groepen zoekt. Gebruik de teksteditor om de volgende items te bewerken
/etc/nsswitch.confen toe te voegen:
passwd: compat systemd winbind
group: compat systemd winbind
- Schakel de winbind-service in om automatisch te starten bij het opnieuw opstarten.
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
- Start vervolgens de service opnieuw op.
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
- Zorg ervoor dat de domeingebruikers en -groepen worden gedetecteerd.
getent passwd contososmbadmin
contososmbadmin:*:12604:10513::/home/contososmbadmin:/bin/bash
getent group 'domain users'
domain users:x:10513:
Als het bovenstaande niet werkt, controleert u of de domeincontroller bereikbaar is met behulp van het hulpprogramma wbinfo:
wbinfo --ping-dc
PAM configureren voor winbind
- U moet winbind in de verificatiestack plaatsen, zodat domeingebruikers worden geverifieerd via winbind door PAM (Pluggable Authentication Module) te configureren voor winbind. De tweede opdracht zorgt ervoor dat de homedir wordt gemaakt voor een domeingebruiker bij de eerste aanmelding bij dit systeem.
sudo pam-auth-update --enable winbind
sudo pam-auth-update --enable mkhomedir
- Zorg ervoor dat de configuratie van de PAM-verificatie de volgende argumenten bevat:
/etc/pam.d/common-auth
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
- U moet zich nu als domeingebruiker kunnen aanmelden bij dit systeem, via ssh, su of een ander verificatiemiddel.
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)
Configuratie controleren
Als u wilt controleren of de clientcomputer lid is van het domein, zoekt u de FQDN van de client op de domeincontroller en zoekt u de DNS-vermelding die voor deze specifieke client wordt vermeld. In veel gevallen <dnsserver> is dit hetzelfde als de domeinnaam waaraan de client is toegevoegd.
nslookup <clientname> <dnsserver>
Gebruik vervolgens de klist opdracht om de tickets in de Kerberos-cache weer te geven. Er moet een vermelding zijn die begint met krbtgt die er ongeveer als volgt uitziet:
krbtgt/CONTOSODOMAIN.CONTOSO.COM@CONTOSODOMAIN.CONTOSO.COM
Als u PAM niet hebt geconfigureerd voor winbind, klist wordt de ticketvermelding mogelijk niet weergegeven. In dit geval kunt u de gebruiker handmatig verifiëren om de tickets op te halen:
wbinfo -K contososmbadmin
U kunt de opdracht ook uitvoeren als onderdeel van een script:
wbinfo -K 'contososmbadmin%SUPERSECRETPASSWORD'
De bestandsshare koppelen
Nadat u Kerberos-verificatie (of Microsoft Entra ID) hebt ingeschakeld en uw Linux-VM hebt gekoppeld aan een domein, kunt u de bestandsdeling koppelen.
Gebruik de volgende koppelingsoptie met alle modellen voor toegangsbeheer om Kerberos-beveiliging in te schakelen: sec=krb5 Gebruikersnaam en wachtwoord moeten worden weggelaten wanneer sec=krb5 in gebruik is. Voorbeeld:
sudo mount -t cifs $SMB_PATH $MNT_PATH -o sec=krb5,cruid=$UID,serverino,nosharesock,actimeo=30,mfsymlinks
Notitie
Deze functie ondersteunt alleen een door de server afgedwongen toegangsbeheermodel met behulp van NT-ACL's zonder modus bits. Linux-hulpprogramma's waarmee NT-ACL's worden bijgewerkt, zijn minimaal, dus werk ACL's bij via Windows. Door clients afgedwongen modellen voor toegangsbeheer (modefromsid,idsfromsid) en door clients vertaald toegangsbeheer (cifsacl) worden momenteel niet ondersteund.
Andere koppelingsopties
Koppeling tussen één gebruiker en meerdere gebruikers
In een gebruikssituatie van koppeling met één gebruiker wordt het mount point geopend door één gebruiker van het AD-domein en wordt niet gedeeld met andere gebruikers van het domein. Elke bestandstoegang vindt plaats in de context van de gebruiker waarvan de krb5-referenties zijn gebruikt om de bestandsshare te koppelen. Elke gebruiker op het lokale systeem die toegang heeft tot het koppelpunt, imiteert die gebruiker.
In een use-case voor koppelen met meerdere gebruikers is er nog steeds één koppelpunt, maar meerdere AD-gebruikers hebben toegang tot hetzelfde koppelpunt. In scenario's waar meerdere gebruikers op dezelfde client dezelfde share openen en het systeem geconfigureerd is voor Kerberos en gekoppeld is met sec=krb5, kunt u overwegen de multiuser koppelingsoptie te gebruiken.
Bestandsmachtigingen
Bestandsmachtigingen zijn belangrijk, met name als zowel Linux- als Windows-clients toegang hebben tot de bestandsshare. Als u bestandsmachtigingen wilt converteren naar DACL's voor bestanden, gebruikt u een standaard mount-optie zoals file_mode=<>,dir_mode=<>. Bestandsmachtigingen die zijn opgegeven als file_mode en dir_mode worden alleen toegepast op de client. De server dwingt toegangsbeheer af op basis van de beveiligingsdescriptor van het bestand of de map.
Eigendom van bestand
Bestandseigendom is van belang, met name als zowel Linux- als Windows-clients toegang hebben tot de bestandsshare. Kies een van de volgende mountopties om de UID/GID van het bestand te converteren naar de eigenaar/groeps-SID in de bestands-DACL.
- Een standaardwaarde gebruiken, zoals uid=<>,gid=<>
- Mapping van UID/GID configureren met behulp van RFC2307 en Active Directory (nss_winbind of nss_sssd)
Consistentie van bestandskenmerkcache
Prestaties zijn belangrijk, zelfs als bestandskenmerken niet altijd nauwkeurig zijn. De standaardwaarde voor actimeo is 1 (seconde), wat betekent dat de bestandskenmerken opnieuw van de server worden opgehaald als de kenmerken in de cache meer dan 1 seconde oud zijn. Het verhogen van de waarde tot 60 betekent dat kenmerken ten minste 1 minuut in de cache worden opgeslagen. Voor de meeste gebruiksscenario's raden we u aan om voor deze optie een waarde van 30 te gebruiken (actimeo=30).
Voor nieuwere kernels kunt u de actimeo-functies nauwkeuriger instellen. U kunt acdirmax gebruiken voor het opnieuwvalideren van mapvermeldingen en acregmax voor het opslaan van metagegevens van bestanden, bijvoorbeeld acdirmax=60,acregmax=5.
Volgende stap
Zie voor meer informatie over het koppelen van een SMB-bestandsshare in Linux: