Memahami NFS4 (server Linux)

26

Saya agak terganggu oleh NFS4 di Linux. Beberapa informasi 'di luar sana' tampaknya bertentangan dengan informasi lain, dan informasi lain tampaknya sulit ditemukan. Jadi, inilah beberapa hal yang menarik perhatian saya, semoga seseorang di luar sana dapat menjelaskan hal ini.

Pertanyaan ini berfokus secara eksklusif pada NFS4 tanpa Kerberos dll.

1. Ekspor

Ada informasi ambigu dalam halaman exportsmanual tentang struktur / etc / ekspor.

Mengutip dari exports(5):

Selain itu, setiap baris mungkin memiliki satu atau lebih spesifikasi untuk opsi default setelah nama jalur, dalam bentuk tanda hubung ("-") diikuti oleh daftar opsi.

Daftar opsi digunakan untuk semua ekspor berikutnya pada baris itu saja.

Apa yang dimaksud dengan "ekspor berikutnya hanya pada garis itu"?

1.2 fsid=0tidak diperlukan lagi?

Saya sedang mencari fsid ketika saya menemukan komentar di daftar linux-nfs yang menyatakan fsid = 0 tidak diperlukan lagi. Sekarang saya hanya bingung, apakah saya perlu dengan nfs4 atau tidak ?!

2. Direktori yang tidak diekspor masih dapat di-mount

Katakanlah saya memiliki pohon berikut:

/exp
/exp/users
/exp/distr
/exp/distr/archlinux
/exp/distr/debian

Dan saya memiliki entri berikut dalam entri fstab ini:

/dev/disk/by-label/users  /mnt/users  ext4  defaults  0  0
/dev/disk/by-label/distr  /mnt/distr  ext4  defaults  0  0
/mnt/users                /exp/users  none  bind      0  0
/mnt/distr                /exp/distr  none  bind      0  0

Dan ekspor saya persis seperti ini:

/exp       192.168.1.0/24(fsid=0,rw,async,no_subtree_check,no_root_squash)
/exp/distr 192.168.1.0/24(rw,async,no_subtree_check,no_root_squash)

Dan exportfs -arvmenunjukkan:

exporting 192.168.1.0/24:/exp/distr
exporting 192.168.1.0/24:/exp

Lalu mengapa saya bisa melakukan ini dan tidak mendapatkan kesalahan pada klien:

mount -t nfs4 server:/exp/users /tmp/test

Meskipun /exp/userstidak diekspor? Saya tidak mengekspor direktori ini, dan sementara saya tidak melihat konten /dev/disk/by-label/userskecuali saya tentukan crossmnt, saya masih bisa menulis ke direktori. Semua yang saya tulis di sana pergi ke direktori yang mendasarinya /exp/usersyang dapat dilihat ketika saya umount /exp/users; ls /exp/users..

3. Kasus aneh showmount -d server

Seperti yang dinyatakan oleh rpc.mountd(8), perintah ini harus menampilkan direktori yang saat ini dipasang oleh klien, atau basi entri /var/lib/nfs/rmtab, seperti yang dapat dibaca:

Daemon rpc.mountd mendaftarkan setiap permintaan MNT yang berhasil dengan menambahkan entri ke file / var / lib / nfs / rmtab. Ketika menerima permintaan UMNT dari klien NFS, rpc.mountd hanya menghapus entri yang cocok dari / var / lib / nfs / rmtab, selama daftar kontrol akses untuk ekspor memungkinkan pengirim untuk mengakses ekspor.

(...)

Perhatikan, bagaimanapun, bahwa ada sedikit untuk menjamin bahwa isi / var / lib / nfs / rmtab akurat. Klien dapat terus mengakses ekspor bahkan setelah memohon UMNT. Jika klien reboot tanpa mengirim permintaan UMNT, entri basi tetap untuk klien di / var / lib / nfs / rmtab.

Setelah membaca ini saya pasti bertanya-tanya:

  1. Bukankah sangat tidak aman untuk hanya mengekspos informasi klien jenis ini;
  2. Admin server yang tidak sadar terikat untuk memiliki rmtab dengan banyak klien basi;
  3. Apakah ini alasan bahwa klien yang me-mount direktori nfs4 dengan mount -vbisa melihat output seperti "tidak ada yang dipasang" meskipun ada sesuatu yang dipasang?

Saya punya banyak pertanyaan lain tentang nfs4, tapi saya akan tetap pada saat ini .. :)

drum
sumber
Mungkin daftar ekspor tidak menyukai filesystem yang di-mount bind yang aneh. Coba dulu dengan / mnt / pengguna ...
jirib
Ini tentang nfs4, yang membutuhkan "sistem file semu" yaitu hierarki sistem file satu pohon. Bisakah Anda menjelaskan apa yang Anda maksud?
drum 17-17
Halaman wiki ini juga mengklaim bahwa fsid = 0 tidak diperlukan lagi: wiki.linux-nfs.org/wiki/index.php/… , tetapi 'man ekspor' masih menyiratkan itu diperlukan
SystemParadox
1
Saya ingin mengatakan saya mendukung pertanyaan ini. Seperti Anda, saya telah mengamati banyak hal yang sama, dan memiliki pertanyaan yang sama dan banyak lagi. Sepertinya berantakan.
Topan
1
Terlalu banyak pertanyaan dalam satu posting. @ Drumfire, bisakah Anda memecahnya menjadi posting-pertanyaan terpisah yang lebih sederhana?
Victor Yarema

Jawaban:

7

Pertanyaan hebat, menyoroti poin lebih besar dengan dokumentasi IMO. Berikut ini adalah upaya jawaban yang lengkap:

Apa yang dimaksud dengan "ekspor berikutnya hanya pada garis itu"?

Contoh yang mungkin paling mudah di sini:

/export/stuff -rw 10.0.0.54 10.0.0.55

setara dengan:

/export/stuff 10.0.0.54(rw) 10.0.0.55(rw)

Apakah fsid=0tidak diperlukan lagi?

Ini tergantung pada kasus penggunaan Anda. Sepertinya Anda mengekspor sistem file berbasis disk biasa dari sisa kueri Anda, dalam hal ini Anda sebaiknya menghapus fsid=0(yang dalam nfsv4 mengubah perilaku untuk merujuk sistem file root dari ekspor).

Untuk mengubah perilaku ini hapus opsi no_subtree_check


rmtabhal-hal terkait

  • Apakah penanganan rmtabrisiko keamanan?
    Saya kira itu tergantung pada kasus penggunaan Anda untuk menjawab bahwa, di jaringan saya itu tidak menyajikan kebocoran informasi yang kredibel tetapi saya dapat melihat kasus di mana itu bisa berpotensi.
  • Tidak rmtabakan penuh dengan entri basi?
    Berpotensi ya, sekali lagi tergantung pada skenario penggunaan Anda / use case.
  • Apakah ini sebabnya beberapa klien berjalan mount -vkeliru melihat "tidak ada yang dipasang"?
    Saya belum menemukan ini
CraigJPerry
sumber