Bila seluruh mesin di jaringan memakai Linux, protokol berbagi file yang paling ramping adalah NFS — Network File System. Berbeda dengan Samba yang meniru protokol Windows, NFS lahir di dunia Unix: implementasi server dan klien-nya tinggal di dalam kernel Linux, sehingga share terasa hampir seperti direktori lokal. Pada Chapter ini kita bedah format file /etc/exports yang menentukan direktori mana dibagikan kepada siapa dengan opsi apa, cara menyegarkan dan memasang share, serta jebakan keamanan yang paling sering menipu admin baru: root_squash. Paket NFS tidak terpasang di mesin latihan, jadi file konfigurasi kita dalami lewat fixture dan skrip pemeriksa kecil berbasis awk.

Cara Kerja NFS Singkat #

Server NFS menerima permintaan file di TCP/UDP port 2049. Yang membuatnya cepat adalah pembagian kerjanya: klien-kernel yang meminta blok file, server-kernel yang membacanya dari disk — tidak ada proses perantara di tiap request. Konsekuensinya, autentikasi NFS klasik memercayai mesin, bukan manusia: server melihat alamat IP klien dan nomor uid/gid yang diklaim proses di klien. Karena itu NFS pantas dipakai di jaringan lokal yang kita kendalikan, bukan di jaringan publik.

Dua versi yang masih bertemu di lapangan punya wajah berbeda:

AspekNFSv3NFSv4
Port yang dipakai2049 plus portmapper 111 dan beberapa port acaksatu port 2049 saja
Firewallrepot: banyak port harus dibukasederhana: satu port
File lockingproses terpisah (rpc.lockd)bagian dari protokol
Autentikasi tambahantidak adaKerberos opsional
Statestateless: server reboot tak memberi tahu klienstateful: server dan klien saling menegur

Versi 4 adalah pilihan bawaan mount modern dan satu-satunya yang layak dipakai lintas jaringan; versi 3 masih muncul di perangkat lama seperti NAS lawas.

Format File /etc/exports #

Satu file kecil mengatur seluruh share: /etc/exports. Setiap baris berisi direktori yang dibagikan, diikuti satu atau lebih klien beserta opsinya dalam kurung. File fixture berikut tersedia di bundle materi ini sebagai exports:

bash
cat exports

Output yang Dihasilkan:

text
# /etc/exports — direktori yang dibagikan lewat NFS
# Format: <direktori> <klien>(<opsi>)

/srv/share-file   192.0.2.0/24(rw,sync,no_subtree_check)
/srv/arsip        192.0.2.0/24(ro,sync,no_subtree_check)
/srv/proyek       192.0.2.55(rw,sync,no_root_squash)

Mari kita bedah baris per baris:

  1. # /etc/exports ...: baris komentar — semua yang diawali # diabaikan server, dipakai untuk menjelaskan isi kepada manusia.
  2. /srv/share-file 192.0.2.0/24(rw,sync,no_subtree_check): direktori kerja tim dibagikan ke seluruh subnet kantor; rw membuka baca-tulis.
  3. /srv/arsip 192.0.2.0/24(ro,sync,no_subtree_check): arsip dibagikan ro — hanya-baca — sehingga kesalahan di klien tidak bisa merusak dokumen lama.
  4. /srv/proyek 192.0.2.55(rw,sync,no_root_squash): share khusus untuk satu mesin, 192.0.2.55 milik laptop-budi; opsi no_root_squash-nya kita bedah setelah ini.

Tiga opsi di dalam kurung adalah kosakata wajib admin NFS. rw dan ro menentukan arah tulis. sync memaksa server menuliskan perubahan ke disk sebelum menjawab sukses ke klien — lebih lambat, tetapi data tidak menguap saat server mati mendadak; async kebalikannya. no_subtree_check mematikan pemeriksaan apakah file yang dibuka masih berada di bawah direktori yang diekspor — pemeriksaan itu sering salah kirim peringatan dan lambat, jadi hampir semua panduan modern menuliskan opsi ini.

Opsi terakhir adalah yang paling menentukan keamanan:

Menyegarkan dan Melihat Ekspor #

Setelah /etc/exports berubah, server tidak membacanya ulang sendiri. Perintah sudo exportfs -ra menyegarkan seluruh entri (-r re-ekspor, -a semua), dan exportfs -v menampilkan tabel ekspor aktif beserta opsinya. Dari sisi klien, showmount -e server-kantor memperlihatkan share yang ditawarkan server — cara cepat memastikan klien dan server saling melihat sebelum memasang.

Memasang Share di Klien #

Pemasangan share NFS memakai mount dengan tipe nfs, ditulis server:direktori:

bash
sudo mkdir -p /mnt/share-file
sudo mount -t nfs server-kantor:/srv/share-file /mnt/share-file
ls /mnt/share-file

Untuk pemasangan otomatis saat boot, /etc/fstab diberi baris berikut:

text
server-kantor:/srv/share-file  /mnt/share-file  nfs  defaults,_netdev  0  0

Opsi _netdev menandai bahwa sumber ini menunggu jaringan siap — tanpa itu, boot bisa berhenti lama menunggu share yang belum menjawab. Materi lengkap tentang cara kerja /etc/fstab sudah kita bahas pada Chapter fstab . Opsi defaults,_netdev juga biasa ditambah soft,timeo=50 untuk share yang tidak boleh menggantung program saat server tiba-tiba mati: klien menyerah setelah beberapa percobaan alih-alih menunggu tanpa batas.

Audit Cepat Format exports dengan awk #

Sekali pandang, baris /etc/exports memang mudah dibaca manusia — tetapi manusia lelah, dan salah satu entri lupa menulis opsi. Skrip kecil berikut memakai awk untuk memeriksa hal yang paling mungkin salah: kolom kedua tiap baris aktif harus memuat tanda kurung pembuka opsi:

bash
echo '== direktori yang diekspor =='
awk '!/^[[:space:]]*#/ && NF {print $1}' exports
echo '== entri tanpa opsi (harus kosong) =='
awk '!/^[[:space:]]*#/ && NF && $2 !~ /\(/ {print $1; salah=1} END {if (salah != 1) print "OK: semua entri punya opsi"}' exports
echo '== entri tanpa root_squash (perlu ditinjau) =='
awk '!/^[[:space:]]*#/ && NF && $2 ~ /no_root_squash/ {print $1}' exports

Output yang Dihasilkan:

text
== direktori yang diekspor ==
/srv/share-file
/srv/arsip
/srv/proyek
== entri tanpa opsi (harus kosong) ==
OK: semua entri punya opsi
== entri tanpa root_squash (perlu ditinjau) ==
/srv/proyek

Tiga bagian di atas menjawab tiga pertanyaan audit: direktori apa saja yang dibagikan, apakah ada entri yang lupa menulis opsi klien, dan entri mana yang mematikan root_squash — daftar yang layak diperiksa ulang tiap ada perubahan. Pola awk-nya sendiri sudah kita kenal dari Chapter awk : lewati komentar dan baris kosong (!/^[[:space:]]*#/ && NF), lalu uji kolom kedua dengan pola.

File kini mengalir antar mesin Linux dengan satu file konfigurasi dan satu perintah mount. Satu ketidaknyamanan tersisa: kita masih menghafal alamat 192.0.2.x setiap kali mengetik server-kantor. Pekerjaan menerjemahkan nama ke alamat itu layak diurus server sendiri di jaringan kita — BIND dan dnsmasq, materi Chapter DNS Server .

Referensi lanjut: halaman manual exports(5) untuk daftar lengkap opsi per klien, serta panduan NFS di wiki Arch untuk contoh server dan klien.