۱. سرور
sudo dnf install -y nfs-utils
sudo mkdir -p /srv/nfs/shared
sudo chown nobody:nobody /srv/nfs/sharedفقط NFSv4 فعال باشد. این نسخه فقط از پورت 2049 استفاده میکند و به rpcbind و mountd نیازی ندارد. در /etc/nfs.conf:
[nfsd]
vers3=n/etc/exports:
/srv/nfs/shared 192.168.10.0/24(rw,sync,root_squash,no_subtree_check)root_squash: کاربر root کلاینت روی سرور بهnobodyتبدیل میشود. این گزینه را حذف نکنید، مگر برای کاربرد خاص مثل datastore ESXi.sync: نوشتن پیش از تأیید روی دیسک انجام میشود. کندتر است، ولی با قطع برق داده از دست نمیرود.
sudo systemctl enable --now nfs-server
sudo systemctl mask --now rpc-statd.service rpcbind.service rpcbind.socket
sudo exportfs -rav
sudo firewall-cmd --permanent --add-service=nfs && sudo firewall-cmd --reloadSELinux بهطور پیشفرض export را مجاز میداند (boolean nfs_export_all_rw). بررسی:
getsebool nfs_export_all_rw nfs_export_all_ro۲. کلاینت
sudo dnf install -y nfs-utils # Debian/Ubuntu: apt install nfs-common
sudo mkdir -p /mnt/shared
sudo mount -t nfs4 192.168.10.45:/srv/nfs/shared /mnt/shared
df -h /mnt/sharedmount دائمی در /etc/fstab:
192.168.10.45:/srv/nfs/shared /mnt/shared nfs4 _netdev,noatime,nofail 0 0sudo systemctl daemon-reload && sudo mount -a۳. مالکیت فایلها
NFS دسترسیها را با شمارهی کاربر (UID) کنترل میکند، نه با نام. اگر کاربر ali روی سرور UID 1001 و روی کلاینت UID 1002 دارد، فایلهای هم را با مالکیت اشتباه میبینند. یا UIDها را در همهی سرورها یکسان کنید، یا کاربران را مرکزی مدیریت کنید (FreeIPA یا AD).
۴. عیبیابی
sudo exportfs -v
cat /proc/fs/nfsd/versions # +4.2 +4.1 ... -3 means v3 disabled
nfsstat -m # on the client