Linux'ta NFS Sunucusu Kurulumu: Dizini NFS ile Paylaşma
Seviye: İleri
Tahmini süre: ~30 dakika
Amaç: Rutin görevlerin otomasyonunu ve proaktif güvenlik denetimini kolaylaştırmak için, bir dizini birden fazla istemciyle paylaşacak şekilde Linux üzerinde bir NFS sunucusu yapılandırmak.
Giriş
Bir sunucu filosunda paylaşımlı depolamayı yönetmek, yüksek çalışma süresi gereksinimleri olan üretim ortamlarını sürdürmenin temel şartlarından biridir. NFS (Network File System) protokolü, bir sistemin ağ üzerinden NFS ile dizin paylaşmasına ve bir NAS (Network Attached Storage) gibi çalışmasına olanak tanır. Linux üzerinde bir NFS sunucusu kurarak birden fazla NFS istemcisine aynı anda merkezi dosya erişimi sağlayabilirsiniz. Bu eğitim, varsayılan olarak NFSv4.2 kullanarak Linux üzerinde NFS sunucusunun nasıl verimli biçimde kurulacağını anlatır.
Bu kılavuz sec=sys (AUTH_SYS) güvenlik türünü kullanır. Bu modda sunucu, kullanıcı kimliği (UID/GID) konusunda istemciye herhangi bir kriptografik kimlik doğrulaması yapmadan doğrudan güvenir. Erişim denetimi yalnızca /etc/exports dosyasındaki IP adresi filtrelemesine ve dosyalardaki standart UNIX izinlerine dayanır. Bu yapılandırma, güvenilir iç ağlar (örneğin bir Proxmox sanal ortamı) için mükemmeldir, ancak güvenilmeyen ağlar için önerilmez. Ek güvenlik için Kerberos kimlik doğrulamasını (örn. sec=krb5, sec=krb5i veya sec=krb5p) uygulamayı düşünün.
Ön koşullar
Başlamadan önce aşağıdaki koşulların karşılandığından emin olun:
- İşletim sistemi: Ubuntu 22.04/24.04 LTS, Debian 12/13 veya CentOS/RHEL 9/AlmaLinux 10
- Gerekli yazılım: Ubuntu/Debian için
nfs-kernel-server(2.6+) veya CentOS/RHEL/AlmaLinux içinnfs-utils(2.x+) - Erişim: tüm makinelerde
sudoveyarooterişimi - Ağ: sunucuların özel bir ağ üzerinden birbiriyle iletişim kurabilmesi gerekir.
- Gerekli bilgi: Linux komut satırını rahatça kullanabilme.
Terminoloji
Devam etmeden önce aşağıdaki temel kavramlara aşina olun:
- NFS (Network File System): Kullanıcıların dosyalara ağ üzerinden, sanki yerel depolamadaymış gibi erişmesini sağlayan protokol.
- NFS Sunucusu: Dosyaları barındıran ve ağ üzerinden kullanıma sunan merkezi makine.
- NFS İstemcisi: Paylaşılan dosyalara erişmek için sunucuya bağlanan uzak makine.
- Paylaşılan Dizin (Shared Directory): Sunucuda, istemcilere sunulacak yerel klasör.
- Dışa aktarma (Export): Yerel bir dizini ağ üzerinden istemcilerin kullanımına açma işlemi.
- /etc/exports: NFS arka plan programının (daemon) hangi dizinlerin dışa aktarılacağını ve erişim kurallarını belirlemek için kullandığı ana yapılandırma dosyası.
- Bağlama (Mounting): Uzak bir ağ paylaşımını yerel dizin yapısına ekleme işlemi.
- Bağlama Noktası (Mount Point): İstemcide, uzak dosya sisteminin bağlandığı yerel dizin.
- nfs-utils: NFS istemcisi ve sunucusu için gerekli yardımcı programları ve arka plan programlarını içeren yazılım paketi.
- RPC (Remote Procedure Call): Bir programın, başka bir bilgisayardaki programdan hizmet istemek için kullanabileceği protokol.
- Portmapper / rpcbind: RPC program numaralarını ağ port numaralarına eşleyen ve NFS'in bağlantı müzakeresi için gerektirdiği hizmet.
- İzinler (Permissions): Kimin dosyaları okuyabileceğini, yazabileceğini veya çalıştırabileceğini belirleyen erişim hakları.
- Salt Okunur Erişim (RO): İstemcilerin dosyaları görüntülemesine ancak değiştirmesine izin veren izin durumu.
- Okuma-Yazma Erişimi (RW): İstemcilerin paylaşılan dosyaları değiştirmesine izin veren izin durumu.
- root_squash: Uzak root kullanıcısından gelen istekleri ayrıcalıksız bir kullanıcıya (nobody) eşleyerek yetkisiz root erişimini önleyen güvenlik özelliği.
- Güvenlik duvarı (Firewall): Gelen ve giden ağ trafiğini izleyen ve denetleyen ağ güvenlik sistemi.
- Linux Dosya Sistemi: Linux'un dosyaları diskte depolamak ve düzenlemek için kullandığı yapılandırılmış yöntem.
- Ana bilgisayar adı (Hostname): Bir bilgisayar ağına bağlı cihaza atanan, insan tarafından okunabilir etiket.
- IP Adresi: Bir ağa bağlı her cihaza atanan benzersiz sayısal tanımlayıcı.
- Automount (otomatik bağlama): Dosya sistemlerinin açılışta otomatik olarak bağlanması uygulaması.
- NAS (Network Attached Storage): Verilere ağ üzerinden erişilmesini sağlayan, dosya düzeyinde bir depolama mimarisi.
Adım 1: Gerekli paketleri yükleyin
Önce sunucuya ve istemcilere gerekli yazılımı yükleyin. nfs-utils paketi, dosya sistemini yönetmek için gerekli arka plan programlarını ve araçları sağlar. Modern kurulumlar varsayılan olarak durum bilgili (stateful) olan ve güvenlik duvarı kurallarını basitleştiren NFSv4.2 kullanmalıdır.
NFS sunucusunda (Debian/Ubuntu):
sudo apt update sudo apt install nfs-kernel-server
NFS sunucusunda (CentOS/RHEL/AlmaLinux):
sudo dnf install nfs-utils sudo systemctl enable --now rpcbind nfs-server
Yalnızca NFSv4 kullanılan bir kurulumda, NFS bağlamasının kendisi için rpcbind hizmeti teknik olarak gerekli değildir. Ancak dışa aktarımları keşfetmek için showmount komutunu (Adım 5'te gösterildiği gibi) kullanacaksanız veya eski NFSv3 istemcilerini desteklemeniz gerekiyorsa gereklidir.
NFS istemcisinde (Debian/Ubuntu):
sudo apt update sudo apt install nfs-common
NFS istemcisinde (CentOS/RHEL/AlmaLinux):
sudo dnf install nfs-utils
Kurulumun başarıyla tamamlandığını görmelisiniz. Gerekli RPC ve NFS hizmetleri artık yüklü ve çalışıyor durumdadır.
Adım 2: Paylaşılan dizini oluşturun ve NFS izinlerini ayarlayın
Sunucuda dışa aktarmak istediğiniz dizini oluşturun:
sudo mkdir -p /mnt/nfs_share
İstemcilerin dosyalara erişebilmesi için uygun NFS izinlerini ayarlayın. Bu eğitimde sahipliği ayrıcalıksız, özel hizmet kullanıcısına atayacak ve uygun grup izinlerini vereceğiz.
Debian/Ubuntu:
sudo chown nobody:nogroup /mnt/nfs_share sudo chmod 2775 /mnt/nfs_share
CentOS/RHEL/AlmaLinux:
sudo chown nobody:nobody /mnt/nfs_share sudo chmod 2775 /mnt/nfs_share
Bu yapılandırma yerel Linux izin modelini atlamaz; böylece NFS erişim denetimi tek güvenlik katmanınız olmaz. 2775 izni, en az ayrıcalık ilkesini ihlal etmeden grup işbirliğini güvenli biçimde mümkün kılar.
Adım 3: Linux'ta NFS sunucusunu yapılandırın
Dışa aktarma kurallarını tanımlamak için sunucudaki /etc/exports dosyasını düzenlemeniz gerekir.
Dosyayı açın:
sudo nano /etc/exports
Belirli bir istemci alt ağına erişim vermek için aşağıdaki satırı ekleyin (örn. <CLIENT_SUBNET>):
/mnt/nfs_share <CLIENT_SUBNET>(rw,sync,no_subtree_check,root_squash)
Bu, sunucuyu dizini aşağıdaki seçeneklerle dışa aktaracak şekilde yapılandırır:
rw: Okuma-Yazma Erişimi (RW) verir. Salt Okunur Erişim (RO) içinrokullanın.sync: İstemciye yanıt vermeden önce değişikliklerin diske yazılmasını zorunlu kılar.no_subtree_check: Alt ağaç (subtree) denetimini devre dışı bırakır ve güvenilirliği artırır.root_squash: Uzakrootkullanıcısından gelen istekleri açıkça ayrıcalıksız bir kullanıcıya (nobody) eşler. Bu varsayılan davranıştır, ancak denetim amacıyla her zaman açıkça belirtilmelidir.no_root_squashseçeneğini yalnızca sıkı denetlenen ortamlarda kullanın.
Aynı satıra boşlukla ayrılmış daha fazla IP adresi veya alt ağ ekleyerek birden fazla istemci belirtebilir ve birden çok makineye erişim sağlayabilirsiniz.
Dışa aktarma yapılandırmasını uygulayın:
Debian/Ubuntu:
sudo exportfs -a sudo systemctl restart nfs-kernel-server
CentOS/RHEL/AlmaLinux:
sudo exportfs -a sudo systemctl restart nfs-server
Sunucu artık dizini ağa aktif olarak dışa aktarıyor.
Adım 4: Güvenlik duvarını yapılandırın
İstemci bağlantılarına izin vermek için sunucudaki güvenlik duvarında NFS trafiğine izin vermelisiniz.
UFW ile (Debian/Ubuntu):
Yeni bir Ubuntu kurulumunda UFW varsayılan olarak etkin değildir. Temiz bir Debian 13 sisteminde ise kurulu bile olmayabilir. UFW kullanmayı düşünüyorsanız, kuralları eklemeden önce kurulu olduğundan (sudo apt install ufw) ve açıkça etkinleştirildiğinden emin olun:
sudo ufw enable sudo ufw allow from <CLIENT_SUBNET> to any port nfs
Firewalld ile (CentOS/RHEL/AlmaLinux):
sudo firewall-cmd --permanent --zone=public --add-service=nfs sudo firewall-cmd --permanent --zone=public --add-service=rpc-bind sudo firewall-cmd --permanent --zone=public --add-service=mountd sudo firewall-cmd --reload
AlmaLinux/RHEL (SELinux): Temiz bir AlmaLinux kurulumunda SELinux Enforcing modundadır. Bu kılavuzda kullanılan varsayılan /mnt/nfs_share yolu için mevcut mnt_t bağlamı nfsd arka plan programıyla uyumludur. Ancak standart dışı yolları (örn. /srv, /data veya /home/...) dışa aktarmayı planlıyorsanız, SELinux'u uygun şekilde yapılandırmadıkça NFS bu yollara yazamaz. Genel mantıksal değeri değiştirebilir (sudo setsebool -P nfs_export_all_rw 1) veya semanage ile doğru fcontext değerini ayarlayabilirsiniz.
İzin verilen alt ağdaki istemciler artık NFS hizmetlerine erişebilir.
Adım 5: showmount komutuyla dışa aktarımı doğrulayın
Güvenlik uyumluluğunu sağlamak için sunucuda etkin dışa aktarımları ve dahili denetim durumunu proaktif olarak doğrulayın. NFS arka plan programının uyguladığı tam dışa aktarma seçeneklerini kontrol etmek için aşağıdaki komutu çalıştırın:
sudo cat /var/lib/nfs/etab
Alternatif olarak, ayrıntılı dışa aktarma listesini görmek için sudo exportfs -v komutunu kullanabilirsiniz.
Ardından istemci makineden, dışa aktarımın ağ üzerinden görünür olduğunu doğrulamak için showmount komutunu kullanın. <SERVER_IP> ifadesini NFS sunucunuzun gerçek IP adresiyle değiştirin.
showmount, sunucuda 111 numaralı portun (rpcbind) açık olmasını gerektirir. Yalnızca NFSv4 kullanan bir kurulumunuz varsa ve bu portu açmadıysanız bu adımı atlayın: dışa aktarımları sunucuda sudo exportfs -v ile doğrulayın ve istemciden erişilebilirliği Adım 6'daki bağlama işlemiyle test edin.
showmount -e <SERVER_IP>
Beklenen çıktı:
Export list for <SERVER_IP>: /mnt/nfs_share <CLIENT_SUBNET>
Dışa aktarım listede görünüyorsa sunucu yapılandırması doğrudur ve istemciden erişilebilir durumdadır.
Adım 6: İstemcide NFS dosya sistemini bağlayın
Paylaşımı kullanmak için istemcide yerel bir bağlama noktasına NFS dosya sistemini bağlamanız gerekir.
Bağlama noktasını oluşturun:
sudo mkdir -p /mnt/client_share
Dizini bağlayın:
sudo mount -t nfs -o vers=4.2 <SERVER_IP>:/mnt/nfs_share /mnt/client_share
Paylaşım artık bağlandı. Bağlanan ağ sürücüsünü görmek için df -h komutunu çalıştırarak doğrulayabilirsiniz. vers=4.2 belirtmek, istemcinin sessizce NFSv3 veya NFSv4.0'a düşmek yerine en güncel protokol sürümünü açıkça kullanmasını sağlar.
İstemcinin açılışta NFS dosya sistemini otomatik olarak bağlamasını sağlamak için /etc/fstab dosyasına bir giriş ekleyerek statik bağlama yapılandırabilirsiniz. Bunun statik bir bağlama olduğunu unutmayın; gerçek, dinamik Automount yapılandırmaları üretimde genellikle autofs (/etc/auto.master) ile yönetilir.
/etc/fstab dosyasını açın:
sudo nano /etc/fstab
Aşağıdaki satırı ekleyin:
<SERVER_IP>:/mnt/nfs_share /mnt/client_share nfs auto,nofail,noatime,_netdev,hard,vers=4.2,timeo=600 0 0
Bu, sunucuya geçici olarak ulaşılamadığında istemcinin önyükleme sürecini kilitlemesini önler.
Doğrulama
NFS izinlerinin ve ağ ayarlarının doğru olduğunu onaylamak için istemciden bir okuma/yazma testi çalıştırın:
touch /mnt/client_share/test_file.txt ls -l /mnt/client_share/
Beklenen çıktı:
-rw-r--r-- 1 nobody nogroup 0 May 24 12:00 test_file.txt
İstemcinin işletim sistemine bağlı olarak dosya sahibi nobody nogroup (Debian/Ubuntu) veya nobody nobody (RHEL/AlmaLinux) olarak görüntülenir. İstekler ayrıcalıksız bir kullanıcıya doğru şekilde eşlendiğinde bu, NFSv4 kimlik eşlemesinin (idmapping) beklenen davranışıdır. Uyuşmazlıklarla karşılaşırsanız, /etc/idmapd.conf dosyasındaki Domain parametresinin hem sunucuda hem istemcide aynı olduğunu doğrulayın.
Dosya başarıyla oluşturulduysa istemcileriniz sunucuyla iletişim kurabiliyor ve amaçlandığı gibi veri yazabiliyor demektir.
Değişiklikleri geri alma
İstemcide paylaşımın bağlantısını kaldırmak için:
sudo umount /mnt/client_share
Eklediyseniz, istemcideki /etc/fstab dosyasından ilgili girişi silin.
Sunucuda dizin paylaşımını durdurmak için ilgili satırı /etc/exports dosyasından silin ve değişiklikleri uygulayın:
Debian/Ubuntu:
sudo exportfs -a sudo systemctl restart nfs-kernel-server
CentOS/RHEL/AlmaLinux:
sudo exportfs -a sudo systemctl restart nfs-server
Yüklenen paketleri tamamen kaldırmak için:
Debian/Ubuntu:
sudo apt remove nfs-kernel-server nfs-common
CentOS/RHEL/AlmaLinux:
sudo dnf remove nfs-utils
Bu işlem, makinelerinizdeki NFS işlevselliğini tamamen devre dışı bırakacaktır.
Sonuç
Linux üzerinde NFS sunucusunu nasıl kuracağınızı başarıyla öğrendiniz. Ayarları doğru yapılandırarak birden fazla NFS istemcisiyle güvenli biçimde NFS ile dizin paylaşabilirsiniz. Bu kurulum, rutin yönetim görevlerini otomatikleştirmek ve proaktif güvenlik denetimleri için günlükleri merkezileştirmek açısından güvenilir bir temel oluşturur.
Doküman Sürümü: 1.0
Son Güncelleme: Mayıs 2026
Sorumlu: Teknik Dokümantasyon Ekibi