rpc.mountd
، وrpc.statd
وlockd
. لكن هذه الخدمات تستخدم منافذ عشوائية (يعينها portmapper) افتراضياً، وهذا يجعل ترشيح حركة الشبكة التي تستهدف هذه الخدمات أصعب. لقد عثر مديرو النظم في شركة فلكوت على حل للالتفاف حول هذه المشكلة، كما سنشرح فيما يلي.
/etc/init.d/nfs-kernel-server
و/etc/init.d/nfs-common
على الترتيب. وهما يقدمان خيارات إعداد لتثبيت المنافذ؛ الملفان اللذان يجب تعديلها حتى تُستخدَم هذه الخيارات دوماً هما /etc/default/nfs-kernel-server
و/etc/default/nfs-common
.
مثال 11.22. الملف /etc/default/nfs-kernel-server
# Number of servers to start up RPCNFSDCOUNT=8 # Runtime priority of server (see nice(1)) RPCNFSDPRIORITY=0 # Options for rpc.mountd. # If you have a port-based firewall, you might want to set up # a fixed port here using the --port option. For more information, # see rpc.mountd(8) or http://wiki.debian.org/SecuringNFS # To disable NFSv4 on the server, specify '--no-nfs-version 4' here RPCMOUNTDOPTS="--manage-gids --port 2048" # Do you want to start the svcgssd daemon? It is only required for Kerberos # exports. Valid alternatives are "yes" and "no"; the default is "no". NEED_SVCGSSD= # Options for rpc.svcgssd. RPCSVCGSSDOPTS=
مثال 11.23. الملف /etc/default/nfs-common
# If you do not set values for the NEED_ options, they will be attempted # autodetected; this should be sufficient for most people. Valid alternatives # for the NEED_ options are "yes" and "no". # Do you want to start the statd daemon? It is not needed for NFSv4. NEED_STATD= # Options for rpc.statd. # Should rpc.statd listen on a specific port? This is especially useful # when you have a port-based firewall. To use a fixed port, set this # this variable to a statd argument like: "--port 4000 --outgoing-port 4001". # For more information, see rpc.statd(8) or http://wiki.debian.org/SecuringNFS STATDOPTS="--port 2046 --outgoing-port 2047" # Do you want to start the idmapd daemon? It is only needed for NFSv4. NEED_IDMAPD= # Do you want to start the gssd daemon? It is required for Kerberos mounts. NEED_GSSD=
rpc.mountd
المنفذ 2048؛ أما rpc.statd
فينصت للمنفذ 2046 ويستخدم المنفذ 2047 للاتصالات الصادرة.
lockd
؛ هذه الميزة مبنية كوحدة في نَوَى دبيان. تملك الوحدة خيارين يسمحان باختيار المنفذ نفسه دوماً، nlm_udpport
وnlm_tcpport
. حتى تُستخدَم هذه الخيارات آلياً، يجب إضافة ملف بالاسم /etc/modprobe.d/lockd
يشبه التالي:
/etc/exports
،المجلدات التي سيوفرها على الشبكة (المجلدات المُصدّرة exported). بالنسبة لكل مشاركة NFS، تمنح صلاحيات الوصول فقط للأجهزة المذكورة بجوارها. يمكن التحكم بالوصول بدقة أكبر باستخدام بضعة خيارات. صيغة الملف بسيطة جداً:
/directory/to/share machine1(option1,option2,...) machine2(...) ...
*.falcot.com
أو مجال من عناوين IP مثل 192.168.0.0/255.255.255.0
أو 192.168.0.0/24
.
ro
). يمنح الخيار rw
صلاحيات القراءة والكتابة. يتصل عملاء NFS نموذجياً من منفذ مخصص للمستخدم الجذر (أي أنه أقل من 1024)؛ يمكن رفع هذا القيد باستخدام الخيار insecure
(الخيار secure
ضمني، لكن يمكن كتابته صراحة للتوضيح إذا اقتضت الحاجة).
sync
)؛ لكن يمكن تعطيل هذا بالخيار async
. تزيد عمليات الكتابة غير المتزامنة الأداء قليلاً، لكنها تخفض الموثوقية بسبب احتمال خسارة البيانات إذا انهار المخدم في الفترة ما بين إرسال تأكيد الكتابة وبين إنهاء الكتابة الفعلية على القرص. بما أن القيمة الافتراضية تغيرت مؤخراً (مقارنة بالقيمة التاريخية في NFS)، يُفضّل استخدام خيار صريح.
nobody
، وذلك في سبيل عدم منح صلاحيات الجذر على نظام الملفات لأي عميل NFS. هذا السلوك يوافق الخيار root_squash
، وهو مُفعّل افتراضياً. أما الخيار no_root_squash
، الذي يُعطّل هذا السلوك، فهو خطر ويجب استخدامه فقط في البيئات المسيطر عليها. يسمح الخياران anonuid=uid
وanongid=gid
بتحديد مستخدم زائف آخر لاستخدامه بدلاً من UID/GID 65534 (التي توافق المستخدم nobody
والمجموعة nogroup
).
mount
والملف /etc/fstab
.
مثال 11.25. الربط اليدوي باستخدام الأمر mount
#
mount -t nfs -o rw,nosuid arrakis.internal.falcot.com:/srv/shared /shared
مثال 11.26. مدخلة NFS في الملف /etc/fstab
arrakis.internal.falcot.com:/srv/shared /shared nfs rw,nosuid 0 0
/srv/shared/
من المخدم arrakis
مع المجلد المحلي /shared/
عند إقلاع النظام. صلاحيات الكتابة والقراءة مطلوبة (ولذلك استخدم الخيار rw
). أما الخيار nosuid
فهو للحماية حيث يزيل بتات setuid
أو setgid
من البرامج المخزّنة على المشاركة. إذا كان القصد من مشاركة NFS تخزين المستندات فقط، فهناك خيار آخر ننصح به هو noexec
، الذي يمنع تنفيذ البرامج المُخزَّنة على المشاركة.