NFS atau Sistem Fail Rangkaian adalah protokol sistem fail diedarkan yang membolehkan anda berkongsi direktori melalui rangkaian. Dengan NFS, anda boleh memasang direktori jauh pada sistem anda dan bekerja dengan fail pada mesin jauh seolah-olah itu fail tempatan.
Secara lalai, protokol NFS tidak disulitkan dan tidak memberikan pengesahan pengguna. Akses ke pelayan dibatasi oleh alamat IP pelanggan atau nama host.
Artikel ini menerangkan cara menyediakan Pelayan NFSv4 di Ubuntu 20.04. Kami juga akan menunjukkan kepada anda cara memasang sistem fail NFS pada mesin pelanggan.
Prasyarat #
Kami akan menggunakan dua mesin, satu menjalankan Ubuntu 20.04, yang akan bertindak sebagai pelayan NFS, dan yang lain menjalankan pengedaran Linux lain yang akan kami pasangkan bahagiannya. Pelayan dan pelanggan harus dapat berkomunikasi antara satu sama lain melalui rangkaian peribadi. Anda boleh menggunakan alamat IP awam dan mengkonfigurasi firewall pelayan untuk membenarkan lalu lintas di port 2049
hanya dari sumber yang dipercayai.
Mesin dalam contoh ini mempunyai IP berikut:
IP Pelayan NFS: 192.168.33.10 IP Pelanggan NFS: Dari 192.168.33.Julat 0/24
Sediakan NFS Server #
Langkah pertama ialah menyediakan pelayan NFS. Kami akan memasang pakej yang diperlukan, membuat dan mengeksport direktori NFS, dan mengkonfigurasi firewall.
Memasang pelayan NFS #
Pakej pelayan NFS menyediakan sokongan ruang pengguna yang diperlukan untuk menjalankan pelayan kernel NFS. Untuk memasang pakej, jalankan:
sudo apt kemas kini
sudo apt pasang nfs-kernel-server
Setelah pemasangan selesai, perkhidmatan NFS akan bermula secara automatik.
Di Ubuntu 20.04, NFS versi 2 dilumpuhkan. Versi 3 dan 4 diaktifkan. Anda boleh mengesahkannya dengan menjalankan perkara berikut kucing
arahan:
sudo cat / proc / fs / nfsd / versi
-2 +3 +4 +4.1 +4.2
NFSv2 sudah cukup tua sekarang, dan tidak ada alasan untuk mengaktifkannya.
Konfigurasi pelayan NFS ditakrifkan dalam / etc / default / nfs-kernel-pelayan
dan / etc / default / nfs-common
fail. Tetapan lalai mencukupi untuk kebanyakan keadaan.
Membuat sistem fail #
Pelayan NFSv4 menggunakan direktori root global, dan direktori yang dieksport adalah relatif dengan direktori ini. Anda boleh mengaitkan titik tambah bahagian ke direktori yang ingin anda eksport menggunakan mount bind.
Dalam contoh ini, kami akan menetapkan / srv / nfs4
direktori sebagai NFS root. Untuk menerangkan dengan lebih baik bagaimana pemasangan NFS dapat dikonfigurasi, kami akan berkongsi dua direktori (/ var / www
dan / opt / sandaran
) dengan tetapan konfigurasi yang berbeza. The / var / www /
dimiliki oleh pengguna www-data
, dan / opt / sandaran
dimiliki oleh akar
.
Mula-mula buat direktori root dan kongsi titik tambah:
sudo mkdir -p / srv / nfs4 / sandaran
sudo mkdir -p / srv / nfs4 / www
Ikuti pemasangan direktori ke titik tambah bahagian:
sudo mount --bind / opt / backups / srv / nfs4 / backup
sudo mount --bind / var / www / srv / nfs4 / www
Untuk menjadikan pengikat tetap kekal di but semula, buka / etc / fstab
fail:
sudo nano / etc / fstab
dan tambahkan baris berikut:
/ etc / fstab/ opt / sandaran / srv / nfs4 / sandaran tidak mengikat 0 0 / var / www / srv / nfs4 / www tidak mengikat 0 0
Mengeksport sistem fail #
Langkah seterusnya adalah menambahkan sistem fail yang akan dieksport dan klien dibenarkan mengakses saham tersebut ke / dll / eksport
fail.
Setiap baris untuk sistem fail yang dieksport mempunyai bentuk berikut:
hos eksport (pilihan)
Di mana eksport
adalah direktori yang dieksport, tuan rumah
adalah nama host atau alamat / julat IP yang dapat mengakses eksport, dan pilihan
adalah pilihan hos.
Buka / dll / eksport
fail dan tambahkan baris berikut:
sudo nano / etc / eksport
/ dll / eksport/ srv / nfs4 192.168.33.0/24 (rw, sync, no_subtree_check, crossmnt, fsid = 0) / srv / nfs4 / sandaran 192.168.33.0/24 (ro, segerak, no_subtree_check) 192.168.33.3 (rw, sync, no_subtree_check) / srv / nfs4 / www 192.168.33.20 (rw, segerak, no_subtree_check)
Baris pertama mengandungi fsid = 0
pilihan, yang menentukan direktori root NFS (/ srv / nfs4
). Akses ke volume NFS ini hanya dibenarkan kepada pelanggan dari 192.168.33.0/24
subnet. The hantaran silang
pilihan diperlukan untuk berkongsi direktori yang merupakan sub-direktori dari direktori yang dieksport.
Baris kedua menunjukkan bagaimana menentukan beberapa peraturan eksport untuk satu sistem fail. Akses membaca dibenarkan secara keseluruhan 192.168.33.0/24
pelbagai, dan kedua-dua akses membaca dan menulis hanya ke 192.168.33.3
alamat IP. The segerak
pilihan memberitahu NFS untuk menulis perubahan pada cakera sebelum membalas.
Baris terakhir adalah jelas. Untuk maklumat lebih lanjut mengenai semua jenis pilihan yang ada lelaki mengeksport
di terminal anda.
Simpan fail dan eksport saham:
sudo exportfs -ar
Anda perlu menjalankan perintah di atas setiap kali anda mengubah suai / dll / eksport
fail. Sekiranya terdapat kesilapan atau amaran, ia akan ditunjukkan di terminal.
Untuk melihat eksport aktif semasa dan keadaannya, gunakan:
sudo exportfs -v
Hasilnya akan merangkumi semua saham dengan opsyen mereka. Seperti yang anda lihat ada juga pilihan yang belum kami tentukan di / dll / eksport
fail. Itu adalah pilihan lalai dan jika anda ingin mengubahnya, anda perlu menetapkan pilihan tersebut secara jelas.
/ srv / nfs4 / sandaran 192.168.33.3 (rw, wdelay, root_squash, no_subtree_check, sec = sys, rw, safe, root_squash, no_all_squash) / srv / nfs4 / www 192.168.33.20 (rw, wdelay, root_squash, no_subtree_check, sec = sys, rw, safe, root_squash, no_all_squash) / srv / nfs4 192.168.33.0/24 (rw, wdelay, crossmnt, root_squash, no_subtree_check, fsid = 0, sec = sys, rw, safe, root_squash, no_all_squash) / srv / nfs4 / sandaran 192.168.33.0/24 (ro, wdelay, root_squash, no_subtree_check, sec = sys, ro, safe, root_squash, no_all_squash)
Di Ubuntu, root_squash
diaktifkan secara lalai. Ini adalah salah satu pilihan yang paling penting mengenai keselamatan NFS. Ini menghalang pengguna root yang terhubung dari klien daripada mempunyai hak root pada saham yang dipasang dengan memetakan root UID
dan GID
ke tiada siapa
/nogroup
UID
/GID
.
Agar pengguna di mesin pelanggan dapat mengakses, NFS mengharapkan ID pengguna dan kumpulan pengguna sesuai dengan yang ada di pelayan. Pilihan lain adalah menggunakan ciri pemetaan id NFSv4 yang menerjemahkan ID pengguna dan kumpulan menjadi nama dan sebaliknya.
Itu sahaja. Pada ketika ini, anda telah menyediakan pelayan NFS pada pelayan Ubuntu anda. Anda kini boleh beralih ke langkah seterusnya dan mengkonfigurasi klien dan menyambung ke pelayan NFS.
Konfigurasi Firewall #
Sekiranya anda memasang Jenkins pada pelayan Ubuntu jauh yang dilindungi oleh firewall, anda perlu mengaktifkan lalu lintas di port NFS:
sudo ufw membenarkan dari 192.168.33.0/24 ke mana-mana port nfs
Sahkan perubahan:
status sudo ufw
Hasilnya harus menunjukkan bahawa lalu lintas di pelabuhan 2049
dibenarkan:
Untuk Bertindak Dari - ------ ---- 2049 ELAUN 192.168.33.0/24 22 / tcp BENARKAN Di mana sahaja 22 / tcp (v6) Bolehkan di mana sahaja (v6)
Sediakan Pelanggan NFS #
Sekarang setelah pelayan NFS disiapkan dan saham dieksport, langkah seterusnya adalah mengkonfigurasi klien dan memasang sistem fail jauh.
Kami akan memfokuskan pada sistem Linux, tetapi anda juga boleh memasang bahagian NFS pada mesin macOS dan Windows.
Memasang pelanggan NFS #
Pada mesin pelanggan, kita hanya perlu memasang alat yang diperlukan untuk memasang sistem fail NFS jauh.
Pasang klien NFS di Debian dan Ubuntu
Nama pakej yang merangkumi program untuk memasang sistem fail NFS pada pengedaran berasaskan Debian adalah
nfs-biasa
. Untuk memasangnya, jalankan:sudo apt kemas kini
sudo apt pasang nfs-common
Pasang klien NFS di CentOS dan Fedora
Pada Red Hat dan turunannya, pasang
nfs-perkakas
pakej:sudo yum pasang nfs-utils
Pemasangan sistem fail #
Kami akan mengusahakan mesin pelanggan dengan IP 192.168.33.20
, yang mempunyai akses membaca dan menulis ke / srv / nfs4 / www
sistem fail dan akses baca sahaja ke / srv / nfs4 / sandaran
sistem fail.
Buat dua direktori baru untuk titik pemasangan:
sudo mkdir -p / sandaran
sudo mkdir -p / srv / www
Anda boleh membuat direktori di mana-mana lokasi yang anda mahukan.
Pasang sistem fail yang dieksport dengan melekap
arahan:
sudo mount -t nfs -o vers = 4 192.168.33.10: / sandaran / sandaran
sudo mount -t nfs -o vers = 4 192.168.33.10: / www / srv / www
Di mana 192.168.33.10
adalah IP pelayan NFS. Anda juga boleh menggunakan nama host dan bukan alamat IP, tetapi perlu diselesaikan oleh mesin pelanggan. Ini biasanya dilakukan dengan memetakan nama host ke IP di / dll / tuan rumah
fail.
Semasa memasang sistem fail NFSv4, hilangkan direktori root NFS. Gunakan / sandaran
, bukannya / srv / nfs4 / sandaran
.
Sahkan bahawa sistem fail jauh dipasang dengan baik menggunakan mount atau df
arahan:
df -h
Perintah akan mencetak semua sistem fail yang dipasang. Dua baris terakhir adalah saham yang dipasang:
Saiz Sistem Filem Digunakan Avail Penggunaan% Dipasang pada udev 951M 0 951M 0% / dev tmpfs 199M 676K 199M 1% / run / dev / sda3 124G 2.8G 115G 3% / tmpfs 994M 0 994M 0% / dev / shm tmpfs 5.0M 0 5.0M 0% / run / lock tmpfs 994M 0 994M 0% / sys / fs / cgroup / dev / sda1 456M 197M 226M 47% / boot tmpfs 199M 0 199M 0% / run / user / 1000 192.168.33.10: / sandaran 124G 2.8G 115G 3% / sandaran 192.168.33.10: / www 124G 2.8G 115G 3% / srv / www
Untuk menjadikan mount tetap pada reboot, buka / etc / fstab
fail dan tambahkan baris berikut:
sudo nano / etc / fstab
/ etc / fstab192.168.33.10: / sandaran / sandaran nfs default, timeo = 900, retrans = 5, _netdev 0 0 192.168.33.10: / www / srv / www nfs lalai, timeo = 900, retrans = 5, _netdev 0 0
Untuk maklumat mengenai pilihan yang ada semasa memasang sistem fail NFS, ketik lelaki nfs
di terminal anda.
Pilihan lain untuk memasang sistem fail jauh adalah menggunakan salah satu autofs
alat atau untuk membuat unit systemd.
Menguji Akses NFS #
Mari kita uji akses ke saham dengan membuat fail baru pada setiap saham tersebut.
Pertama, cuba buat fail ujian ke / sandaran
direktori menggunakan sentuhan
arahan:
sudo sentuh / sandaran / ujian.txt
The / sandaran
sistem fail dieksport sebagai baca sahaja dan seperti yang dijangkakan anda akan melihat a Kebenaran ditolak
mesej ralat:
sentuh: tidak dapat menyentuh '/ sandaran / ujian': Kebenaran ditolak
Seterusnya, cuba buat fail ujian ke / srv / www
direktori sebagai root menggunakan sudo
arahan:
sudo touch / srv / www / test.txt
Sekali lagi, anda akan melihat Kebenaran ditolak
mesej.
sentuh: tidak dapat menyentuh '/ srv / www': Kebenaran ditolak
Sekiranya anda ingat, yang / var / www
direktori dimiliki oleh www-data
pengguna, dan bahagian ini mempunyai root_squash
set pilihan yang memetakan pengguna root ke tiada siapa
pengguna dan nogroup
kumpulan yang tidak mempunyai kebenaran menulis ke bahagian jauh.
Dengan andaian bahawa anda mempunyai www-data
gunakan pada mesin pelanggan dengan yang sama UID
dan GID
seperti pada pelayan jauh (yang seharusnya berlaku jika, misalnya, anda memasang nginx pada kedua mesin), anda boleh mencuba membuat fail sebagai pengguna www-data
:
sudo -u www-data touch / srv / www / test.txt
Perintah tidak akan menunjukkan output yang bermaksud fail berjaya dibuat.
Untuk mengesahkannya menyenaraikan fail di / srv / www
direktori:
ls -la / srv / www
Output harus menunjukkan fail yang baru dibuat:
drwxr-xr-x 3 www-data www-data 4096 10 Apr 22:18 . drwxr-xr-x 3 root root 4096 10 Apr 22: 29… -rw-r - r-- 1 www-data www-data 0 Apr 10 21:58 indeks.html -rw-r - r-- 1 www-data www-data 0 10 April 22:18 ujian.txt
Menghilangkan Sistem Fail NFS #
Sekiranya bahagian NFS jauh tidak diperlukan lagi, anda boleh melepaskannya seperti sistem fail lain yang dipasang menggunakan jumlahnya
perintah.
Sebagai contoh, untuk melepaskan pemasangan / sandaran
berkongsi, anda akan menjalankan:
sudo umount / sandaran
Sekiranya titik lekapan ditentukan dalam / etc / fstab
fail, pastikan anda membuang baris atau memberi komen dengan menambahkan #
pada awal baris.
Kesimpulan #
Kami telah menunjukkan kepada anda cara menyiapkan pelayan NFS dan cara memasang sistem fail jauh pada mesin pelanggan. Sekiranya anda melaksanakan NFS dalam pengeluaran dan berkongsi data yang masuk akal, ada baiknya anda mengaktifkan pengesahan kerberos.
Sebagai alternatif kepada NFS, anda boleh menggunakan SSHFS untuk memasang direktori jauh melalui sambungan SSH. SSHFS disulitkan secara lalai dan jauh lebih mudah untuk dikonfigurasi dan digunakan.
Jangan ragu untuk memberikan komen sekiranya anda mempunyai sebarang pertanyaan.