One place for hosting & domains

      Mount

      Cara Menyiapkan Mount NFS di Ubuntu 20.04


      Pengantar

      NFS, atau Sistem Berkas Jaringan, adalah protokol sistem berkas terdistribusi yang memungkinkan Anda untuk melakukan mount direktori jauh di server Anda. Ini memungkinkan Anda mengelola ruang penyimpanan di lokasi berbeda dan menulis ke ruang itu dari beberapa klien. NFS menyediakan cara yang relatif standar dan efektif untuk mengakses sistem jauh melalui jaringan dan berfungsi dengan baik ketika harus mengakses sumber daya bersama secara rutin.

      Dalam panduan ini, kita akan membahas cara menginstal perangkat lunak yang dibutuhkan untuk fungsionalitas NFS di Ubuntu 20.04, mengonfigurasi dua mount NFS di server dan klien, serta cara melakukan mount dan unmount direktori jauh bersama.

      Prasyarat

      Kita akan menggunakan dua server dalam tutorial ini, dengan satu bagian sistem berkas yang digunakan bersama. Untuk mengikuti, Anda akan membutuhkan:

      • Dua server Ubuntu 20.04. Masing-masing server ini harus memiliki pengguna non-root dengan privilese sudo, firewall yang disiapkan dengan UFW, dan jaringan privat, jika tersedia.

        • Untuk menyiapkan pengguna non-root dengan privilese sudo dan firewall, ikuti panduan Penyiapan Server Awal dengan Ubuntu 20.04 dari kami.
        • Jika Anda menggunakan DigitalOcean Droplets untuk server dan klien, Anda dapat membaca lebih lanjut tentang menyiapkan jaringan privat dalam dokumentasi kami mengenai Cara Membuat VPC.

      Sepanjang tutorial ini, kita merujuk ke server yang berbagi direktori sebagai hos dan server yang melakukan mount direktori ini sebagai klien. Anda perlu mengetahui alamat IP keduanya. Pastikan menggunakan alamat jaringan privat, jika tersedia.

      Sepanjang tutorial, kita akan merujuk ke alamat IP ini dengan tempat teks host_ip dan client_ip. Gantilah bila perlu.

      Langkah 1 — Mengunduh dan Menginstal Komponen

      Kita akan mulai dengan menginstal komponen yang diperlukan di setiap server.

      Di Hos

      Di server hos, instal paket nfs-kernel-server, yang akan memungkinkan Anda berbagi direktori. Karena ini adalah operasi pertama yang Anda lakukan dengan apt di sesi ini, perbarui indeks paket lokal Anda sebelum instalasi:

      • sudo apt update
      • sudo apt install nfs-kernel-server

      Setelah paket-paket ini diinstal, beralihlah ke server klien.

      Di Klien

      Di server klien, kita perlu menginstal paket bernama nfs-common yang menyediakan fungsionalitas NFS tanpa menyertakan komponen server apa pun. Sekali lagi, perbarui indeks paket lokal sebelum instalasi untuk memastikan Anda memiliki informasi terbaru:

      • sudo apt update
      • sudo apt install nfs-common

      Karena kedua server memiliki paket yang diperlukan, kita dapat mulai mengonfigurasinya.

      Langkah 2 — Membuat Direktori Bersama di Hos

      Kita akan berbagi dua direktori terpisah, dengan pengaturan konfigurasi yang berbeda, untuk menggambarkan dua cara utama mengonfigurasi mount NFS berkenaan dengan akses superuser.

      Superuser dapat melakukan apa saja di sistem mereka. Walau demikian, direktori yang melakukan mount NFS bukanlah bagian dari sistem tempat direktori itu di-mount, jadi secara asali, server NFS menolak melakukan operasi yang membutuhkan privilese superuser. Pembatasan asali ini berarti superuser di klien tidak dapat menulis berkas sebagai root, menetapkan ulang kepemilikan, atau melakukan tugas superuser lainnya pada mount NFS.

      Walau demikian, terkadang ada pengguna tepercaya di sistem klien yang perlu melakukan tindakan-tindakan ini di sistem berkas yang melakukan mount tetapi tidak perlu memiliki akses superuser di hos. Anda dapat mengonfigurasi server NFS untuk mengizinkan hal ini, walaupun menimbulkan unsur risiko, karena pengguna tersebut _dapat _memperoleh akses root ke seluruh sistem hos.

      Contoh 1: Mengekspor Mount Serbaguna

      Dalam contoh pertama, kita akan membuat mount NFS serbaguna yang menggunakan perilaku NFS asali untuk mempersulit pengguna dengan privilese root di mesin klien dalam berinteraksi dengan hos menggunakan privilese superuser klien tersebut. Anda dapat menggunakan sesuatu seperti ini untuk menyimpan berkas yang diunggah menggunakan sistem manajemen konten atau membuat ruang bagi pengguna agar mudah berbagi berkas proyek.

      Pertama-tama, buat direktori bersama:

      • sudo mkdir /var/nfs/general -p

      Karena kita membuatnya dengan sudo, direktori dimiliki oleh pengguna root hos:

      Output

      drwxr-xr-x 2 root root 4096 May 14 18:36 .

      NFS akan menerjemahkan operasi root apa pun di klien ke kredensial nobody:nogroup sebagai tindakan keamanan. Karenanya, kita perlu mengubah kepemilikan direktori agar sesuai dengan kredensial itu.

      • sudo chown nobody:nogroup /var/nfs/general

      Sekarang Anda siap mengekspor direktori ini.

      Contoh 2: Mengekspor Direktori Rumah

      Dalam contoh kedua, tujuannya adalah membuat direktori rumah pengguna yang disimpan di hos tersedia di server klien, sekaligus memberikan akses yang dibutuhkan administrator tepercaya dari server klien tersebut untuk mengelola pengguna dengan mudah.

      Untuk melakukannya, kita akan mengekspor direktori /home. Karena sudah ada, kita tidak perlu membuatnya. Kita juga tidak akan mengubah izinnya. Jika dilakukan, ini dapat menyebabkan serangkaian masalah bagi siapa saja yang memiliki direktori rumah di mesin hos tersebut.

      Langkah 3 — Mengonfigurasi Ekspor NFS di Server Hos

      Selanjutnya, kita akan masuk ke dalam berkas konfigurasi NFS untuk persiapan berbagi sumber daya ini.

      Di mesin hos, buka berkas /etc/export dalam editor teks Anda dengan privilese root:

      Berkas itu memiliki komentar yang menunjukkan struktur umum setiap baris konfigurasi. Sintaksnya adalah sebagai berikut:

      /etc/exports

      directory_to_share    client(share_option1,...,share_optionN)
      

      Kita perlu membuat sebuah baris untuk setiap direktori yang rencananya akan kita gunakan bersama. Pastikan mengubah tempat teks client_ip yang ditunjukkan di sini ke alamat IP Anda yang sebenarnya:

      /etc/exports

      /var/nfs/general    client_ip(rw,sync,no_subtree_check)
      /home               client_ip(rw,sync,no_root_squash,no_subtree_check)
      

      Di sini, kita menggunakan opsi konfigurasi yang sama untuk kedua direktori dengan pengecualian no_root_squash. Mari kita lihat arti setiap opsi ini:

      • rw: Opsi ini memberi komputer klien dengan akses baca dan tulis ke volume.
      • sync: Opsi ini memaksa NFS menulis perubahan ke diska sebelum menjawab. Ini menghasilkan lingkungan yang lebih stabil dan konsisten karena balasan tersebut mencerminkan kondisi aktual dari volume jauh. Namun, hal ini juga mengurangi kecepatan operasi berkas.
      • no_subtree_check: Opsi ini mencegah pemeriksaan subtree, yaitu suatu proses ketika hos harus memeriksa apakah berkas tersebut benar-benar masih tersedia di tree yang diekspor untuk setiap permintaan. Hal ini dapat menyebabkan banyak masalah bila berkas diubah namanya ketika klien telah dibuka. Dalam kebanyakan kasus, lebih baik menonaktifkan pemeriksaan subtree.
      • no_root_squash: Secara asali, NFS menerjemahkan permintaan pengguna root dari jauh menjadi pengguna non-privilese di server. Cara ini dimaksudkan sebagai fitur keamanan untuk mencegah akun root di klien menggunakan sistem berkas hos sebagai root. no_root_squash menonaktifkan perilaku ini untuk direktori bersama tertentu.

      Bila Anda selesai membuat perubahan, simpan dan tutup berkas tersebut. Lalu, untuk membuat direktori bersama dapat digunakan oleh klien yang Anda konfigurasi, mulai ulang server NFS dengan perintah berikut:

      • sudo systemctl restart nfs-kernel-server

      Namun, sebelum Anda dapat menggunakan direktori bersama yang baru, Anda perlu memastikan lalu lintas ke direktori bersama itu diizinkan oleh aturan firewall.

      Langkah 4 — Menyesuaikan Firewall di Hos

      Pertama-tama, mari kita periksa status firewall untuk melihat jika sudah diaktifkan dan, jika sudah, untuk melihat yang diizinkan saat ini:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)

      Di sistem kita, hanya lalu lintas SSH yang boleh melintas, sehingga kita perlu menambahkan aturan untuk lalu lintas NFS.

      Pada banyak aplikasi, Anda dapat menggunakan sudo ufw app list dan mengaktifkannya berdasarkan nama, tetapi nfs tidak termasuk. Namun, karena ufw juga memeriksa /etc/services untuk porta dan protokol layanan, kita masih dapat menambah NFS berdasarkan nama. Praktik terbaik menyarankan Anda untuk mengaktifkan aturan paling ketat yang akan tetap mengizinkan lalu lintas yang Anda inginkan, sehingga daripada mengaktifkan lalu lintas dari mana saja, kita akan lebih spesifik.

      Gunakan perintah berikut untuk membuka porta 2049 di hos, pastikan mengganti alamat IP klien Anda:

      • sudo ufw allow from client_ip to any port nfs

      Anda dapat memverifikasi perubahan dengan mengetik:

      Anda akan melihat lalu lintas yang diizinkan dari porta 2049 dalam keluaran:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 2049 ALLOW 203.0.113.24 OpenSSH (v6) ALLOW Anywhere (v6)

      Ini memastikan bahwa UFW hanya akan mengizinkan lalu lintas NFS di porta 2049 dari mesin klien kita.

      Langkah 5 — Membuat Titik Mount dan Melakukan Mount Direktori di Klien

      Karena kini server hos telah dikonfigurasi dan menyediakan direktori bersamanya, kita akan menyiapkan klien kita.

      Untuk membuat direktori jauh bersama di klien, kita perlu melakukan mount direktori di hos yang ingin dibagikan untuk mengosongkan direktori di klien.

      Catatan: Jika ada berkas dan direktori di titik mount, itu akan disembunyikan begitu Anda melakukan mount direktori bersama NFS. Untuk menghindari kehilangan berkas penting, pastikan direktori itu kosong jika Anda melakukan mount di direktori yang sudah ada.

      Kita akan membuat dua direktori untuk melakukan mount:

      • sudo mkdir -p /nfs/general
      • sudo mkdir -p /nfs/home

      Karena kini kita memiliki lokasi untuk memasukkan direktori jauh bersama dan telah membuka firewall, kita dapat melakukan mount direktori bersama menggunakan alamat IP server hos kita:

      • sudo mount host_ip:/var/nfs/general /nfs/general
      • sudo mount host_ip:/home /nfs/home

      Perintah ini akan melakukan mount direktori bersama dari komputer hos ke mesin klien. Anda dapat memeriksa lagi apakah direktori berhasil melakukan mount dengan beberapa cara. Anda dapat memeriksanya dengan perintah mount atau findmnt, tetapi df -h memberikan keluaran yang lebih mudah dibaca:

      Output

      Filesystem Size Used Avail Use% Mounted on udev 474M 0 474M 0% /dev tmpfs 99M 936K 98M 1% /run /dev/vda1 25G 1.8G 23G 8% / tmpfs 491M 0 491M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 491M 0 491M 0% /sys/fs/cgroup /dev/vda15 105M 3.9M 101M 4% /boot/efi tmpfs 99M 0 99M 0% /run/user/1000 10.132.212.247:/var/nfs/general 25G 1.8G 23G 8% /nfs/general 10.132.212.247:/home 25G 1.8G 23G 8% /nfs/home

      Kedua direktori bersama yang kita mount akan muncul di bagian bawah. Karena dilakukan mount dari sistem berkas yang sama, direktori itu akan menunjukkan penggunaan diska yang sama. Untuk melihat seberapa banyak ruang yang sesungguhnya digunakan di setiap titik mount, gunakan perintah penggunaan diska du dan jalur mount. Bendera -s memberikan ringkasan penggunaan, bukan menampilkan penggunaan untuk setiap berkas. -h mencetak keluaran yang mudah dipahami orang.

      Misalnya:

      Output

      36K /nfs/home

      Ini menunjukkan kepada kita seluruh isi direktori rumah hanya menggunakan 36K dari ruang yang tersedia.

      Langkah 6 — Menguji Akses NFS

      Selanjutnya, mari kita uji akses ke direktori bersama dengan menulis sesuatu untuk masing-masing direktori bersama.

      Contoh 1: Direktori Bersama Serbaguna

      Pertama-tama, tulis berkas percobaan ke direktori bersama /var/nfs/general:

      • sudo touch /nfs/general/general.test

      Lalu, periksa kepemilikannya:

      • ls -l /nfs/general/general.test

      Output

      -rw-r--r-- 1 nobody nogroup 0 Aug 1 13:31 /nfs/general/general.test

      Karena kita telah melakukan mount volume ini tanpa mengubah perilaku asali NFS dan membuat berkas sebagai pengguna root mesin klien melalui perintah sudo, kepemilikan berkas asali menjadi nobody:nogroup. Superuser klien tidak akan dapat melakukan tindakan administratif umum, seperti mengubah pemilik berkas atau membuat direktori baru untuk grup pengguna, di direktori bersama yang melakukan mount sebagai NFS.

      Contoh 2: Berbagi Direktori Rumah

      Untuk membandingkan izin direktori bersama Serbaguna dengan Direktori Rumah, buat berkas di /nfs/home dengan cara yang sama:

      • sudo touch /nfs/home/home.test

      Lalu, lihat kepemilikan berkas tersebut:

      • ls -l /nfs/home/home.test

      Output

      -rw-r--r-- 1 root root 0 Aug 1 13:32 /nfs/home/home.test

      Kita telah membuat home.test sebagai root menggunakan perintah sudo, persis sama caranya dengan membuat berkas general.test. Namun, dalam hal ini, berkas ini dimiliki oleh root karena kita mengesampingkan perilaku asali saat menetapkan opsi no_root_squash di mount ini. Hal ini memungkinkan pengguna root kita di mesin klien untuk bertindak sebagai root dan membuat administrasi akun pengguna menjadi jauh lebih mudah. Pada saat bersamaan, ini berarti kita tidak perlu memberi akses root kepada pengguna ini di hos.

      Langkah 7 — Melakukan Mount NFS di Direktori Jauh saat Boot

      Kita dapat melakukan mount NFS di direktori bersama jauh secara otomatis saat boot dengan menambahkannya ke berkas /etc/fstab pada klien.

      Buka berkas ini dengan privilese root di editor teks Anda:

      Di bagian bawah berkas, tambahkan baris untuk masing-masing direktori bersama kita. Hasilnya akan seperti ini:

      /etc/fstab

      . . .
      host_ip:/var/nfs/general    /nfs/general   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
      host_ip:/home               /nfs/home      nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
      
      

      Catatan: Anda dapat menemukan informasi lebih lanjut tentang opsi yang kita tetapkan di sini pada laman utama NFS. Anda dapat mengaksesnya dengan menjalankan perintah berikut:

      Klien akan secara otomatis melakukan mount partisi jauh saat boot, meskipun mungkin perlu beberapa waktu untuk membuat koneksi dan agar direktori bersama tersedia.

      Langkah 8 — Melakukan Unmount NFS di Direktori Bersama Jauh

      Jika tidak ingin direktori jauh melakukan mount di sistem, Anda dapat melakukan unmount dengan mengeluarkan struktur direktori bersama dan melakukan unmount, seperti ini:

      • cd ~
      • sudo umount /nfs/home
      • sudo umount /nfs/general

      Perhatikan bahwa perintah bernama umount tidak melakukan unmount seperti yang Anda harapkan.

      Perintah ini akan menghapus direktori bersama jauh, dengan membiarkan penyimpanan lokal saja yang dapat diakses:

      Output

      Filesystem Size Used Avail Use% Mounted on udev 474M 0 474M 0% /dev tmpfs 99M 936K 98M 1% /run /dev/vda1 25G 1.8G 23G 8% / tmpfs 491M 0 491M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 491M 0 491M 0% /sys/fs/cgroup /dev/vda15 105M 3.9M 101M 4% /boot/efi tmpfs 99M 0 99M 0% /run/user/1000

      Jika Anda juga ingin mencegah dilakukan mount kembali saat boot ulang berikutnya, edit /etc/fstab dan hapus baris tersebut atau jadikan komentar dengan menempatkan karakter # di awal baris. Anda juga dapat mencegah mount otomatis dengan menghapus opsi auto, yang akan memungkinkan Anda tetap dapat melakukan mount secara manual.

      Kesimpulan

      Dalam tutorial ini, kita telah membuat hos NFS dan menggambarkan beberapa perilaku utama NFS dengan membuat dua mount NFS berbeda, yang kita gunakan bersama dengan klien NFS.

      Jika Anda ingin menerapkan NFS dalam produksi, perlu diingat bahwa protokolnya tidak dienkripsi. Jika Anda berbagi melalui jaringan privat, mungkin tidak menjadi masalah. Dalam kasus lain, akan diperlukan VPN atau beberapa tipe terowongan terenkripsi untuk melindungi data Anda.



      Source link

      How to Configure Nextcloud to use Linode Object Storage as an External Storage Mount


      Updated by Linode

      Contributed by
      Linode

      Marquee image for How to Configure Nextcloud to use Linode Object Storage as an External Storage Mount

      Nextcloud is an open source solution for file hosting and sharing. With Nextcloud, you can synchronize files from a local computer to the Linode server and share them with collaborators. Nextcloud’s customizable security features and intuitive user interface keeps the files safe and easy to manage.

      You can configure Nextcloud to enable external storage devices and services, like Linode Object Storage, to use as a secondary place to store files. Using Linode Object Storage to store files prevents you from running out of storage space limited by the Linode’s plan size. When using Nextcloud’s graphical user interface (GUI) to manage files, the external storage device shows up just like any other folder.

      Before You Begin

      1. Deploy a Nextcloud server instance. You can use the Linode Nextcloud One-Click App for an easy and quick deployment.

      2. Enable the Object Storage service on your Linode account.

      3. Generate Object Storage access keys.

      4. If you are not familiar with Linode Object Storage, review the How to Use Linode Object Storage guide.

      In This Guide

      Nextcloud Configurations

      Enable the External Storage App

      In this section you enable the External Storage Support Nextcloud app in order to use external storage sources.

      Note

      You must belong to the admin user group in order to install the External storage support app.

      1. Log into your Nextcloud instance.

      2. Click the user icon (or cog wheel) in the top navigation menu and select Apps.

        Access Nextcloud App settings.

      3. Click Files to access all Nextcloud apps related to file management, in the left-hand navigation menu.

        Access the Files App settings.

      4. Use the search field in the top navigation to narrow down the visible apps. You can enter external as your search term.

      5. Viewing the External storage support app, click the Enable button in order to install it to the Nextcloud instance.

        Enable the external storage support app.

      Create a New Linode Object Storage External Storage Mount

      After enabling the External Storage Support app, you are now ready to add a new external storage mount. You configure the new external storage mount to use the Linode Object Storage service.

      Note

      1. Click the user icon (or cog wheel) in the top navigation menu and select Settings.

        Access Nextcloud settings.

      2. In the left-hand navigation menu, under the Administration heading, click External Storages. The External Storages administration page appears.

        Access external storage configurations.

      3. In the Folder name text entry box, provide a name for the external storage directory.

      4. From the External Storage dropdown menu, select the Amazon S3 option.

        Note

        Linode Object Storage is S3-compatible. Nextcloud connects to Amazon’s Object Storage service by default, however, in the next step you override the default behavior to use Linode Object Storage hosts instead.

      5. Select Access Key from the Authentication dropdown menu.

      6. Under the Configuration heading, provide the following configurations:

        Configuration Description
        Bucket The name to assign to the Object Storage bucket. If this bucket name already exists in the data center region you select, an error occurs.
        Hostname The hostname used for the Object Storage region where the bucket is be stored. Refer to the Linode Object Storage Region and Hostname Values note located below this table for available hostname values.
        Port The port number to use to access the Object Storage host. This value must be 443.
        Region The data center region to store your Object Storage bucket. Refer to the Linode Object Storage Region and Hostname Values note located below this table for available data center region IDs.
        Enable SSL A configuration to enable secure sockets layer (SSL). This configuration must be enabled.
        Enable Path Style This configuration changes the default path format used by Nextcloud to access the Object Storage bucket. Do not enable this configuration.
        Legacy (v2) Authentication This configuration enables version 2 authentication to the Object Storage service. By default Nextcloud uses version 4 authentication that is compatible with Linode Object Storage. Do not enable this configuration.
        Access Key The value of the Access Key you created using the Linode Cloud Manager.
        Secret Key The value of the Secret Key you created using the Linode Cloud Manager.



        Linode Object Storage Region and Hostname Values

        Region Region ID Hostname
        Newark, NJ, USA us-east-1 us-east-1.linodeobjects.com
        Frankfurt, Germany eu-central-1 eu-central-1.linodeobjects.com
        Singapore, Singapore ap-south-1 ap-south-1.linodeobjects.com
      7. In the Available for text entry box, enter the group name(s) you would like to give access to the Linode Object Storage external storage. To learn more about user and group permissions related to external storage, see Nextcloud’s documentation.

      8. Click the check icon to save the configurations. If all your configurations are valid, you should see a green check box appear next to the external storage entry.

        Save your external storage configurations.

      9. Using the top navigation menu, click the Files menu item. The external storage folder appears in the list of folders.

        Access all your Nextcloud files.

      10. Click the external storage folder to view its contents. You should not see anything stored there yet.

      11. Test out the external storage mount by adding a file to the folder. Click the + button in the top breadcrumbs area of the screen and select Upload file.

        Upload a file to your Linode Object Storage bucket.

      12. The local file browser appears. Select a test file to add to the external storage folder and click Open. The file appears in the folder.

        Your should see your uploaded file appear in the folder.

        Note

      More Information

      You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.

      This guide is published under a CC BY-ND 4.0 license.



      Source link

      Einrichten eines NFS Mount auf Ubuntu 20.04


      Einführung

      NFS oder Network File System ist ein verteiltes Dateisystem, das es Ihnen ermöglicht, remote Verzeichnisse auf Ihrem Server bereitzustellen. Auf diese Weise können Sie Speicherplatz an einem anderen Ort verwalten und in diesen Speicherplatz aus mehreren Clients schreiben. NFS bietet eine relativ gute Standardmöglichkeit, auf Remote-Systeme über ein Netzwerk zuzugreifen, und funktioniert gut in Situationen, in denen regelmäßig auf die geteilten Ressourcen zugegriffen werden muss.

      In diesem Leitfaden erfahren Sie, wie wir die für NFS benötigte Software auf Ubuntu 20.04 installieren, zwei NFS Mounts auf einem Server und Client installieren und die Remotefreigaben hinzufügen und entfernen.

      Voraussetzungen

      Wir nutzen in diesem Tutorial zwei Server. Davon teilt einer einen Teil seines Dateisystems mit dem anderen. Um dem Tutorial zu folgen, benötigen Sie Folgendes:

      • Zwei Ubuntu 20.04-Server. Jeder dieser Server sollte über einen Nicht-root-Benutzer mit sudo-Berechtigungen, eine mit UFW eingerichtete Firewall und ein privates Netzwerk verfügen, sofern dies Ihnen zur Verfügung steht.

      In diesem Tutorial verweisen wir auf den Server, der seine Verzeichnisse als Host teilt, und den Server, der diese Verzeichnisse als Client verbindet. Sie müssen die IP-Adresse für beide kennen. Nutzen Sie bei Bedarf die private Netzwerkadresse, sofern verfügbar.

      In diesem Tutorial verweisen wir auf diese IP-Adressen durch die Platzhalter host_ip und client_ip. Ersetzen Sie bei Bedarf.

      Schritt 1 – Herunterladen und Installieren der Komponenten

      Wir beginnen mit der Installation der erforderlichen Komponenten auf jedem Server.

      Auf dem Host

      Auf dem Host-Server installieren Sie das nfs-kernel-server Paket, das ermöglicht, Ihre Verzeichnisse freizugeben. Da dieser Vorgang die erste Ausführung mit apt in dieser Sitzung ist, aktualisieren Sie Ihren lokalen Paketindex vor der Installation:

      • sudo apt update
      • sudo apt install nfs-kernel-server

      Sobald diese Pakete installiert sind, wechseln zum Client-Server.

      Auf dem Client

      Auf dem Client-Server müssen wir ein Paket namens nfs-common installieren, das NFS bereitstellt, ohne Server-Komponenten. Aktualisieren Sie erneut den lokalen Paketindex vor der Installation, um sicherzustellen, dass Ihnen aktuelle Informationen angezeigt werden:

      • sudo apt update
      • sudo apt install nfs-common

      Nachdem beide Server über die erforderlichen Pakete verfügen, können wir die Konfiguration starten.

      Schritt 2 – Erstellen der Freigabeverzeichnisse auf dem Host

      Wir werden zwei separate Verzeichnisse mit verschiedenen Konfigurationseinstellungen freigeben, um zwei wesentliche Varianten zu zeigen, wie NFS-Verbindungen hinsichtlich des Superuser-Zugriffs konfiguriert werden können.

      Superuser können auf ihrem System alles überall tun. NFS-verbundene Verzeichnisse sind jedoch nicht Teil des Systems, auf dem sie verbunden werden. Standardmäßig lehnt der NFS-Server die Ausführung von Operationen ab, die Superuser-Berechtigungen erfordern. Diese Standardbeschränkung bedeutet, dass Superuser auf dem Client keine Dateien als root schreiben, die Eigentümerschaft nicht neu zuweisen oder sonstige andere Superuser-Aufgaben auf der NFS-Verbindung ausführen können.

      Manchmal gibt es jedoch vertrauenswürdige Benutzer auf dem Client-System, die diese Aktionen auf dem verbundenen Dateisystem ausführen müssen, aber keinen Superuser Zugriff auf den Host benötigen. Sie können den NFS-Server so konfigurieren, dass er dies erlaubt, obwohl ein Risikoelement eingeführt wird, da ein Benutzer root-Zugriff auf das gesamte Host-System erhalten könnte.

      Beispiel 1: Exportieren einer Allzweck-Verbindung

      Im ersten Beispiel erstellen wir eine Allzweck-NFS-Verbindung, die das Standard-NFS-Verhalten nutzt, das es einem Benutzer mit root-Berechtigungen auf dem Client-Computer erschwert, mit dem Host über diese Client-Superuser-Berechtigungen zu interagieren. Sie könnten etwas in dieser Art nutzen, um Dateien zu speichern, die über ein Content-Management-System hochgeladen wurden, oder um einen Platz für Benutzer zu erstellen, wo sie einfach Projektdateien teilen können.

      Erstellen Sie zuerst das Freigabe-Verzeichnis:

      • sudo mkdir /var/nfs/general -p

      Da wir es mit sudo erstellen, gehört das Verzeichnis dem root-Benutzer des Hosts:

      Output

      drwxr-xr-x 2 root root 4096 May 14 18:36 .

      NFS übersetzt alle root Operationen auf dem Client als Sicherheitsmaßnahme in die Berechtigungsdaten nobody:nogroup. Wir müssen daher die Verzeichniseigentümerschaft auf diese Berechtigungsdaten abstimmen.

      • sudo chown nobody:nogroup /var/nfs/general

      Sie können dieses Verzeichnis nun exportieren.

      Beispiel 2: Exportieren des Home-Verzeichnisses

      In unserem zweiten Beispiel geht es darum, Benutzerhauptverzeichnisse, die auf dem Host gespeichert sind, auf Client-Servern zur Verfügung zu stellen, wobei vertrauenswürdige Administratoren dieser Client-Server der Zugriff genehmigt wird, den sie brauchen, um Benutzer einfach zu verwalten.

      Dazu exportieren wir das Verzeichnis /home. Da es bereits vorhanden ist, müssen wir es nicht erstellen. Wir werden auch die Berechtigungen nicht ändern. Andernfalls könnte dies zu einer Reihe von Problemen für jeden mit einem Home-Verzeichnis auf dem Host-Computer führen.

      Schritt 3 – Konfigurieren der NFS-Exporte auf dem Host-Server

      Als Nächstes nehmen wir uns die NFS Konfigurationsdatei vor, um die Freigabe dieser Ressourcen einzurichten.

      Öffnen Sie die Datei /etc/exports auf dem Host-Computer in Ihrem Texteditor mit root-Berechtigungen:

      Die Datei enthält Kommentare, die die allgemeine Struktur der einzelnen Konfigurationszeilen zeigen. Die Syntax lautet wie folgt:

      /etc/exports

      directory_to_share    client(share_option1,...,share_optionN)
      

      Wir müssen eine Zeile für jedes der Verzeichnisse erstellen, die wir freigeben möchten. Stellen Sie sicher, dass der hier gezeigte Platzhalter client_ip in Ihre tatsächliche IP-Adresse geändert wird:

      /etc/exports

      /var/nfs/general    client_ip(rw,sync,no_subtree_check)
      /home               client_ip(rw,sync,no_root_squash,no_subtree_check)
      

      Wir nutzen hier die gleichen Konfigurationsoptionen für beide Verzeichnisse mit Ausnahme von no_root_squash. Wir wollen uns ansehen, was jede dieser Optionen bedeutet:

      • rw: Diese Option gibt dem Client-Computer sowohl den Lese- als auch den Schreibzugriff auf das Laufwerk.
      • sync: Diese Option zwingt NFS, vor dem Antworten Änderungen auf die Festplatte zu schreiben. Dies führt zu einer stabileren und konsistenteren Umgebung, da die Antwort den tatsächlichen Zustand des entfernten Laufwerks widerspiegelt. Es reduziert jedoch auch die Geschwindigkeit der Dateioperationen.
      • no_subtree_check: Diese Option verhindert die Teilbaum-Prüfung, ein Prozess, bei dem der Host überprüfen muss, ob die Datei für jede Anfrage tatsächlich auch immer noch im exportierten Baum verfügbar ist. Dies kann bei der Umbenennung einer Datei viele Probleme verursachen, wenn der Client sie geöffnet hat. In fast allen Fällen ist es besser, die Teilbaum-Prüfung zu deaktivieren.
      • no_root_squash: Standardmäßig übersetzt NFS Anfragen von einem root-Benutzer remote in einen nicht berechtigten Benutzer auf dem Server. Dies war als Sicherheitsfunktion bestimmt, um zu verhindern, dass ein root-Konto auf dem Client das Dateisystem des Host als root verwendet. no_root_squash deaktiviert dieses Verhalten für bestimmte Freigaben.

      Wenn Sie mit diesen Änderungen fertig sind, speichern und schließen Sie die Datei. Um die Freigaben den von Ihnen konfigurierten Clients dann zur Verfügung zu stellen, starten Sie den NFS-Server mit dem folgenden Befehl neu:

      • sudo systemctl restart nfs-kernel-server

      Bevor Sie jedoch die neuen Freigaben tatsächlich nutzen können, müssen Sie sicher sein, dass der Verkehr zu den Freigaben durch Firewall-Regeln zugelassen ist.

      Schritt 4 – Anpassen der Firewall auf dem Host

      Wir wollen zuerst den Firewall-Status überprüfen, ob dieser aktiviert ist, und wenn ja, sehen, was derzeit zugelassen ist:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)

      Auf unserem System ist nur SSH-Verkehr zugelassen. Daher müssen wir eine Regel für NFS hinzufügen.

      Bei vielen Anwendungen können Sie sudo ufw app list nutzen und sie nach dem Namen aktivieren, aber nfs gehört nicht dazu. Da ufw jedoch auch /etc/services für den Port und das Protokoll eines Dienstes überprüft, können wir auch weiterhin NFS nach dem Namen hinzufügen. Es wird empfohlen, die restriktivste Regel zu aktivieren, die den Datenverkehr, den Sie zulassen möchten, weiterhin erlaubt, statt Datenverkehr von überall her zuzulassen.

      Verwenden Sie den folgenden Befehl, um Port 2049 auf dem Host zu öffnen, wobei Sie Ihre Client-IP-Adresse ersetzen:

      • sudo ufw allow from client_ip to any port nfs

      Sie können die Änderung überprüfen, indem Sie Folgendes eingeben:

      Sie sollten der zulässigen Verkehr von Port 2049 in der Ausgabe sehen:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 2049 ALLOW 203.0.113.24 OpenSSH (v6) ALLOW Anywhere (v6)

      Damit wird bestätigt, dass UFW nur NFS-Verkehr an Port 2049 von unserem Client-Computer zulassen wird.

      Schritt 5 — Erstellen von Bereitstellungspunkten und Bereitstellen von Verzeichnissen auf dem Client

      Nachdem der Host-Server konfiguriert ist und seine Freigaben bedient, bereiten wir unseren Client vor.

      Um die Remote-Freigaben auf dem Client verfügbar zu machen, müssen wir die Verzeichnisse auf dem Host, die wir freigeben möchten, in leere Verzeichnisse auf dem Client bereitstellen.

      Anmerkung: Wenn es Dateien und Verzeichnisse in Ihrem Bereitstellungspunkt gibt, werden sie versteckt, wenn Sie die NFS-Freigabe bereitstellen. Um den Verlust wichtiger Dateien zu vermeiden, stellen Sie sicher, dass das vorhandene Verzeichnis, in das Sie bereitstellen möchten, leer ist.

      Wir erstellen zwei Verzeichnisse für unsere Bereitstellungen:

      • sudo mkdir -p /nfs/general
      • sudo mkdir -p /nfs/home

      Nachdem wir nun einen Ort haben, um die remote Freigaben zu platzieren und die Firewall geöffnet haben, können wir die Berechtigungen mit der IP-Adresse unseres Host-Servers bereitstellen:

      • sudo mount host_ip:/var/nfs/general /nfs/general
      • sudo mount host_ip:/home /nfs/home

      Über diese Befehle werden die Freigaben vom Host-Computer auf dem Client-Computer bereitgestellt. Es gibt mehrere Möglichkeiten, um zu überprüfen, ob die Bereitstellung erfolgreich war. Sie können dies mit einem mount– oder findmnt-Befehl überprüfen, df -h bietet jedoch eine besser lesbare Ausgabe:

      Output

      Filesystem Size Used Avail Use% Mounted on udev 474M 0 474M 0% /dev tmpfs 99M 936K 98M 1% /run /dev/vda1 25G 1.8G 23G 8% / tmpfs 491M 0 491M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 491M 0 491M 0% /sys/fs/cgroup /dev/vda15 105M 3.9M 101M 4% /boot/efi tmpfs 99M 0 99M 0% /run/user/1000 10.132.212.247:/var/nfs/general 25G 1.8G 23G 8% /nfs/general 10.132.212.247:/home 25G 1.8G 23G 8% /nfs/home

      Beide bereitgestellten Freigaben erscheinen unten. Da sie von dem gleichen Dateisystem bereitgestellt wurden, zeigen sie die gleiche Festplattennutzung. Um zu sehen, wie viel Speicherplatz tatsächlich in jedem Bereitstellungspunkt genutzt wird, verwenden Sie den Bereitstellungsbefehl du und den Pfad der Bereitstellung. Die Markierung -s liefert eine Zusammenfassung der Nutzung und nicht die Darstellung der Verwendung jeder Datei. -h druckt eine lesbare Ausgabe.

      Beispiel:

      Output

      36K /nfs/home

      Das zeigt uns, dass der Inhalt des gesamten Home-Verzeichnisses nur 36K des verfügbaren Platzes verwendet.

      Schritt 6 — Testen von NFS

      Als Nächstes testen wir den Zugriff auf die Freigaben, indem wir in jede von ihnen schreiben.

      Beispiel 1: Die Allzweck-Freigabe

      Schreiben Sie als erstes eine Testdatei in die Freigabe /var/nfs/general:

      • sudo touch /nfs/general/general.test

      Überprüfen Sie dann den Eigentümer:

      • ls -l /nfs/general/general.test

      Output

      -rw-r--r-- 1 nobody nogroup 0 Aug 1 13:31 /nfs/general/general.test

      Da wir dieses Volumen bereitgestellt haben, ohne das Standardverhalten von NFS zu ändern, und die Datei als root-Benutzer des Client-Computers über den sudo-Befehl erstellt haben, ist der Standardeigentümer nobody:nogroup. Client-Superuser können keine typischen administrativen Aktionen ausführen, wie z. B. das Ändern des Dateieigentümers oder das Erstellen eines neuen Verzeichnisses für eine Gruppe von Benutzern auf der NFS-bereitgestellten Freigabe.

      Beispiel 2: Die Home-Verzeichnis-Freigabe

      Um die Berechtigungen der Allzweck-Freigabe mit der Home-Verzeichnis-Freigabe zu vergleichen, erstellen Sie eine Datei auf gleiche Weise in /nfs/home:

      • sudo touch /nfs/home/home.test

      Sehen Sie sich dann den Eigentümer der Datei an:

      • ls -l /nfs/home/home.test

      Output

      -rw-r--r-- 1 root root 0 Aug 1 13:32 /nfs/home/home.test

      Wir haben home.test als root über den Befehl sudo erstellt, genau so, wie wie wir auch die Datei general.test erstellt haben. In diesem Fall ist der Eigentümer jedoch root, da wir das Standardverhalten überschrieben haben, als wir die Option no_root_squash in dieser Bereitstellung angaben. Dadurch können unsere root-Benutzer auf dem Client-Computer als root agieren, was die Verwaltung von Benutzerkonten wesentlich einfacher macht. Gleichzeitig bedeutet es, dass wir diesen Benutzern keinen root-Zugriff auf dem Host geben müssen.

      Schritt 7 — Bereitstellen der Remote-NFS-Verzeichnisse beim Boot

      Wir können die Remote-NFS-Freigaben automatisch beim Boot bereitstellen, indem wir sie in die /etc/fstab-Datei auf dem Client hinzufügen.

      Öffnen Sie diese Datei mit root-Berechtigungen in Ihrem Texteditor:

      Fügen Sie am Ende der Datei eine Zeile für jede unserer Freigaben hinzu Sie werden ungefähr so aussehen:

      /etc/fstab

      . . .
      host_ip:/var/nfs/general    /nfs/general   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
      host_ip:/home               /nfs/home      nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
      
      

      Anmerkung: Sie können mehr über die Optionen, die wir hier angeben, auf der NFS-Hauptseite finden. Sie können auf diese zugreifen, indem Sie den folgenden Befehl ausführen:

      Der Client wird die Remote-Partitionen automatisch beim Start bereitstellen. Es kann jedoch einige Momente dauern, bis die Verbindung hergestellt ist und die Freigaben verfügbar sind.

      Schritt 8 — Entfernen einer NFS-Remote-Freigabe

      Wenn Sie nicht mehr möchten, dass das Remote-Verzeichnis auf Ihrem System bereitgestellt wird, können Sie es entfernen, indem Sie die Verzeichnisstruktur der Freigabe folgendermaßen verlassen und entfernen:

      • cd ~
      • sudo umount /nfs/home
      • sudo umount /nfs/general

      Beachten Sie, dass der Befehl umount, nicht unmount lautet, wie Sie möglicherweise erwarten.

      Dadurch werden die Remote-Freigaben entfernt, sodass nur noch Ihr lokaler Speicher zugänglich ist:

      Output

      Filesystem Size Used Avail Use% Mounted on udev 474M 0 474M 0% /dev tmpfs 99M 936K 98M 1% /run /dev/vda1 25G 1.8G 23G 8% / tmpfs 491M 0 491M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 491M 0 491M 0% /sys/fs/cgroup /dev/vda15 105M 3.9M 101M 4% /boot/efi tmpfs 99M 0 99M 0% /run/user/1000

      Wenn Sie verhindern möchten, dass sie beim nächsten Neustart wieder hergestellt werden, bearbeiten Sie /etc/fstab und löschen oder kommentieren Sie die Zeile, indem Sie ein #-Zeichen am Anfang der Zeile einfügen. Außerdem können Sie eine automatische Bereitstellung verhindern, indem Sie die Option auto entfernen. Sie können immer noch eine manuelle Bereitstellung vornehmen.

      Zusammenfassung

      In diesem Tutorial haben wir einen NFS-Host erstellt und einige wichtige Verhaltensweisen von NFS gezeigt, indem wir zwei verschiedene NFS-Bereitstellungen erstellt haben, die wir mit einem NFS-Client teilten.

      Wenn Sie NFS in der Produktion implementieren möchten, ist es wichtig, zu beachten, dass das Protokoll selbst nicht verschlüsselt ist. In Fällen, in denen Sie über ein privates Netzwerk freigeben, ist dies kein Problem. In anderen Fällen ist ein VPN oder ein anderer verschlüsselter Tunnel erforderlich, um Ihre Daten zu schützen.



      Source link