Unix Paylaşımlarını Windows NFS İstemcisi ile Bağlama
Ağ Dosya Sistemi (NFS), çok istemcili erişim için bir dosya sistemini ağ üzerinden dağıtmaya yönelik açık bir standarttır. 1984 yılında tasarlanan NFS, istemci IP/ana bilgisayar adı, auth_sys (Unix kimlik doğrulaması), Kerberos ve NFSv4.x ACL'ler dahil olmak üzere hem paylaşım (dışa aktarma) hem de dosya sistemi düzeylerinde birçok kimlik doğrulama yöntemini içerecek şekilde büyüdü.
Bu blog gönderisinde bir Windows istemcisine NFS paylaşımının nasıl bağlanacağı açıklanmaktadır.
NSF, Windows işletim sistemleriyle nasıl çalışır?
Sunucu İleti Bloğu (SMB) veya SMB'nin Windows uygulaması (CIFS) yoluyla ağ dosya paylaşımlarına erişmeye muhtemelen aşina olsanız da, NFS, Unix sunucuları olan üretim ortamlarında hala yaygındır.
Ne yazık ki, NFS geleneksel olarak Windows'u Unix ile karıştıran ortamlarla iyi performans göstermiyordu: Windows istemcisinin NFS aktarımlarına erişimini sağlamak için, her NFS aktarımının bir Samba paylaşım eşdeğerine (Unix için bir SMB uygulaması) ihtiyacı vardı.
Ancak Microsoft, NFS istemci ve sunucu araçlarını uygulamaya başlayınca bu durum değişti. Microsoft'un NFS belgeleri aşağıdaki işletim sistemi desteğini listeler:
| Operating Systems | NFS Server Versions | NFS Client Versions |
| Windows 7, Windows 8.1 Windows 10 | N/A | NFSv2, NFSv3 |
| Windows Server 2008, Windows Server 2008 R2 | NFSv2, NFSv3 | NFSv2, NFSv3 |
| Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 |
NFSv2, NFSv3, NFSv4.1 | NFSv2, NFSv3 |
Windows'u NFS İstemcisi Olarak Yapılandırma
Önkoşul: Gerekli Windows özelliklerini etkinleştirin.
Bir Windows istemcisine bir NFS paylaşımı bağlamadan önce, NFS istemci işlemlerini gerçekleştirmek için Windows içindeki belirli özellikleri etkinleştirmemiz gerekir. Kullanılacak PowerShell komutu istemci ortamınıza bağlıdır:
Windows 10 için:
Enable-WindowsOptionalFeature -FeatureName ServicesForNFS-ClientOnly, ClientForNFS-Infrastructure -Online -NoRestartWindows Sunucusu için:
Install-WindowsFeature NFS-ClientNFS paylaşımını bağlayın (dışa aktarın).
Şimdi bir Unix sunucusundan NFS aktarımlarını bağlamamız gerekiyor. Ancak Unix ve Windows, kullanıcıları ve grupları tanımlamak için farklı mekanizmalar kullanır: Linux gibi Unix benzeri işletim sistemlerinde, kullanıcılar ve gruplar sırasıyla kullanıcı tanımlayıcıları (UID'ler) ve grup tanımlayıcıları (GID'ler) ile tanımlanır. Windows'ta kullanıcılar ve gruplar, güvenlik tanımlayıcıları (SID'ler) kullanılarak tanımlanır.
Bu nedenle, NFS aktarımları sağlayan bir Unix sunucusunda kimlik doğrulaması yapmak için Windows kullanıcılarını Unix UID'leri ve GID'leriyle eşlememiz gerekir. Bu UID/GID eşlemesi ile Unix sunucusu, NFS dışa aktarma isteğini hangi kullanıcının oluşturduğunu belirleyebilecektir.
Kimlik eşlemeyi gerçekleştirmek ve NFS dışa aktarımını bağlamak için kullanabileceğiniz üç yöntem aşağıda verilmiştir.
Yöntem 1 (tercih edilir). Active Directory'de (AD) kimlik eşleme gerçekleştirin.
Hem Unix NFS sunucusu hem de Windows NFS istemcisi aynı Active Directory etki alanına katılmışsa, Active Directory'de kimlik eşlemeyi işleyebiliriz. Mümkün olduğunda güvenlik amacıyla tercih edilen yöntem budur.
NOT: Yerel bir etcpasswd dosyasının varlığı kimlik eşlemede öncelikli olacağından, yöntem 2 (aşağıda) kullanılıyorsa bu yöntem kullanılamaz.
Varsayılan olarak, NFS istemcimiz Active Directory'de kimlik eşlemesini aramaz. Ancak NFS istemcisinde yükseltilmiş bir PowerShell oturumunda aşağıdaki komutu çalıştırarak bunu değiştirebiliriz:
» Set-NfsMappingStore -EnableADLookup $True -ADDomainName "<your_domain>"Artık mevcut Windows kullanıcısının UID/GID eşlemesini kontrol etmek için Get-NfsMappingStore komutunu çalıştırabiliriz. Gördüğünüz gibi ADLookupEnabled True olarak ayarlı ve ADOmain için bir alan adı belirtildi.
» Get-NfsMappingStoreUNMServer :
UNMLookupEnabled : False
ADDomain : <your_domain>
ADLookupEnabled : True
LdapServer :
LdapNamingContext :
LdapLookupEnabled : False
PasswdFileLookupEnabled : False
Daha sonra Active Directory Kullanıcıları ve Bilgisayarlarında kimlik eşlememizi yapılandırmamız gerekiyor. Her kullanıcının uidNumber ve gidNumber niteliklerini görüntülemek için Görünüm açılır menüsünde Gelişmiş Özelliklerin etkinleştirildiğinden emin olun:
Daha sonra bu alanları bir kullanıcının veya grubun Özellikler menüsündeki Özellik Düzenleyici sekmesinde görüntüleyip düzenleyebileceksiniz:
Birçok Active Directory kullanıcısı için UID'leri ve GID'leri manuel olarak eşlemek zahmetli olabilir. İşlemi otomatikleştirmek için UID/GID verilerini içeren bir CSV dosyası kullanarak istediğiniz her kullanıcı için uygun öznitelik değerlerini ayarlamak üzere aşağıdaki PowerShell komutunu kullanabilirsiniz:
Set-ADUser -identity <UserPrincipalName> -add @{uidNumber="<user_unix_uid>";
gidNumber="<user_unix_gid>"}NOT: Set-ADUser komutunda, kullanıcı zaten uidNumber veya gidNumber için bir değere sahipse "add", "replace" olarak değiştirilmelidir.
Bu yaklaşımı kullanarak artık Windows'taki bir NFS paylaşımını komut istemi aracılığıyla kullanılabilir bir sürücü harfiyle eşleyebiliriz ve UID/GID, geçerli Active Directory kullanıcısının uidNumber ve gidNumber öznitelik değerlerine göre eşlenecektir.
» mount \<nfs_server_ip_address>pathtonfsexport Z:NFS sunucusunun IP'sinden sonraki yol, NFS sunucusundaki NFS dışa aktarımının yerel yoludur ve sürücü harfi, Windows NFS istemcisindeki kullanılabilir herhangi bir sürücü harfidir.
Elbette, eşlediğimiz kullanıcıya verilen Unix hakları, sonuçta dışa aktarmaya okuma/yazma veya salt okunur gibi ne tür bir erişime sahip olacağımıza karar vermek için kullanılır.
Yöntem 2. Yerel etcpasswd dosyasını kullanarak kimlik eşlemesini gerçekleştirin.
Kimlik eşleme için tercih edilen yöntem Active Directory kullanmak olduğundan diğer iki seçeneğin ayrıntısına girmeyeceğiz. Ancak Windows'un yerel kimlik eşlemesini %SYSTEMROOT%system32driversetc içinde bulunan Unix tarzı passwd ve grup dosyalarını kullanarak gerçekleştirebildiğini kısaca belirtmekte fayda var.
passwd dosyası mevcutsa ve geçerli Windows kullanıcısı için kimlik eşleme bilgilerine sahipse, passwd ve grup dosyalarında belirtilen eşlemeler, Active Directory veya AnonymousUid/AnonymousGid'deki UID/GID eşlemeleri yerine istemcinin NFS bağlama istekleri için kullanılacaktır. Aşağıda özetlenen Windows kayıt defteri ayarları.
Get-NfsMappingStore PowerShell komutunu çalıştırırken, bu iş akışının geçerli Windows kullanıcısı için etkin olduğu durumlarda PasswdFileLookupEnabled'ın True olduğunu fark edeceksiniz.
Bu yaklaşım, yukarıdaki Active Directory kimlik eşleme yaklaşımıyla aynı bağlama sözdizimini kullanır:
» mount \<nfs_server_ip_address>pathtonfsexport Z:Yöntem 3. AnonymousUid/AnonymousGid Windows kayıt defteri ayarlarını kullanarak kimlik eşlemesini gerçekleştirin.
Son yöntem güvensiz bir yaklaşım olarak kabul edilir ve önerilmez. Yukarıdaki yöntemlerle belirli yerel Windows kullanıcılarının yazma izinlerini güvence altına almak yerine, potansiyel olarak herhangi bir yerel kullanıcının hedef NFS dışa aktarmalarını okuma/yazma erişimiyle bağlamasına olanak tanır.
Yerel Windows istemcisini istenen dışa aktarımlara sahip olan Unix kullanıcısının UID'si ve GID'si ile eşlemek için yükseltilmiş bir PowerShell'de aşağıdakini çalıştırın:
» New-ItemProperty HKLM:SOFTWAREMicrosoftClientForNFSCurrentVersionDefault -Name AnonymousUID -Value <unix_export_owner_uid> -PropertyType "DWord"» New-ItemProperty HKLM:SOFTWAREMicrosoftClientForNFSCurrentVersionDefault -Name AnonymousGID -Value <unix_export_owner_gid> -PropertyType "DWord"Bu anahtarları Windows kayıt defterine ekledikten sonra etkili olmaları için yeniden başlatmanız gerekir.
Ardından, NFS dışa aktarımını okuma/yazma erişimiyle bağlamak için aşağıdaki komutu kullanın (istemcinin IP'sinin dışa aktarmayı bağlama iznine sahip olduğu ve istenen her dışa aktarma için UID/GID eşlemesinin doğru olduğu varsayılarak):
» mount -o anon \<nfs_server_ip_address>pathtonfsexport Z:SSS
Windows 11, NFS istemcilerini destekliyor mu?
Evet.
NFS'yi Windows'ta nasıl kullanabilirim?
- Windows NFS dosya sunucusu kullanarak hem SMB hem de NFS protokollerini kullanarak aynı dosya paylaşımına erişim sağlayın.
- NFS protokolünü kullanan Windows olmayan istemcilerin erişebileceği NFS dosya paylaşımları sağlamak için Windows olmayan bir işletim sistemi dağıtın.
- Uygulamaların bir işletim sisteminden diğerine taşınmasını sağlamak için verileri hem SMB hem de NFS protokolleri kullanılarak erişilebilen dosya paylaşımlarında depolayın.
NFS sürüm 4.1'de hangi iyileştirmeler yer alıyor?
- Uzaktan Prosedür Çağrısı (RPC)/Harici Veri Gösterimi (XDR) aktarım altyapısı daha iyi destek ve daha iyi ölçeklenebilirlik sağlar
- RPC bağlantı noktası çoklayıcı özelliği
- Otomatik olarak ayarlanmış önbellekler ve iş parçacığı havuzları
- Yeni Kerberos gizlilik uygulaması ve kimlik doğrulama seçenekleri
Tüm ayrıntılar için tüm NFS sürümlerini açıklayan Microsoft sayfasını ziyaret edin.
NFS Sunucusu rol hizmetini nasıl eklerim?
Sunucu Yöneticisi veya Windows Yönetici Merkezi'nde “Rol Ekle” ve “Özellik Sihirbazı”nı kullanın.
NFS Sunucusu hangi Windows komut satırı yönetim araçlarını içerir?
- Mount, Windows istemcilerinde yerel bir sürücüyle eşlenen bir NFS bağlantısı sağlar
- Nfsadmin NFS Sunucusu ve NFS İstemcisi bileşenlerinin yapılandırma ayarlarını yönetir.
- Nfsshare, NFS Sunucusu aracılığıyla paylaşılan klasörler için NFS paylaşım ayarlarını yapar.
- Nfsstat NFS Sunucusu tarafından alınan çağrılara ilişkin istatistikleri görüntüler veya sıfırlar.
- Showmount, NFS Sunucusu tarafından dışa aktarılan dosya sistemlerini listeler.
NFS'ye bağlanan sürücülerin bağlantısı Umount kullanılarak çıkarılır.

