Apakah NFS? Sistem Fail Rangkaian. Protokol capaian rangkaian untuk sistem fail. Pemasangan Pelayan NFS

Protokol Pelayan Fail Rangkaian (NFS) ialah standard terbuka untuk menyediakan akses pengguna jauh kepada sistem fail. Sistem fail terpusat yang dibina di atasnya menjadikan tugasan seharian seperti sandaran atau imbasan virus lebih mudah, dan partition cakera yang disatukan lebih mudah untuk diselenggara berbanding kebanyakan yang lebih kecil, yang diedarkan.

Selain menyediakan storan berpusat, NFS telah terbukti sangat berguna untuk aplikasi lain, termasuk klien tanpa cakera dan nipis, pengelompokan rangkaian dan kolaborasi perisian tengah.

Pemahaman yang lebih baik tentang kedua-dua protokol itu sendiri dan butiran pelaksanaannya akan memudahkan untuk menangani masalah praktikal. Artikel ini didedikasikan untuk NFS dan terdiri daripada dua bahagian logik: pertama, ia menerangkan protokol itu sendiri dan matlamat yang ditetapkan semasa pembangunannya, dan kemudian pelaksanaan NFS dalam Solaris dan UNIX.

DI MANA SEMUANYA BERMULA...

Protokol NFS telah dibangunkan oleh Sun Microsystems dan muncul di Internet pada tahun 1989 sebagai RFC 1094 di bawah tajuk berikut: Network File System Protocol Specification (NFS). Menarik untuk diperhatikan bahawa strategi Novell pada masa itu bertujuan untuk meningkatkan lagi perkhidmatan fail. Sehingga baru-baru ini, sebelum pergerakan sumber terbuka bermula, Sun enggan berkongsi rahsia penyelesaian rangkaiannya, tetapi pada masa itu syarikat itu memahami kepentingan saling kendali dengan sistem lain.

RFC 1094 mengandungi dua spesifikasi asal. Pada masa penerbitannya, Sun telah membangunkan versi ketiga spesifikasi yang seterusnya, yang ditetapkan dalam RFC 1813 "NFS Version 3 Protocol Specification". Versi 4 protokol ini ditakrifkan dalam RFC 3010, NFS Versi 4 Protokol.

NFS digunakan secara meluas pada semua jenis hos UNIX, pada rangkaian Microsoft dan Novell, dan pada penyelesaian IBM seperti AS400 dan OS/390. Walaupun tidak diketahui di luar kerajaan rangkaian, NFS mungkin merupakan sistem fail rangkaian bebas platform yang paling meluas.

UNIX ADALAH GENESIS

Walaupun NFS adalah sistem bebas platform, nenek moyangnya ialah UNIX. Dengan kata lain, seni bina hierarki seni bina dan kaedah capaian fail, termasuk struktur sistem fail, cara mengenal pasti pengguna dan kumpulan, dan teknik pengendalian fail, semuanya sangat serupa dengan sistem fail UNIX. Sebagai contoh, sistem fail NFS, yang secara strukturnya serupa dengan sistem fail UNIX, dipasang terus padanya. Apabila bekerja dengan NFS pada sistem pengendalian lain, parameter pengenalan pengguna dan hak akses fail tertakluk kepada pemetaan.

NFS

NFS direka untuk digunakan dalam seni bina pelayan-pelanggan. Pelanggan mengakses sistem fail yang dieksport oleh pelayan NFS melalui titik pelekap pada klien. Akses ini biasanya telus kepada aplikasi klien.

Tidak seperti kebanyakan sistem pelayan pelanggan, NFS menggunakan Panggilan Prosedur Jauh (RPC) untuk bertukar maklumat. Biasanya, pelanggan membuat sambungan ke port yang diketahui sebelum ini dan kemudian, mengikut protokol, menghantar permintaan untuk melakukan tindakan tertentu. Dalam kes panggilan prosedur jauh, pelanggan mencipta panggilan prosedur dan kemudian menghantarnya ke pelayan untuk pelaksanaan. Penerangan terperinci tentang NFS akan dibentangkan di bawah.

Sebagai contoh, katakan pelanggan telah memasang direktori usr2 pada sistem fail akar tempatan:

/root/usr2/ -> jauh:/root/usr/

Jika aplikasi klien memerlukan sumber daripada direktori ini, ia hanya menghantar permintaan kepada sistem pengendalian untuknya dan nama fail, yang memberikan akses melalui klien NFS. Sebagai contoh, pertimbangkan perintah cd UNIX yang mudah, yang "tidak tahu apa-apa" tentang protokol rangkaian. Pasukan

Cd /root/usr2/

akan meletakkan direktori kerja pada sistem fail jauh, "tanpa menyedari" (pengguna juga tidak memerlukan ini) bahawa sistem fail adalah jauh.

Setelah menerima permintaan, pelayan NFS akan menyemak sama ada pengguna mempunyai hak untuk melakukan tindakan yang diminta dan, jika jawapannya positif, akan melaksanakannya.

JOM KENALI LEBIH BAIK

Dari sudut pandangan pelanggan, proses pemasangan tempatan sistem fail jauh menggunakan NFS terdiri daripada beberapa langkah. Seperti yang dinyatakan, klien NFS akan mengeluarkan panggilan prosedur jauh untuk melaksanakannya pada pelayan. Ambil perhatian bahawa dalam UNIX, klien ialah satu program (arahan pemasangan), manakala pelayan sebenarnya dilaksanakan sebagai beberapa program dengan set minimum berikut: perkhidmatan pemeta port, daemon pelekap dan pelayan NFS. .

Arahan pemasangan klien mula-mula berkomunikasi dengan perkhidmatan terjemahan port pelayan, yang mendengar permintaan pada port 111. Kebanyakan pelaksanaan arahan pemasangan klien menyokong berbilang versi NFS, yang meningkatkan kemungkinan mencari versi protokol biasa untuk klien dan pelayan. Carian dijalankan bermula dengan versi tertinggi, jadi apabila yang biasa ditemui, ia secara automatik akan menjadi versi terbaru yang disokong oleh klien dan pelayan.

(Bahan yang dibentangkan tertumpu pada versi ketiga NFS, kerana ia adalah yang paling meluas pada masa ini. Versi keempat belum lagi disokong oleh kebanyakan pelaksanaan.)

Perkhidmatan terjemahan port pelayan bertindak balas kepada permintaan berdasarkan protokol yang disokong dan port di mana daemon gunung sedang berjalan. Program klien pemasangan mula-mula mewujudkan sambungan ke daemon pelekap pelayan dan kemudian mengeluarkan arahan pelekap kepadanya melalui RPC. Jika prosedur ini berjaya, maka aplikasi klien bersambung ke pelayan NFS (port 2049) dan, menggunakan salah satu daripada 20 prosedur jauh yang ditakrifkan dalam RFC 1813 dan disenaraikan dalam Jadual 1, mendapat akses kepada sistem fail jauh.

Maksud kebanyakan arahan adalah intuitif dan tidak menyebabkan sebarang kesulitan kepada pentadbir sistem. Penyenaraian berikut, yang diperoleh menggunakan tcdump, menggambarkan perintah baca yang dihasilkan oleh perintah kucing UNIX untuk membaca fail bernama fail ujian:

10:30:16.012010 eth0 > 192.168.1.254. 3476097947 > 192.168.1.252.2049: 144 carian fh 32.0/ 224145 "fail ujian" 10:30:16.012010 eth0 > 192.168.1.254. 3476097947 > 192.168.1.252.2049: 144 carian fh 32.0/ 224145 "fail ujian" 10:30:16.012729 eth0 192.168.1.254.3476.254.3476.254.347629 reply 07 (DF) 10:30: 16.012729 eth0 192.168 .1.254.3476097947: balas ok 128 carian fh 32.0/224307 (DF) 10:30:16.013124 eth0 > 192.168.1.254. 3492875163 > 192.168.1.252.2049: 140 baca fh 32.0/ 224307 4096 bait @ 0 10:30:16.013124 eth0 > 192.168.1.254. 3492875163 > 192.168.1.252.2049: 140 baca fh 32.0/ 224307 4096 bait @ 0 10:30:16.013650 eth0 192.168.1.1.254.30 (baca 192.168.1.254.30) :16.013650 eth0 192.168.1.254.3492875163 : balas ok 108 baca (DF)

NFS secara tradisinya telah dilaksanakan melalui UDP. Walau bagaimanapun, beberapa versi NFS menyokong TCP (sokongan TCP ditakrifkan dalam spesifikasi protokol). Kelebihan utama TCP ialah mekanisme penghantaran semula yang lebih cekap dalam rangkaian yang tidak boleh dipercayai. (Dengan UDP, jika ralat berlaku, mesej RPC lengkap, yang terdiri daripada beberapa paket UDP, dihantar semula. Dengan TCP, hanya serpihan yang rosak dihantar semula.)

AKSES NFS

Pelaksanaan NFS biasanya menyokong empat cara untuk memberikan hak akses: melalui atribut pengguna/fail, pada peringkat sumber dikongsi, pada peringkat nod induk dan sebagai gabungan kaedah capaian lain.

Kaedah pertama adalah berdasarkan sistem kebenaran fail terbina dalam UNIX untuk pengguna atau kumpulan individu. Untuk memudahkan penyelenggaraan, pengenalpastian pengguna dan kumpulan harus konsisten merentas semua klien dan pelayan NFS. Keselamatan mesti dipertimbangkan dengan teliti: NFS secara tidak sengaja boleh memberikan akses kepada fail yang tidak dimaksudkan semasa ia dicipta.

Akses peringkat perkongsian membolehkan anda menyekat hak untuk membenarkan tindakan tertentu sahaja, tanpa mengira pemilikan fail atau keistimewaan UNIX. Sebagai contoh, bekerja dengan sistem fail NFS boleh dihadkan kepada baca sahaja. Kebanyakan pelaksanaan NFS membenarkan anda mengehadkan lagi akses pada peringkat sumber dikongsi kepada pengguna dan/atau kumpulan tertentu. Sebagai contoh, kumpulan Sumber Manusia dibenarkan untuk melihat maklumat dan tidak lebih.

Akses tahap nod induk membolehkan anda melekapkan sistem fail hanya pada nod tertentu, yang secara amnya merupakan idea yang baik kerana sistem fail boleh dibuat dengan mudah pada mana-mana nod yang didayakan NFS.

Akses gabungan hanya menggabungkan jenis di atas (contohnya, akses peringkat perkongsian dengan akses yang diberikan kepada pengguna tertentu) atau membenarkan pengguna mengakses NFS hanya dari nod tertentu.

NFS DALAM GAYA PENGUIN

Bahan berkaitan Linux adalah berdasarkan Red Hat 6.2 dengan kernel versi 2.4.9, yang dihantar dengan nfs-utils versi 0.1.6. Terdapat juga versi yang lebih baharu: pada masa penulisan, kemas kini terbaharu untuk pakej nfs-utils ialah 0.3.1. Ia boleh dimuat turun daripada: .

Pakej nfs-utils mengandungi boleh laku berikut: exportfs, lockd, mountd, nfsd, nfsstat, nhfsstone, rquotad, showmount dan statd.

Malangnya, sokongan NFS kadangkala menjadi punca kekeliruan untuk pentadbir Linux kerana ketersediaan ciri tertentu secara langsung bergantung pada nombor versi kedua-dua kernel dan pakej nfs-utils. Nasib baik, keadaan semakin bertambah baik dalam bidang ini, dengan pengedaran terkini termasuk versi terkini kedua-duanya. Untuk keluaran sebelumnya, Bahagian 2.4 NFS-HOWTO menyediakan senarai lengkap fungsi sistem yang tersedia untuk setiap kombinasi pakej kernel dan nfs-utils. Pembangun mengekalkan keserasian ke belakang pakej dengan versi terdahulu, memberi banyak perhatian untuk memastikan keselamatan dan menghapuskan ralat perisian.

Sokongan NFS harus dimulakan semasa penyusunan kernel. Jika perlu, keupayaan untuk bekerja dengan NFS versi 3 harus ditambah pada kernel.

Untuk pengedaran yang menyokong linuxconf, mudah untuk mengkonfigurasi perkhidmatan NFS untuk kedua-dua pelanggan dan pelayan. Walau bagaimanapun, cara cepat untuk memasang NFS menggunakan linuxconf tidak memberikan maklumat tentang fail yang dibuat atau diedit, yang sangat penting untuk pentadbir mengetahui situasi sekiranya berlaku kegagalan sistem. Seni bina NFS pada Linux digandingkan secara longgar kepada versi BSD, jadi fail dan program sokongan yang diperlukan mudah dicari untuk pentadbir yang menjalankan BSD, Sun OS 2.5 atau versi NFS yang lebih awal.

Fail /etc/exports, seperti dalam versi BSD yang terdahulu, mentakrifkan sistem fail yang dibenarkan untuk diakses oleh klien NFS. Di samping itu, ia mengandungi beberapa ciri tambahan yang berkaitan dengan isu pengurusan dan keselamatan, menyediakan pentadbir cara untuk penalaan halus. Ini ialah fail teks yang terdiri daripada entri, baris kosong atau komen (komen bermula dengan simbol #).

Katakan kami mahu memberikan pelanggan akses baca sahaja ke direktori /home pada nod Kiri. Ini sepadan dengan entri berikut dalam /etc/exports:

/home (ro)

Di sini kita perlu memberitahu sistem direktori mana yang akan kita jadikan boleh diakses menggunakan daemon pemasangan rpc.mountd:

# exportfs -r exportfs: Tiada nama hos dinyatakan dalam /home (ro), masukkan *(ro) untuk mengelakkan amaran #

Apabila dijalankan, arahan exportfs mengeluarkan amaran bahawa /etc/exports tidak menyekat akses kepada nod tertentu dan mencipta entri yang sepadan dalam /var/lib/nfs/etab daripada /etc/exports memberitahu sumber yang boleh dilihat menggunakan cat :

# cat /var/lib/nfs/etab /home (ro,async,wdelay,hide,secure,root_squash, no_all_squash,subtree_check, secure_locks, mapping=identity,anonuid= -2,anongid=-2)

Pilihan lain yang disenaraikan dalam etab termasuk nilai lalai yang digunakan oleh NFS. Butirannya akan diterangkan di bawah. Untuk menyediakan akses kepada direktori /home, anda mesti memulakan perkhidmatan NFS yang sesuai:

# portmap # rpc.mountd # rpc.nfsd # rpc.statd # rpc.rquotad

Pada bila-bila masa selepas memulakan mount daemon (rpc.mountd), anda boleh melihat fail individu yang tersedia untuk output dengan melihat kandungan fail /proc/fs/nfs/exports:

# cat /proc/fs/nfs/exports # Versi 1.0 # Path Client(Flags) # IPs /home 192.168.1.252(ro,root_squash,async, wdelay) # 192.168.1.252 #

Perkara yang sama boleh dilihat menggunakan arahan showmount dengan parameter -e:

# showmount -e Senarai eksport untuk orang kiri: /home (semua orang) #

Melompat ke hadapan sedikit, arahan showmount juga boleh digunakan untuk menentukan semua sistem fail yang dipasang, atau dengan kata lain, untuk mengetahui nod mana yang merupakan klien NFS untuk sistem yang menjalankan arahan showmount. Perintah showmount -a akan menyenaraikan semua titik pemasangan klien:

# showmount -a Semua titik pelekap di kiri: 192.168.1.252:/home #

Seperti yang dinyatakan di atas, kebanyakan pelaksanaan NFS menyokong pelbagai versi protokol ini. Pelaksanaan Linux membolehkan anda mengehadkan senarai versi NFS yang boleh dilancarkan dengan menentukan suis -N untuk daemon gunung. Contohnya, untuk menjalankan NFS versi 3 dan hanya versi 3, masukkan arahan berikut:

# rpc.mountd -N 1 -N 2

Pengguna yang kerap mungkin merasa tidak selesa bahawa daemon NFS Linux (rpc.nfsd) menunggu pakej versi 1 dan versi 2, walaupun ini mempunyai kesan yang diingini kerana tidak menyokong protokol yang sepadan. Mari kita berharap bahawa pembangun versi masa depan akan membuat pembetulan yang diperlukan dan akan dapat mencapai konsistensi yang lebih besar antara komponen pakej berhubung dengan versi protokol yang berbeza.

"BERENANG DENGAN PENGUIN"

Akses kepada Lefty yang dikonfigurasikan di atas, sistem fail boleh eksport NFS berasaskan Linux, bergantung pada sistem pengendalian klien. Gaya pemasangan untuk kebanyakan sistem pengendalian keluarga UNIX adalah sama seperti sama ada sistem Sun OS dan BSD yang asal atau Solaris yang lebih baharu. Memandangkan artikel ini adalah mengenai kedua-dua Linux dan Solaris, mari kita lihat konfigurasi klien Solaris 2.6 dari sudut pandangan mewujudkan sambungan dengan versi Linux NFS yang kami huraikan di atas.

Terima kasih kepada ciri yang diwarisi daripada Solaris 2.6, ia boleh dikonfigurasikan dengan mudah untuk bertindak sebagai klien NFS. Ini hanya memerlukan satu arahan:

# mount -F nfs 192.168.1.254:/home /tmp/tmp2

Dengan mengandaikan arahan mount sebelumnya berjaya, maka perintah mount tanpa parameter akan mengeluarkan yang berikut:

# mount / on /dev/dsk/c0t0d0s0 read/write/setuid/ largefiles pada Isn 3 Sep 10:17:56 2001 ... ... /tmp/tmp2 pada 192.168.1.254:/home read/ write/remote on Isnin 3 Sep 23:19:25 2001

Mari analisa output tcpdump yang diterima pada nod Lefty selepas pengguna mengeluarkan arahan ls /tmp/tmp2 pada nod Sunny:

# tcpdump hos lefty dan hos cerah -s512 06:07:43.490583 sunny.2191983953 > lefty.mcwrite.n.nfs: 128 getattr fh Unknown/1 (DF) 06:07:43.490678 lefty.mcwrite sunny.mcwrite . 3.491463 kiri mcwrite.n.nfs > sunny.2191983954: reply ok 120 capaian c0001 (DF) 06:07:43.492296 sunny.2191983955 > lefty.mcwrite.n.nfs: 152 readdirplus/1h 0709/1006 0000 (DF) 06:07:43.492417 lefty.mcwrite.n.nfs > cerah.2191983955: balas ok 1000 readdirplus (DF)

Kami melihat bahawa nod Sunny meminta pemegang fail (fh) untuk ls, yang mana nod Lefty bertindak balas dengan OK dan mengembalikan struktur direktori. Sunny kemudian menyemak kebenaran untuk mengakses kandungan direktori (132 akses fh) dan menerima respons kebenaran daripada Lefty. Nod Sunny kemudian membaca keseluruhan kandungan direktori menggunakan rutin readdirplus. Panggilan prosedur jauh diterangkan dalam RFC 1813 dan disenaraikan pada permulaan artikel ini.

Walaupun urutan arahan untuk mengakses sistem fail jauh adalah sangat mudah, beberapa keadaan boleh menyebabkan sistem tidak dipasang dengan betul. Sebelum memasang direktori, titik pelekap mesti sudah wujud, jika tidak, ia mesti dibuat menggunakan arahan mkdir. Biasanya satu-satunya punca ralat pada bahagian klien ialah kekurangan direktori pelekap tempatan. Kebanyakan masalah yang dikaitkan dengan NFS adalah disebabkan oleh ketidakpadanan antara klien dan pelayan atau konfigurasi pelayan yang salah.

Cara paling mudah untuk menyelesaikan masalah pada pelayan adalah dari nod yang pelayan sedang berjalan. Walau bagaimanapun, apabila orang lain mentadbir pelayan untuk anda, ini tidak selalu boleh dilakukan. Cara cepat untuk memastikan perkhidmatan pelayan yang sesuai dikonfigurasikan dengan betul adalah dengan menggunakan arahan rpcinfo dengan pilihan -p. Daripada hos Solaris Sunny, anda boleh menentukan proses RPC yang didaftarkan pada hos Linux:

# rpcinfo -p 192.168.1.254 program berbanding perkhidmatan port proto 100000 2 tcp 111 rpcbind 100000 2 udp 111 rpcbind 100024 1 udp 692 status 100024 100024 100000 tcp 16094 tcp 0005 3 tcp 1024 dipasang 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100021 1 udp 1026 nlockmgr 100021 3 udp 1026 nlockmgr 100021 4 udp 1026 nlockmgr #

Ambil perhatian bahawa maklumat versi juga disediakan di sini, yang agak berguna apabila sistem memerlukan sokongan untuk pelbagai protokol NFS. Jika mana-mana perkhidmatan tidak berjalan pada pelayan, maka keadaan ini mesti diperbetulkan. Jika pemasangan gagal, perintah rpcinfo -p berikut akan membantu anda menentukan bahawa perkhidmatan yang dipasang pada pelayan tidak berjalan:

# rpcinfo -p 192.168.1.254 program berbanding perkhidmatan port proto 100000 2 tcp 111 rpcbind ... ... 100021 4 udp 1026 nlockmgr #

Perintah rpcinfo sangat berguna untuk mengetahui sama ada proses jauh tertentu aktif. Parameter -p ialah suis yang paling penting. Untuk melihat semua ciri rpcinfo, lihat halaman manusia.

Alat lain yang berguna ialah arahan nfsstat. Dengan bantuannya, anda boleh mengetahui sama ada pelanggan sebenarnya mengakses sistem fail yang dieksport, dan juga memaparkan maklumat statistik mengikut versi protokol.

Akhir sekali, alat lain yang agak berguna untuk menentukan punca kegagalan sistem ialah tcpdump:

# hos tcpdump lefty dan hos cerah -s512 tcpdump: mendengar di eth0 06:29:51.773646 sunny.2191984020 > lefty.mcwrite.n.nfs: 140 carian fh Tidak diketahui/1"test.c" (DF) 06:773:51:773:51:773 lefty.mcwrite.n.nfs > sunny.2191984020: balas ok 116 carian RALAT: Tiada fail atau direktori (DF) sedemikian 06:29:51.774593 sunny.2191984021 > lefty.mcwrite.n.nfs: 128 getknown DF) 06:29:51.774670 lefty.mcwrite.n.nfs > cerah.2191984021: balas ok 112 getattr DIR 40755 id 0/0 sz 0x000001000 (DF) 06:729:519 ritus.n. nfs : 140 carian fh Tidak diketahui/1"test.c" (DF) 06:29:51.775357 lefty.mcwrite.n.nfs > sunny.2191984022: balas ok 116 carian RALAT: Tiada fail atau direktori (DF) 06:29 : 51.776029 cerah.2191984023 > lefty.mcwrite.n.nfs: 184 create fh Unknown/1 "test.c" (DF) 06:29:51.776169 lefty.mcwrite.n.nfs > sunny.219198402123: reply create Ek : Kebenaran ditolak (DF)

Penyenaraian di atas, yang dihasilkan dengan melaksanakan pernyataan touch test.c, menunjukkan urutan tindakan berikut: mula-mula arahan sentuh cuba mengakses fail bernama test.c, kemudian ia mencari direktori dengan nama yang sama, dan selepas percubaan yang tidak berjaya ia cuba mencipta fail test.c , yang juga tidak membawa kepada kejayaan.

Jika sistem fail dipasang, ralat yang paling biasa adalah berkaitan dengan kebenaran UNIX biasa. Menggunakan uid atau NIS+ pada Sun membantu mengelak daripada menetapkan kebenaran secara global pada semua sistem fail. Sesetengah pentadbir mengamalkan direktori "terbuka", di mana akses baca diberikan kepada "seluruh dunia." Walau bagaimanapun, ini harus dielakkan atas sebab keselamatan. Selain daripada kebimbangan keselamatan, pendekatan ini masih menjadi amalan buruk, kerana pengguna jarang mencipta data dengan tujuan menjadikannya boleh dibaca oleh semua orang.

Akses oleh pengguna istimewa (root) kepada sistem fail NFS yang dipasang dilayan secara berbeza. Untuk mengelak daripada memberi pengguna istimewa akses tanpa had, permintaan daripada pengguna istimewa dianggap seolah-olah ia datang daripada pengguna bukan sesiapa. Mekanisme berkuasa ini mengehadkan akses pengguna istimewa kepada fail yang boleh dibaca dan boleh ditulis secara global.

NFS SERVER VERSI SOLARIS

Mengkonfigurasi Solaris untuk beroperasi sebagai pelayan NFS adalah semudah dengan Linux. Walau bagaimanapun, arahan dan lokasi fail sedikit berbeza. Apabila Solaris boot, apabila mencapai tahap larian 3, perkhidmatan NFS dimulakan secara automatik dan semua sistem fail dieksport. Untuk memulakan proses ini secara manual, masukkan arahan:

#/usr/lib/nfs/mountd

Untuk memulakan mount daemon dan pelayan NFS, masukkan:

#/usr/lib/nfs/nfsd

Bermula dengan versi 2.6, Solaris tidak lagi menggunakan fail eksport untuk menentukan sistem fail yang hendak dieksport. Fail kini dieksport menggunakan arahan kongsi. Katakan kita mahu membenarkan hos jauh melekapkan /export/home. Untuk melakukan ini, masukkan arahan berikut:

Kongsi -F nfs /eksport/rumah

Langkah keselamatan

KESELAMATAN DALAM LINUX

Sesetengah perkhidmatan sistem NFS berasaskan Linux mempunyai mekanisme sekatan akses tambahan melalui senarai kawalan atau jadual. Pada peringkat dalaman, mekanisme ini dilaksanakan menggunakan perpustakaan tcp_wrapper, yang menggunakan dua fail untuk menjana senarai kawalan akses: /etc/hosts.allow dan /etc/hosts/deny. Gambaran keseluruhan peraturan untuk bekerja dengan tcp_wrapper adalah di luar skop artikel ini, tetapi prinsip asasnya adalah seperti berikut: perbandingan pertama dibuat dengan etc/hosts.allow, dan kemudian dengan /etc/hosts. menafikan. Jika peraturan tidak dijumpai, maka perkhidmatan sistem yang diminta tidak dibentangkan. Untuk mengatasi keperluan terakhir ini dan menyediakan tahap keselamatan yang sangat tinggi, anda boleh menambah entri berikut pada penghujung /etc/hosts.deny:

SEMUA: Semua

Selepas ini, anda boleh menggunakan /etc/hosts.allow untuk menetapkan satu atau mod pengendalian yang lain. Sebagai contoh, fail /etc/hosts. benarkan, yang saya gunakan semasa menulis artikel ini, mengandungi baris berikut:

Dikunci:192.168.1.0/255.255.255.0 dipasang:192.168.1.0/255.255.255.0 peta port:192.168.1.0/255.255.255.0 rquotad:192.0/5.25.5.2.5.2.5. 8.1.0/255.255.255.0

Ini membenarkan jenis akses tertentu kepada hos sebelum memberikan akses peringkat aplikasi. Di Linux, akses peringkat aplikasi dikawal oleh fail /etc/exports. Ia terdiri daripada entri dalam format berikut:

Eksport direktori (ruang) hos|rangkaian(pilihan)

"Direktori eksport" ialah direktori yang daemon nfsd dibenarkan untuk memproses permintaan. "nod|rangkaian" ialah nod atau rangkaian yang mempunyai akses kepada sistem fail yang dieksport dan "pilihan" mentakrifkan sekatan yang dikenakan daemon nfsd ke atas penggunaan sumber kongsi ini - akses baca sahaja atau pemetaan id pengguna. .

Contoh berikut memberikan seluruh domain mcwrite.net akses baca sahaja ke /home/mcwrite.net:

/home/mcwrite.net *.mcwrite.net(ro)

Lebih banyak contoh boleh didapati dalam halaman manual eksport.

NFS SECURITY DI SOLARIS

Di Solaris, keupayaan untuk menyediakan akses kepada NFS adalah serupa dengan Linux, tetapi dalam kes ini, sekatan ditetapkan menggunakan parameter tertentu dalam arahan kongsi dengan suis -o. Contoh berikut menunjukkan cara untuk mendayakan pemasangan baca sahaja /export/mcwrite.net pada mana-mana hos dalam domain mcwrite.net:

#share -F nfs -o ro=.mcwrite.net/ export/ mcwrite.net

Halaman manual untuk butiran share_nfs yang memberikan akses menggunakan senarai kawalan pada Solaris.

Sumber Internet

NFS dan RPC bukan tanpa lubang. Secara umumnya, NFS tidak boleh digunakan semasa melayari Internet. Anda tidak boleh membuat lubang pada tembok api untuk membenarkan sebarang jenis akses melalui NFS. Adalah penting untuk mengawasi mana-mana tampung RPC dan NFS yang baru muncul, dan banyak sumber maklumat keselamatan boleh membantu. Dua sumber yang paling popular ialah Bugtraq dan CERT:

Yang pertama boleh dilihat dengan kerap untuk mencari maklumat yang diperlukan atau dengan melanggan surat berita berkala. Yang kedua menyediakan, mungkin, bukan maklumat yang pantas berbanding dengan yang lain, tetapi dalam jumlah yang cukup lengkap dan tanpa naungan ciri sensasi beberapa laman web yang didedikasikan untuk keselamatan maklumat.

Untuk mengedarkan fail dalam rangkaian tempatan, teknologi berikut boleh dibezakan (sistem berasaskan Linux dipertimbangkan):

  • Sistem Fail Rangkaian (NFS) - protokol akses rangkaian untuk sistem fail;
  • Fail yang dipindahkan melalui protokol Shell (FISH) ialah protokol rangkaian yang menggunakan atau RSH untuk memindahkan fail antara komputer;
  • Secure SHell FileSystem (SSHFS) - klien sistem fail untuk memasang peranti cakera pada sistem jauh, digunakan untuk berinteraksi dengan sistem jauh SFTP;
  • Samba ialah pakej perisian yang membolehkan anda mengakses pemacu rangkaian dan pencetak pada pelbagai sistem pengendalian melalui protokol SMB/CIFS;

Dalam nota ini kita akan bercakap tentang NFS.

NFS (Sistem Fail Rangkaian) berguna apabila anda perlu mengedarkan fail/direktori kepada semua orang di rangkaian. Akses ketelusan dengan NFS membolehkan pelanggan memasang sistem fail jauh sebagai direktori tempatan, dan sistem fail boleh terdiri daripada jenis yang berbeza. Ini bermakna bahawa mana-mana aplikasi klien yang boleh berfungsi dengan fail tempatan boleh berfungsi dengan mudah dengan fail yang disambungkan melalui NFS, tanpa sebarang pengubahsuaian pada program itu sendiri.

Untuk faedah NFS boleh dikaitkan:

  • mengurangkan beban pada pemproses;
  • memaparkan sumber yang dikongsi sebagai direktori biasa dalam sistem;
  • Tersedia pada masa ini NFS v4.1, yang memperkenalkan ciri baharu pNFS membolehkan anda menyelaraskan pelaksanaan perkongsian fail. Terdapat juga sambungan untuk NFS 2 dan 3 - WebNFS, yang membolehkan penyepaduan yang lebih mudah ke dalam penyemak imbas web dan keupayaan untuk bekerja melalui tembok api.

    Skim kerja NFS protokol.

    Memasang dan mengkonfigurasi pelayan NFS di bawah Linux

    Mari semak sama ada sistem menyokong NFS

    Cat /proc/filesystems | grep nfs

    Di bawah Arch Linux pelayan dan pelanggan berada dalam pakej yang sama

    Yaourt -S nfs-utils

    Untuk memasang pelayan ( nfs-kernel-server) dan pelanggan ( nfs-common) di bawah Ubuntu pakej yang diperlukan

    Sudo apt-get install nfs-kernel-server nfs-common portmap

    Selanjutnya dalam nota ini, IP akan digunakan untuk pelayan 192.168.1.100 . Agar IP yang sama sentiasa diberikan kepada pelayan, adalah perlu untuk menentukan dalam pelayan DHCP (biasanya penghala) pengedaran IP tertentu kepada alamat MAC tertentu. Atau tingkatkan pelayan DNS tempatan anda. Contohnya atau.

    Alamat MAC boleh didapati menggunakan ifconfig (field eter V Arch Linux).

    NFSv4 mengandaikan bahawa terdapat direktori akar, di dalamnya fail untuk pengedaran telah pun berada. Sebagai contoh, /srv/nfs- akar, /srv/nfs/audio- direktori untuk mengedarkan muzik. Jika anda tidak mengikuti panduan baharu ini dalam versi 4 , maka anda mungkin menerima ralat semasa menyambung oleh klien:

    Mount.nfs: akses dinafikan oleh pelayan semasa memasang 192.168.1.100:/home/proft/torrents

    Jika anda masih mahu menggunakan pendekatan pada pelayan tanpa direktori akar untuk NFS, maka apabila dipasang oleh pelanggan, anda mesti menyatakan versi secara eksplisit 3

    # untuk perintah mount mount -o "vers=3" 192.168.1.100:/home/proft/torrents /home/proft/nfs/torrents # untuk fstab 192.168.1.100:/home/proft/torrents /home/proft/nfs / torrents nfs soft,nfsvers=3 0 0

    saya akan guna NFSv4 dengan direktori akar masuk /srv/nfs/ dan memasang subdirektori menggunakan mount --bind .

    Katakan kita mahu

    • mengedarkan direktori ~/torrents Dengan rw akses untuk semua orang dalam rangkaian tempatan;
    • mengedarkan direktori ~/foto Dengan ro akses untuk hos dengan IP 192.168.1.101 ;

    Mula-mula, mari buat direktori akar dan subdirektori yang diperlukan.

    Sudo mkdir -p /srv/nfs/(torrents,photos)

    Lekapkan direktori sedia ada torrents, foto V /srv/nfs.

    # sudo vim /etc/fstab /home/proft/torrents /srv/nfs/torrents none bind 0 0 /home/proft/photos /srv/nfs/photos none bind 0 0

    Jom edit /etc/exports, yang menerangkan semua direktori kongsi

    # sudo vim /etc/exports # format fail: directory allowed-hosts(options) /srv/nfs/torrents 192.168.1.1/24(rw,async) /srv/nfs/photos 192.168.1.101(ro,async)

    Ambil perhatian bahawa tiada ruang antara hos dibenarkan Dan (pilihan). Kehadiran ruang memperkenalkan tafsiran peraturan yang berbeza.

    Pilihan yang tersedia:

    • ro (rw) - benarkan akses baca sahaja (baca/tulis);
    • subtree_check (no_subtree_check) - dalam beberapa kes adalah perlu untuk mengeksport bukan keseluruhan bahagian, tetapi hanya sebahagian daripadanya. Dalam kes ini, pelayan NFS mesti melakukan semakan tambahan pada permintaan pelanggan untuk memastikan bahawa mereka hanya cuba mengakses fail yang terdapat dalam subdirektori yang sesuai. Kawalan subpokok ini ( semak pokok) agak melambatkan interaksi dengan pelanggan, tetapi jika anda menolaknya, ia boleh menyebabkan masalah dengan keselamatan sistem. Anda boleh membatalkan kawalan subpokok menggunakan pilihan no_subtree_check. Pilihan subtree_check, yang termasuk kawalan sedemikian, diandaikan secara lalai. Pemeriksaan subtree boleh ditinggalkan jika direktori yang dieksport adalah sama dengan partition cakera;
    • segerak (async) - menyatakan bahawa pelayan harus bertindak balas kepada permintaan hanya selepas perubahan yang dibuat oleh permintaan tersebut telah ditulis ke cakera. Pilihan tak segerak memberitahu pelayan untuk tidak menunggu maklumat ditulis ke cakera, yang meningkatkan prestasi tetapi mengurangkan kebolehpercayaan kerana sekiranya berlaku kegagalan sambungan atau kegagalan peralatan, kehilangan data mungkin berlaku;
    • noaccess - menafikan akses kepada direktori yang ditentukan. Ia boleh berguna jika anda sebelum ini menetapkan akses untuk semua pengguna rangkaian kepada direktori tertentu, dan kini anda mahu mengehadkan akses kepada subdirektori kepada beberapa pengguna sahaja;
    • no_root_squash – pengguna lalai akar pada mesin klien tidak akan mempunyai hak yang sama ke atas direktori pada pelayan. Pilihan ini mengalih keluar had ini;
    • tiada sembunyi- NFS tidak menunjukkan sumber bukan tempatan secara automatik (contohnya, dipasang menggunakan mount --bind), pilihan ini membolehkan paparan sumber tersebut;
    • tidak selamat - penggunaan pelabuhan yang tidak mempunyai keistimewaan (> 1024);

    Memulakan pelayan NFS

    # di bawah archlinux sudo systemctl mulakan rpc-idmapd.service rpc-mountd.service # di bawah ubuntu sudo /etc/init.d/nfs-kernel-server start

    Pada masa hadapan, apabila menukar fail konfigurasi, cuma baca semula dengan arahan:

    Sudo exportfs -rav

    Perintah rpcinfo -p | grep nfs membolehkan anda menyemak sama ada pelayan bermula dengan jayanya.

    Pelanggan Linux

    Pemasangan

    # di bawah archlinux yaourt -S nfs-utils # di bawah ubuntu sudo apt-get install portmap nfs-common

    Mari buat direktori untuk memasang sumber rangkaian torrents Dan foto

    Mkdir -p ~/nfs/(torrents,photos)

    Untuk pemasangan manual kami akan lakukan

    Sudo mount -t nfs -o rw,soft 192.168.1.100:/srv/nfs/torrents /home/proft/nfs/torrents sudo mount -t nfs -o rw,soft 192.168.1.100:/srv/nfs/photos /home /proft/nfs/photos

    Pilihan lembut menentukan untuk membatalkan percubaan untuk menyambung bahagian secara senyap selepas tempoh masa tertentu (masa ditentukan oleh pilihan tukar semula). Butiran lanjut dalam lelaki nfs.

    Kaedah ini tidak begitu mudah, kerana setiap kali selepas but semula anda perlu melaksanakan arahan ini. Mari buat pemasangan automatik.

    Untuk melekap secara automatik, edit fail /etc/fstab

    # sudo vim /etc/fstab 192.168.1.100:/srv/nfs/torrents /home/proft/net/torrents nfs rw,soft 0 0 192.168.1.100:/srv/nfs/photos /home/proft/net/photos nfs ro, lembut 0 0

    Tetapi kaedah ini juga mempunyai kelemahannya, sebagai contoh, jika pelayan tidak tersedia, pemuatan klien mungkin membeku kerana percubaan untuk menyambung ke pelayan NFS. Untuk membetulkannya, lihat di bawah tentang AutoFS.

    AutoFS - sambungan automatik sumber rangkaian

    Ia adalah mungkin untuk memasang sumber jauh menggunakan AutoFS apabila akses pertama dan dinyahlekap secara automatik apabila tiada aktiviti.

    AutoFS menggunakan templat yang terletak di /etc/autofs. Templat utama dipanggil auto.master, ia mungkin menunjuk kepada satu atau lebih corak lain untuk jenis media tertentu.

    Pemasangan

    # di bawah archlinux yaourt -S autofs # di bawah ubuntu sudo apt-get install autofs

    Terdapat beberapa cara untuk menentukan kaedah automount. Saya menggunakan yang ini: dalam /home/proft/nfs Direktori dicipta secara automatik dengan nama pelayan NFS, di mana direktori boleh diakses pada pelayan dibuat secara automatik.

    # sudo vim /etc/autofs/auto.master /home/proft/nfs /etc/autofs/auto.nfs --timeout=60

    Parameter tambahan masa tamat menetapkan bilangan saat selepas peranti akan dinyahlekap. Parameter hantu menentukan bahawa sumber yang dikonfigurasikan akan sentiasa dipaparkan, dan bukan sahaja apabila ia tersedia (pilihan ini didayakan secara lalai dalam AutoFS 5)

    Kami akan menerangkan dalam /etc/autofs/auto.nfs Pelayan NFS dan direktori akar.

    # sudo vim /etc/autofs/auto.nfs nfserver 192.168.1.100:/srv/nfs

    Sekarang dalam panggilan pertama /home/proft/nfs/torrents Sumber NFS akan dipasang secara automatik.

    Mari mulakan semula perkhidmatan autofs:

    # di bawah archlinux sudo systemctl restart autofs # di bawah ubuntu sudo /etc/init.d/autofs restart

    Anda juga boleh menentukan masa menunggu untuk sumber NFS tersedia. Untuk melakukan ini, anda perlu menukar nilai MOUNT_WAIT.

    # di bawah archlinux # sudo vim /etc/conf.d/autofs MOUNT_WAIT=5 # di bawah ubuntu sudo /etc/default/autofs MOUNT_WAIT=5

    Memaksa penggunaan NFS v3

    Dalam beberapa kes NFSv4 boleh bekerja perlahan-lahan. Untuk membetulkannya, anda boleh memaksanya menggunakan versi ketiga.

    "dan anda sudah mempunyai idea tentang "sistem fail rangkaian", keupayaan dan tahap keselamatannya. Walau bagaimanapun, dalam artikel ini semuanya difahami terutamanya dari sudut pandangan pelanggan... tetapi apa yang perlu dilakukan jika anda ingin mempunyai pelayan NFS anda sendiri? (nota: "fuck" tidak bermaksud "break", tetapi bermaksud "pasang dan konfigurasi").

    Nah, jika anda mempunyai keinginan sedemikian, maka soalan pertama yang harus anda tanyakan kepada diri sendiri ialah: "Untuk apa seekor kambing memerlukan akordion?" Untuk memasang pelayan NFS di rumah
    agak sia-sia - tiada siapa yang akan menghargainya, tetapi jika anda cukup bernasib baik untuk menjadi pentadbir di pejabat "lelaki berbaju hitam", atau dalam "Rangkaian HOME" yang baru - maka ia adalah perkara yang sama sekali berbeza...

    Melancarkan pelayan itu sendiri adalah perkara yang agak mudah; jika anda membaca artikel sebelumnya, anda boleh mengendalikannya dengan baik. Jadi, anda memerlukan daemon berikut:

    • nfsd - perkhidmatan protokol langsung
      NFS;
    • mountd - operasi pemasangan servis;
    • rpc.portmap - daemon port RPC; diperlukan kerana permintaan kepada pelayan NFS dihantar dalam bentuk paket
      RPC;

    Bagaimana hendak melakukannya? Ia sangat mudah - pergi ke fail "/etc/rc.d/rc.inet2" dan nyahkomen baris yang sepadan. Segala-galanya boleh dianggap bahawa pelancaran awal telah selesai; ia akan menjadi lebih sukar untuk menetapkan semuanya...
    Perkara pertama yang perlu diputuskan ialah siapa yang mempunyai hak apa mengenai maklumat ini atau itu. Ini dikonfigurasikan melalui fail /etc/exports. Terdapat kebenaran "baca" dan "baca-tulis". Cara untuk menyediakan ini diterangkan dalam "Asas"
    NFS".

    Yang kedua ialah, sudah tentu, beban pada pelayan, i.e. bilangan pengguna aktif dan anggaran permintaan mereka. Permintaan kepada pelayan NFS biasanya dibahagikan kepada dua jenis: yang pertama ialah apabila klien bekerja dengan atribut, yang kedua ialah apabila pelanggan meminta data secara langsung. Permintaan jenis pertama sedang mencari fail, membaca senarai kebenaran, dsb., sudah tentu, anda faham bahawa ia memuatkan rangkaian dengan ringan. Permintaan jenis kedua ialah pemindahan dan penerimaan kandungan fail terus daripada klien; dan di sinilah persoalan timbul: "apa yang akan dihantar dan berapa kerap?" Ini amat relevan jika anda mempunyai rangkaian 10 Mbit/s (secara ringkasnya, rangkaian Rusia standard). Jika anda tahu, maka 10 Mbit/s adalah lebih sedikit daripada 1 MB sesaat; Sememangnya, jika fail bersaiz berpuluh-puluh megabait sentiasa dipindahkan, rangkaian akan mati begitu saja. Jika ini adalah situasi anda, maka anda perlu memasang caching data pada mesin klien (biod daemon). Kemudian, setelah meminta fail dan mengaksesnya semula, pelanggan tidak akan "memuat turun" semula dari pelayan, tetapi akan mengambilnya dari cachenya; pada masa yang sama, ia akan sentiasa diperiksa sama ada fail pada pelayan telah berubah, dan jika fakta perubahan dikesan, fail dalam cache akan digantikan dengan "versi baru"
    (seperti yang anda faham, menyemak "telah menukar fail" ialah pertanyaan "mengikut atribut", yang selalunya beratus kali lebih kecil daripada fail itu sendiri).

    Nah: kami melancarkan pelayan NFS, menentukan kebenaran akses, menangani beban... Sekarang yang tinggal hanyalah mengisi skru dengan maklumat yang diperlukan dan menggunakannya
    Keupayaan NFS sepenuhnya...

    Daripada kesimpulan:

    Jika anda berhadapan dengan persoalan mengatur pertukaran data pada rangkaian, maka jangan teragak-agak untuk memilih NFS - NFS adalah tiga kepala lebih tinggi daripada
    FTP adalah kepala dan bahu di atas "belon" Windows dan ia tidak begitu sukar untuk disediakan...

    Saya menyediakan arahan untuk memasang dan mengkonfigurasi NFS (Sistem Fail Rangkaian). NFS ialah sistem fail rangkaian yang membolehkan anda mengakses fail dan direktori pada komputer jauh (pelayan) seolah-olah fail dan direktori ini adalah setempat. Kelebihan utama sistem sedemikian ialah stesen kerja individu boleh menggunakan kurang ruang cakera mereka sendiri, kerana data yang dikongsi disimpan pada mesin berasingan (gudang data) dan tersedia untuk mesin lain pada rangkaian. NFS ialah aplikasi pelayan pelanggan di mana peranan storan diberikan kepada pelayan. Setiap peserta rangkaian ialah klien NFS yang memasang pemacu rangkaian pelayan dalam sistem failnya.

    Mari ambil Ubuntu 12.04 sebagai pelayan.
    Kami akan menggunakan dan menguji Centos dan Winows 7 sebagai pelanggan.

    Pelayan induk: 192.168.2.213 (Ubuntu)

    Pelanggan: 192.168.2.72 (Centos), 192.168.2.180 (Windows)

    Penalaan Pelayan

    Mula-mula anda perlu mengkonfigurasi pelayan. Oleh kerana kami akan menggunakan Ubuntu sebagai pelayan, kami perlu memasang pakej yang sesuai

    Root@ubuntu:~# apt-get install nfs-kernel-server

    Selepas memasang pakej yang diperlukan, kami mencipta dua fail konfigurasi. Daripada log pemasangan:

    ... Mencipta fail konfigurasi /etc/idmapd.conf dengan versi baharu Mencipta fail konfigurasi /etc/default/nfs-common dengan versi baharu ...

    Fail pertama menerangkan pengguna (dicipta semasa memasang pakej) dan kumpulan untuk mengambil bahagian dalam pemetaan (pengenalan pengguna).

    Root@ubuntu:~# cat /etc/idmapd.conf Verbosity = 0 Pipefs-Directory = /run/rpc_pipefs # tetapkan domain anda sendiri di sini, jika id berbeza daripada FQDN tolak nama hos # Domain = localdomain Nobody-User = nobody Nobody-Group = tiada kumpulan

    Seperti yang kita ketahui, di Linux setiap fail adalah milik pengguna tertentu, yang mempunyai sendiri (UID, GID), tetapi pada sistem Windows skemanya sedikit berbeza. Dan dalam hal ini, mekanisme pemetaan dicipta, yang menterjemahkan pengguna yang berbeza daripada sistem pengendalian yang berbeza ke dalam bentuk yang boleh difahami untuk sistem fail Linux.
    Fail kedua diperlukan untuk mengkonfigurasi pengesahan Kerberos dan mengkonfigurasi port bukan standard di mana daemon akan mendengar. Kita belum perlukan dia lagi. Menyediakan Kerberos akan dibincangkan dalam artikel seterusnya.

    Root@ubuntu:~# cat /etc/default/nfs-common # Jika anda tidak menetapkan nilai untuk pilihan NEED_, ia akan cuba # autodetected; ini sepatutnya mencukupi untuk kebanyakan orang. Alternatif # yang sah untuk pilihan NEED_ ialah "ya" dan "tidak". # Adakah anda mahu memulakan daemon statd? Ia tidak diperlukan untuk NFSv4. NEED_STATD= # Pilihan untuk rpc.statd. # Patutkah rpc.statd mendengar pada port tertentu? Ini amat berguna # apabila anda mempunyai tembok api berasaskan port. Untuk menggunakan port tetap, tetapkan # pembolehubah ini kepada argumen statd seperti: "--port 4000 --outgoing-port 4001". # Untuk maklumat lanjut, lihat rpc.statd(8) atau http://wiki.debian.org/SecuringNFS STATDOPTS= # Adakah anda mahu memulakan daemon gssd? Ia diperlukan untuk pemasangan Kerberos. NEED_GSSD=

    Sekarang mari kita teruskan dengan persediaan.
    Semua direktori untuk perkongsian mesti didaftarkan dalam fail /etc/exports. Mula-mula, mari buat 2 folder dalam direktori rumah dan letakkan fail ke dalamnya. Pokok direktori dan fail untuk eksport:

    Root@ubuntu:~# tree /home/alex/ /home/alex/ ├── nfs_dir1 │ ├── file1_dir1 │ ├── file2_dir1 │ └── file3── file3_dir_2 ─ 2 ├── fail2_dir2 └─ ─ fail3_dir2

    Sekarang anda perlu menetapkan pengguna dan kumpulan untuk direktori ini (ambil dari fail /etc/idmapd.conf).

    Root@ubuntu:~# chown –R nobody:nogroup nfs_dir1/ root@ubuntu:~# chown –R nobody:nogroup nfs_dir2/

    Mula-mula, mari kita eksport direktori nfs_dir1 untuk IP tertentu. Edit fail /etc/exprots.

    Root@ubuntu:~# vim /etc/exports # Untuk hos tertentu (Windows) /home/alex/nfs_dir1 192.168.2.180(rw,sync,all_squash,no_subtree_check,insecure) # Untuk mana-mana hos pada subnet /home/alex /nfs_dir2 192.168 .2.0/24(rw,no_root_squash,sync,no_subtree_check)

    Berikut ialah set minimum pilihan untuk storan berfungsi dengan betul dengan Windows OS.

    • /home/alex/nfs_dir1– laluan ke folder yang akses diberikan;
    • 192.168.2.180 – Alamat IP yang diberikan akses kepada folder (anda boleh menentukan keseluruhan rangkaian, maka entri akan kelihatan seperti 192.168.2.0/24)
    • (rw,sync,all_squash,no_subtree_check)– satu set pilihan.

    Pilihan popular:

    • rw–baca/tulis (boleh mengambil nilai ro - baca sahaja);
    • tiada_akar_labu– secara lalai, pengguna root pada mesin klien tidak akan mempunyai akses kepada direktori kongsi pelayan. Dengan pilihan ini kami mengalih keluar had ini. Atas sebab keselamatan, adalah lebih baik untuk tidak melakukan ini;
    • penyegerakan– mod akses segerak (boleh mengambil nilai yang bertentangan - tak segerak);
    • tiada akses– menafikan akses kepada direktori yang ditentukan. Ia boleh berguna jika anda sebelum ini menetapkan akses untuk semua pengguna rangkaian ke direktori tertentu, dan kini anda mahu mengehadkan akses kepada subdirektori kepada beberapa pengguna sahaja.
    • all_squash– membayangkan bahawa semua sambungan akan dibuat daripada pengguna tanpa nama (diperlukan untuk klien Windows)
    • anonuid= 1000 – memautkan pengguna tanpa nama kepada pengguna “tempatan”;
    • anongid= 1000 - mengikat pengguna tanpa nama kepada kumpulan pengguna "tempatan".
    • no_subtree_check(subtree_check)–Jika subdirektori sistem fail dieksport, tetapi bukan keseluruhan sistem fail, pelayan menyemak sama ada fail yang diminta berada dalam subdirektori yang dieksport. Melumpuhkan pengesahan mengurangkan keselamatan tetapi meningkatkan kelajuan pemindahan data.
    • Biasanya, Linux (dan sistem pengendalian seperti Unix lain) menempah port TCP dan UDP daripada 1-1023 (dipanggil port selamat) untuk digunakan oleh proses pengguna root. Untuk memastikan bahawa akar memulakan sambungan jauh NFS, pelayan NFS biasanya memerlukan pelanggan jauh untuk menggunakan port selamat. Konvensyen ini, bagaimanapun, tidak dihormati oleh sesetengah sistem pengendalian (cth Windows). Dalam kes sedemikian, pilihan tidak selamat Membenarkan klien NFS menggunakan mana-mana port TCP/UDP. Ini biasanya diperlukan semasa memberi perkhidmatan kepada pelanggan Windows.

    Semua pilihan dan sintaks yang tersedia untuk menulis hos, kumpulan hos, dsb. anda boleh membacanya dalam manual

    Root@ubuntu:~# exportfs –a

    Sekarang mari kita semak apa yang kami eksport.

    Root@ubuntu:~# exportfs -v /home/alex/nfs_dir1 192.168.2.180(rw,wdelay,all_squash,no_subtree_check,insecure) /home/alex/nfs_dir2 192.168.2.0/24(rw,wno_subt)

    Pelayan dikonfigurasikan.

    Menyediakan pelanggan

    Menyediakan klien Windows

    Jika tiada mesej ralat. Anda boleh mula memasang pada bahagian pelanggan.
    Pertama, anda perlu menambah perkhidmatan NFS (perkhidmatan pelanggan). Untuk melakukan ini, pergi ke Mula -> Panel Kawalan -> Program dan Ciri dan klik pada item menu di sebelah kiri Hidupkan atau matikan ciri Windows. Dalam tetingkap yang muncul, pilih Pelanggan untuk NFS dan klik okey(Rajah 1).


    Gambar 1

    Seterusnya anda perlu memasang cakera. Untuk melakukan ini, anda boleh menggunakan baris arahan atau hanya klik klik kanan pada My Computer dan pilih Map Network Drive. DAN masukkan baris \\192.168.2.213\home\alex\nfs_dir1. Ini ialah IP pelayan dan laluan ke folder (Gamb. 2).


    Rajah 2

    Jika semuanya ok, kita akan melihat cakera (Gamb. 3).


    Rajah 3

    Perkara yang sama boleh dilakukan menggunakan baris arahan (Gamb. 4).


    Rajah 4

    Kesilapan yang mungkin:

    Anda tidak akan dapat menyambung pemacu rangkaian NFS ke OS Windows (Gamb. 5) jika
    1. Pelanggan NFS tidak dipasang
    2. Firewall didayakan (tidak dikonfigurasikan)
    3. Tiada akses rangkaian ke pelayan
    4. Parameter pemasangan yang salah dimasukkan
    5. Eksport tidak dikonfigurasikan (tetapan tidak digunakan) pada pelayan.
    6. Tambah pilihan tidak selamat dalam tetapan eksport


    Rajah 5 – Ralat menyambungkan pemacu NFS rangkaian

    Anda tidak akan dapat menambah fail pada sistem fail yang dipasang (Rajah 6) jika:
    1. Kebenaran folder tidak ditetapkan pada pelayan (nobody:nogroup)
    2. Pilihan all_squash tidak ditetapkan dalam tetapan eksport
    3. Pilihan rw tidak ditetapkan dalam tetapan eksport


    Rajah 6 – Ralat semasa menambah fail pada cakera NFS

    Menyediakan pelanggan Centos

    Menyediakan sistem Linux agak mudah dan tidak menyakitkan. Anda hanya perlu memasang pakej yang diperlukan dan lekapkan cakera. Centos memerlukan pakej berikut

    # yum pasang nfs-utils nfs-utils-lib

    # mkdir -p /mnt/nfs # mount 192.168.2.213:/home/alex/nfs_dir1 /mnt/nfs # mount /dev/mapper/vg_slave-lv_root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0" ) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) 192.168.2.213:/home/ alex/nfs_dir1 pada /mnt/nfs jenis nfs (rw,vers=4,addr=192.168.2.213,clientadr=192.168.2.72)

    Dalam kes ini, kami boleh menambah sebarang fail dan direktori pada folder nfs_dir1 yang dipasang bagi pihak mana-mana pengguna pada sistem ( all_squash). Tetapi jika kita memasang folder kedua nfs_dir2, maka HANYA root boleh menulis kepadanya, kerana terdapat pilihan di sana tiada_akar_labu. Jom semak.

    # mkdir /mnt/dir1 # mkdir /mnt/dir2 # mount 192.168.2.213:/home/alex/nfs_dir1 /mnt/dir1 # mount 192.168.2.213:/home/alex/nfs_dir2 /mnt/dir2 atau # mount -t nfs4 -o rw,hard,intr,bg 192.168.2.213:/home/alex/nfs_dir2 /mnt/dir2 # echo "Hello" > /mnt/dir1/file1 # echo "Hello" > /mnt/dir2/file1 # su alex $ echo "Hello" > /mnt/dir1/file1 $ echo "Hello" > /mnt/dir2/file1 bash: /mnt/dir2/file1: Kebenaran ditolak

    Kemungkinan memasang bendera.

    Bendera Penerangan
    rw Lekapkan sistem fail untuk baca/tulis (ia mesti dieksport oleh pelayan dalam mod baca/tulis)
    ke Memasang sistem fail baca sahaja
    bg Jika sistem fail tidak boleh dipasang (pelayan tidak bertindak balas), anda harus mengalihkan operasi ke latar belakang dan terus memproses permintaan pemasangan lain
    keras Jika pelayan turun, operasi yang cuba mengaksesnya disekat sehingga pelayan kembali dalam talian
    lembut Jika pelayan turun, operasi yang cuba mengaksesnya gagal dengan mesej ralat. Bendera ini berguna untuk ditetapkan bagi mengelakkan proses daripada tergantung sekiranya kegagalan pemasangan sistem fail yang tidak penting
    intr Membolehkan anda mengganggu operasi yang disekat dari papan kekunci (mesej ralat akan dipaparkan)
    nointr Tidak membenarkan anda mengganggu operasi yang disekat dari papan kekunci
    retrans=n Menentukan berapa kali permintaan mesti diulang sebelum mesej ralat dikembalikan (untuk sistem fail yang dipasang dengan bendera lembut)
    timeo=n Menetapkan selang masa tamat untuk permintaan (dalam persepuluh saat)
    saiz=n Menetapkan saiz penimbal baca kepada n bait
    wsize=fl Menetapkan saiz penimbal tulis kepada n bait
    sec=mod Menetapkan mod keselamatan
    vers=n Menetapkan versi protokol NFS
    proto = protokol Memilih protokol pengangkutan; ia sepatutnya protokol tcp untuk NVS versi 4

    Anda juga boleh menyemak dari konsol sama ada pelayan mengeksport sistem fail dengan betul.

    Root@centos ~# showmount -e 192.168.2.213 Senarai eksport untuk 192.168.2.213: /home/alex/nfs_dir2 192.168.2.0/24 /home/alex/nfs_dir1 192.168.2.180

    Menambah pelekap pada permulaan

    # cat /etc/fstab ... 192.168.2.213:/home/alex/nfs_dir2 /mnt/dir2 nfs4 rw,bg,intr,hard,nodev,nosuid 0 0

    Root@centos ~# mount -a -t nfs4

    Kesilapan yang mungkin.

    Root@centos ~# mount -a -t nfs4 mount.nfs4: mount point /mnt/dir2 tidak wujud root@centos ~# mount -a -t nfs4 mount.nfs4: bahagian jauh bukan dalam format "host:dir"

    Dalam kes pertama, anda perlu membuat folder. Yang kedua mengandungi ralat sintaks dalam fstab.
    Jika anda menghadapi ralat semasa memasang partition NFS, semak senarai Kesilapan yang mungkin daripada bahagian sebelumnya.
    Anda juga boleh menggunakan autofs untuk memasang partition NFS. Apa yang akan dibincangkan dalam.

    NFS, atau Sistem Fail Rangkaian, ialah protokol sistem fail rangkaian yang popular yang membolehkan pengguna melekapkan direktori rangkaian jauh pada mesin mereka dan memindahkan fail antara pelayan. Anda boleh menggunakan ruang cakera pada mesin lain untuk fail anda dan bekerja dengan fail yang terletak pada pelayan lain. Pada asasnya, ini adalah alternatif kepada perkongsian Windows untuk Linux, tidak seperti Samba, ia dilaksanakan pada peringkat kernel dan berfungsi dengan lebih stabil.

    Artikel ini akan membincangkan pemasangan nfs pada Ubuntu 16.04. Kami akan melihat pada memasang semua komponen yang diperlukan, menyediakan folder kongsi, dan menyambungkan folder rangkaian.

    Seperti yang telah disebutkan, NFS ialah sistem fail rangkaian. Untuk berfungsi, anda memerlukan pelayan yang akan mengehoskan folder kongsi dan klien yang boleh melekapkan folder rangkaian sebagai cakera biasa dalam sistem. Tidak seperti protokol lain, NFS menyediakan akses telus kepada fail jauh. Program akan melihat fail seperti dalam sistem fail biasa dan berfungsi dengannya seperti dengan fail tempatan, nfs hanya mengembalikan bahagian fail yang diminta, bukannya keseluruhan fail, jadi sistem fail ini akan berfungsi dengan sempurna pada sistem dengan Internet pantas atau pada rangkaian tempatan.

    Memasang Komponen NFS

    Sebelum kita boleh bekerja dengan NFS, kita perlu memasang beberapa program. Pada mesin yang akan menjadi pelayan, anda perlu memasang pakej nfs-kernel-server, yang akan digunakan untuk membuka saham nfs dalam ubuntu 16.04. Untuk melakukan ini, jalankan:

    sudo apt install nfs-kernel-server

    Sekarang mari kita semak sama ada pelayan telah dipasang dengan betul. Perkhidmatan NFS mendengar sambungan untuk kedua-dua TCP dan UDP pada port 2049. Anda boleh melihat sama ada port ini sebenarnya digunakan dengan arahan:

    rpcinfo -p | grep nfs

    Ia juga penting untuk menyemak sama ada NFS disokong pada peringkat kernel:

    cat /proc/filesystems | grep nfs

    Kami melihat bahawa ia berfungsi, tetapi jika tidak, anda perlu memuatkan modul kernel nfs secara manual:

    Mari tambahkan nfs pada permulaan:

    sudo systemctl membolehkan nfs

    Anda perlu memasang pakej nfs-common pada komputer klien untuk dapat berfungsi dengan sistem fail ini. Anda tidak perlu memasang komponen pelayan, cukup pakej ini sahaja:

    sudo apt install nfs-common

    Menyediakan pelayan NFS pada Ubuntu

    Kita boleh membuka akses NFS ke mana-mana folder, tetapi mari buat yang baharu untuk tujuan ini:

    folder_alamat pelanggan (pilihan)

    Alamat folder ialah folder yang perlu dibuat boleh diakses melalui rangkaian. Klien - Alamat IP atau alamat rangkaian dari mana folder ini boleh diakses. Tetapi dengan pilihan ia sedikit lebih rumit. Mari lihat beberapa daripada mereka:

    • rw- benarkan membaca dan menulis dalam folder ini
    • ro- benarkan baca sahaja
    • penyegerakan- bertindak balas kepada permintaan seterusnya hanya apabila data disimpan ke cakera (lalai)
    • tak segerak- jangan sekat sambungan semasa data sedang ditulis ke cakera
    • selamat- gunakan hanya port di bawah 1024 untuk sambungan
    • tidak selamat- gunakan mana-mana port
    • nohide- jangan sembunyikan subdirektori apabila membuka akses kepada beberapa direktori
    • akar_labu- gantikan permintaan daripada akar dengan permintaan tanpa nama
    • all_squash- jadikan semua permintaan tanpa nama
    • anonuid Dan anongid- menentukan uid dan gid untuk pengguna tanpa nama.

    Sebagai contoh, untuk folder kami baris ini mungkin kelihatan seperti ini:

    /var/nfs 127.0.0.1(rw,sync,no_subtree_check)

    Setelah semuanya dikonfigurasikan, yang tinggal hanyalah mengemas kini jadual eksport NFS:

    sudo exportfs -a

    Itu sahaja, membuka saham nfs dalam ubuntu 16.04 selesai. Sekarang mari kita cuba untuk mengkonfigurasi klien dan cuba untuk melekapkannya.

    Sambungan NFS

    Kami tidak akan membincangkan isu ini secara terperinci dalam artikel hari ini. Ini adalah topik yang agak besar yang layak untuk artikelnya sendiri. Tetapi saya masih akan mengatakan beberapa perkataan.

    Untuk melekapkan folder rangkaian, anda tidak memerlukan sebarang klien nfs Ubuntu, hanya gunakan arahan pelekap:

    sudo mount 127.0.0.1:/var/nfs/ /mnt/

    Kini anda boleh cuba mencipta fail dalam direktori yang disambungkan:

    Kami juga akan melihat sistem fail yang dipasang menggunakan df:

    127.0.0.1:/var/nfs 30G 6.7G 22G 24% /mnt

    Untuk melumpuhkan sistem fail ini, hanya gunakan umount standard:

    sudo umount /mnt/

    kesimpulan

    Artikel ini membincangkan penyediaan nfs ubuntu 16.04, seperti yang anda lihat, semuanya dilakukan dengan mudah dan telus. Menyambungkan saham NFS dilakukan dalam beberapa klik menggunakan arahan standard, dan membuka saham nfs dalam ubuntu 16.04 tidaklah lebih rumit daripada menyambung. Jika anda mempunyai sebarang soalan, tulis dalam komen!

    Catatan berkaitan: