پرش به محتوا

سرور NFS روی Rocky و AlmaLinux (فقط NFSv4)

یک پوشه را با NFS برای شبکه‌ی داخلی به اشتراک بگذارید، نسخه‌ی ۳ را برای سادگی فایروال خاموش کنید و آن را در کلاینت دائمی mount کنید.

Rocky Linux 10سطح: مقدماتیبرای: Rocky Linux 10، AlmaLinux 10، CentOS Stream 10، Rocky Linux 9، AlmaLinux 9به‌روزرسانی: ۱۷ آبان ۱۴۰۵

۱. سرور

bash
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:

ini
[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: نوشتن پیش از تأیید روی دیسک انجام می‌شود. کندتر است، ولی با قطع برق داده از دست نمی‌رود.
bash
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 --reload

SELinux به‌طور پیش‌فرض export را مجاز می‌داند (boolean nfs_export_all_rw). بررسی:

bash
getsebool nfs_export_all_rw nfs_export_all_ro

۲. کلاینت

bash
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/shared

mount دائمی در /etc/fstab:

192.168.10.45:/srv/nfs/shared  /mnt/shared  nfs4  _netdev,noatime,nofail  0 0
bash
sudo systemctl daemon-reload && sudo mount -a

۳. مالکیت فایل‌ها

NFS دسترسی‌ها را با شماره‌ی کاربر (UID) کنترل می‌کند، نه با نام. اگر کاربر ali روی سرور UID 1001 و روی کلاینت UID 1002 دارد، فایل‌های هم را با مالکیت اشتباه می‌بینند. یا UIDها را در همه‌ی سرورها یکسان کنید، یا کاربران را مرکزی مدیریت کنید (FreeIPA یا AD).

۴. عیب‌یابی

bash
sudo exportfs -v
cat /proc/fs/nfsd/versions        # +4.2 +4.1 ... -3 means v3 disabled
nfsstat -m                         # on the client