Android

วิธีการติดตั้งและกำหนดค่าเซิร์ฟเวอร์ nfs บน Ubuntu 18.04

รำหน้าไฟ ทราวดี โรงเรียนเชียงคาน

รำหน้าไฟ ทราวดี โรงเรียนเชียงคาน

สารบัญ:

Anonim

Network File System (NFS) เป็นโปรโตคอลระบบไฟล์แบบกระจายที่ช่วยให้คุณแบ่งปันไดเรกทอรีระยะไกลผ่านเครือข่าย ด้วย NFS คุณสามารถติดตั้งรีโมตไดเร็กทอรีบนระบบของคุณและทำงานกับไฟล์บนเครื่องรีโมตราวกับว่าเป็นไฟล์โลคัล

โปรโตคอล NFS ไม่ได้เข้ารหัสตามค่าเริ่มต้นและไม่เหมือนกับ Samba แต่ไม่ได้ให้การรับรองความถูกต้องของผู้ใช้ การเข้าถึงเซิร์ฟเวอร์ถูก จำกัด โดยที่อยู่ IP ของลูกค้าหรือชื่อโฮสต์

ในบทช่วยสอนนี้เราจะอธิบายวิธีตั้งค่าเซิร์ฟเวอร์ NFSv4 บน Ubuntu 18.04 นอกจากนี้เราจะแสดงวิธีติดตั้งระบบไฟล์ NFS ให้กับลูกค้า

ข้อกำหนดเบื้องต้น

ตัวอย่างนี้สมมติว่าคุณมีเซิร์ฟเวอร์หนึ่งตัวที่ใช้ Ubuntu 18.04 และอีกเซิร์ฟเวอร์หนึ่งที่ใช้งาน Linux อื่น ๆ เซิร์ฟเวอร์และไคลเอนต์ควรสามารถสื่อสารกันผ่านเครือข่ายส่วนตัว หากผู้ให้บริการโฮสต์ของคุณไม่ได้ให้ที่อยู่ IP ส่วนตัวคุณสามารถใช้ที่อยู่ IP สาธารณะและกำหนดค่าไฟร์วอลล์เซิร์ฟเวอร์เพื่ออนุญาตการรับส่งข้อมูลบนพอร์ต 2049 จากแหล่งที่เชื่อถือได้เท่านั้น

เครื่องจักรในตัวอย่างนี้มี IP ดังต่อไปนี้:

NFS Server IP: 192.168.33.10 NFS Clients IPs: From the 192.168.33.0/24 range

ตั้งค่าเซิร์ฟเวอร์ NFS

เราจะเริ่มต้นด้วยการติดตั้งและกำหนดค่าเซิร์ฟเวอร์ NFS

การติดตั้งเซิร์ฟเวอร์ NFS

รีเฟรชดัชนีแพ็กเกจและติดตั้งแพ็กเกจเซิร์ฟเวอร์ NFS:

sudo apt update sudo apt install nfs-kernel-server

เมื่อการติดตั้งเสร็จสิ้นบริการ NFS จะเริ่มต้นโดยอัตโนมัติ

โดยค่าเริ่มต้นบน Ubuntu 18.04 NFS เวอร์ชัน 2 ถูกปิดใช้งาน เปิดใช้งานเวอร์ชัน 3 และ 4 คุณสามารถตรวจสอบได้โดยการเรียกใช้คำสั่ง cat ต่อไปนี้:

sudo cat /proc/fs/nfsd/versions

-2 +3 +4 +4.1 +4.2

ตอนนี้ NFSv2 ค่อนข้างเก่าและไม่มีเหตุผลที่จะเปิดใช้งาน

ตัวเลือกการกำหนดค่าเซิร์ฟเวอร์ NFS ตั้งอยู่ในไฟล์ /etc/default/nfs-kernel-server และ /etc/default/nfs-common files การตั้งค่าเริ่มต้นเพียงพอในกรณีของเรา

การสร้างระบบไฟล์

เมื่อกำหนดค่าเซิร์ฟเวอร์ NFSv4 เป็นแนวปฏิบัติที่ดีคือการใช้ไดเรกทอรีราก NFS ทั่วโลกและผูกติดไดเรกทอรีจริงไปยังจุดเชื่อมต่อที่ใช้ร่วมกัน ในตัวอย่างนี้เราจะใช้ /srv/nfs4 Director เป็น NFS root

เราจะแบ่งปันสองไดเรกทอรี ( /var/www และ /opt/backups ) ด้วยการตั้งค่าการกำหนดค่าที่แตกต่างกันเพื่ออธิบายวิธีที่ NFS mounts สามารถกำหนดค่าได้ดียิ่งขึ้น

/var/www/ เป็นของผู้ใช้และกลุ่ม www-data และ /opt/backups เป็นของ root

สร้างระบบไฟล์การส่งออกโดยใช้คำสั่ง mkdir :

sudo mkdir -p /srv/nfs4/backups sudo mkdir -p /srv/nfs4/www

กำหนดไดเรกทอรีจริง:

sudo mount --bind /opt/backups /srv/nfs4/backups sudo mount --bind /var/www /srv/nfs4/www

หากต้องการทำให้การเชื่อมโยงเชื่อมโยงถาวรให้เปิดไฟล์ /etc/fstab :

sudo nano /etc/fstab

และเพิ่มบรรทัดต่อไปนี้:

/ etc / fstab

/opt/backups /srv/nfs4/backups none bind 0 0 /var/www /srv/nfs4/www none bind 0 0

การเอ็กซ์พอร์ตระบบไฟล์

ขั้นตอนต่อไปคือการกำหนดระบบไฟล์ที่จะส่งออกโดยเซิร์ฟเวอร์ NFS ตัวเลือกการแบ่งใช้และไคลเอนต์ที่ได้รับอนุญาตให้เข้าถึงระบบไฟล์เหล่านั้น ในการเปิดไฟล์ /etc/exports ดังนี้

sudo nano /etc/exports ไฟล์ /etc/exports ยังมีความคิดเห็นที่อธิบายถึงวิธีการส่งออกไดเรกทอรี

ในกรณีของเราเราจำเป็นต้องส่งออกไดเรกทอรี www และการ backups และอนุญาตให้เข้าถึงได้เฉพาะจากลูกค้าในเครือข่าย 192.168.33.0/24 :

/ etc / ส่งออก

/srv/nfs4 192.168.33.0/24(rw, sync, no_subtree_check, crossmnt, fsid=0) /srv/nfs4/backups 192.168.33.0/24(ro, sync, no_subtree_check) 192.168.33.3(rw, sync, no_subtree_check) /srv/nfs4/www 192.168.33.110(rw, sync, no_subtree_check)

บรรทัดแรกมี fsid=0 ซึ่งกำหนดไดเรกทอรีราก NFS /srv/nfs การเข้าถึงไดรฟ์ข้อมูล NFS นี้อนุญาตให้ไคลเอนต์จากเครือข่ายย่อย 192.168.33.0/24 เท่านั้น จำเป็นต้องใช้ตัวเลือก crossmnt เพื่อแชร์ไดเรกทอรีที่เป็นไดเรกทอรีย่อยของไดเรกทอรีที่ส่งออก

ในบรรทัดที่สองแสดงวิธีระบุกฎการส่งออกหลายกฎสำหรับระบบไฟล์เดียว มันส่งออก /srv/nfs4/backups และอนุญาตให้เข้าถึงแบบอ่านทั้งหมดในช่วง 192.168.33.0/24 ทั้งอ่านและเขียนเข้าถึง 192.168.33.3 เท่านั้น ตัวเลือกการ sync บอกให้ NFS เขียนการเปลี่ยนแปลงไปยังดิสก์ก่อนตอบกลับ

บรรทัดสุดท้ายควรอธิบายตนเอง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกทั้งหมดที่มีให้พิมพ์ man exports ในเทอร์มินัลของคุณ

บันทึกไฟล์และส่งออกการแชร์:

sudo exportfs -ra

คุณต้องรันคำสั่งด้านบนทุกครั้งที่คุณแก้ไขไฟล์ /etc/exports หากมีข้อผิดพลาดหรือคำเตือนใด ๆ พวกเขาจะปรากฏบนเครื่อง

หากต้องการดูการส่งออกที่ใช้งานอยู่ในปัจจุบันและสถานะให้ใช้:

sudo exportfs -v

ผลลัพธ์จะรวมการแชร์ทั้งหมดด้วยตัวเลือก อย่างที่คุณเห็นมีตัวเลือกที่เราไม่ได้กำหนดในไฟล์ /etc/exports สิ่งเหล่านี้เป็นตัวเลือกเริ่มต้นและหากคุณต้องการเปลี่ยนคุณจะต้องตั้งค่าตัวเลือกเหล่านั้นอย่างชัดเจน

/srv/nfs4/backups 192.168.33.3(rw, wdelay, root_squash, no_subtree_check, sec=sys, rw, secure, root_squash, no_all_squash) /srv/nfs4/www 192.168.33.110(rw, wdelay, root_squash, no_subtree_check, sec=sys, rw, secure, 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, secure, root_squash, no_all_squash) /srv/nfs4/backups 192.168.33.0/24(ro, wdelay, root_squash, no_subtree_check, sec=sys, ro, secure, root_squash, no_all_squash)

บน Ubuntu รูทสค root_squash จะถูกเปิดใช้งานตามค่าเริ่มต้น นี่เป็นหนึ่งในตัวเลือกที่สำคัญที่สุดเกี่ยวกับความปลอดภัยของ NFS จะป้องกันผู้ใช้รูทที่เชื่อมต่อจากไคลเอนต์เพื่อรับสิทธิ์รูทในการแชร์ที่เมาท์ มันจะแม็ UID และ GID กับ nobody / nogroup UID / GID

เพื่อให้ผู้ใช้บนเครื่องไคลเอ็นต์มีการเข้าถึง NFS คาดว่าผู้ใช้และ ID กลุ่มของลูกค้าจะจับคู่กับผู้ใช้บนเซิร์ฟเวอร์ อีกทางเลือกหนึ่งคือการใช้คุณสมบัติการทำแผนที่ NFSv4 ที่แปล ID ผู้ใช้และกลุ่มเป็นชื่อและวิธีอื่น ๆ

แค่นั้นแหละ. ณ จุดนี้คุณได้ตั้งค่าเซิร์ฟเวอร์ NFS บนเซิร์ฟเวอร์ Ubuntu ของคุณ ตอนนี้คุณสามารถย้ายไปยังขั้นตอนถัดไปและกำหนดค่าไคลเอนต์และเชื่อมต่อกับเซิร์ฟเวอร์ NFS

การกำหนดค่าไฟร์วอลล์

สมมติว่าคุณกำลังใช้ UFW เพื่อจัดการไฟร์วอลล์ของคุณเพื่ออนุญาตการเข้าถึงจากเครือข่ายย่อย 192.168.33.0/24 คุณต้องเรียกใช้คำสั่งต่อไปนี้:

sudo ufw allow from 192.168.33.0/24 to any port nfs

ในการตรวจสอบการเปลี่ยนแปลงให้ทำดังนี้

sudo ufw status

ผลลัพธ์ควรแสดงว่าทราฟฟิกบนพอร์ต 2049 ได้รับอนุญาต:

To Action From -- ------ ---- 2049 ALLOW 192.168.33.0/24 22/tcp ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6)

ตั้งค่าไคลเอ็นต์ NFS

ในตอนนี้เซิร์ฟเวอร์ NFS ได้รับการตั้งค่าแล้วการแชร์จะถูกส่งออกในขั้นตอนต่อไปกำหนดค่าไคลเอนต์และติดตั้งระบบไฟล์ระยะไกล

นอกจากนี้คุณยังสามารถกำหนดใช้ NFS แชร์บนเครื่อง macOS และ Windows แต่เราจะเน้นไปที่ระบบ Linux

การติดตั้งไคลเอนต์ NFS

บนเครื่องไคลเอนต์เราจำเป็นต้องติดตั้งเฉพาะเครื่องมือที่จำเป็นในการเมาท์ระบบไฟล์ NFS ระยะไกล

  • ติดตั้งไคลเอนต์ NFS บน Debian และ Ubuntu

    ชื่อของแพ็กเกจที่มีโปรแกรมสำหรับการเมาท์ระบบไฟล์ NFS บนการแจกแจงแบบเดเบียนคือ nfs-common หากต้องการติดตั้งให้เรียกใช้:

    sudo apt update sudo apt install nfs-common

    ติดตั้งไคลเอนต์ NFS บน CentOS และ Fedora

    บน Red Hat และอนุพันธ์ติดตั้งแพ็คเกจ nfs-utils :

    sudo yum install nfs-utils

ติดตั้งระบบไฟล์

เราจะทำงานบนเครื่องไคลเอนต์ที่มี IP 192.168.33.110 ซึ่งมีการอ่านและเขียนการเข้าถึงระบบไฟล์ /srv/nfs4/www และอ่านเฉพาะการเข้าถึงระบบไฟล์ /srv/nfs4/backups

สร้างสองไดเรกทอรีใหม่สำหรับจุดเชื่อมต่อ คุณสามารถสร้างไดเรกทอรีนี้ได้ทุกที่ที่คุณต้องการ

sudo mkdir -p /backups sudo mkdir -p /srv/www

เมาท์ระบบไฟล์ที่เอ็กซ์พอร์ตด้วยคำสั่ง mount :

sudo mount -t nfs -o vers=4 192.168.33.10:/backups /backups sudo mount -t nfs -o vers=4 192.168.33.10:/www /srv/www

โดยที่ 192.168.33.10 เป็น IP ของเซิร์ฟเวอร์ NFS นอกจากนี้คุณยังสามารถใช้ชื่อโฮสต์แทนที่อยู่ IP แต่ต้องได้รับการแก้ไขโดยเครื่องไคลเอนต์ โดยปกติจะทำโดยการแม็พชื่อโฮสต์กับ IP ในไฟล์ /etc/hosts

เมื่อติดตั้งระบบไฟล์ NFSv4 คุณต้อง ommit ไดเร็กทอรี root ของ NFS ดังนั้นแทนที่จะเป็น /srv/nfs4/backups คุณต้องใช้ /backups

ตรวจสอบว่าระบบไฟล์รีโมตถูกเมาต์สำเร็จโดยใช้คำสั่ง mount หรือ df :

df -h

คำสั่งจะพิมพ์ระบบไฟล์ที่เมาท์ทั้งหมด สองบรรทัดสุดท้ายคือการแบ่งใช้ที่เมาท์:

Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 38G 1.7G 36G 5% / devtmpfs 236M 0 236M 0% /dev tmpfs 244M 0 244M 0% /dev/shm tmpfs 244M 4.5M 240M 2% /run tmpfs 244M 0 244M 0% /sys/fs/cgroup /dev/sda2 1014M 87M 928M 9% /boot tmpfs 49M 0 49M 0% /run/user/1000 192.168.33.10:/backups 9.7G 1.2G 8.5G 13% /backups 192.168.33.10:/www 9.7G 1.2G 8.5G 13% /srv/www

หากต้องการทำให้การเมาต์เป็นแบบถาวรเมื่อรีบูตให้เปิดไฟล์ /etc/fstab :

sudo nano /etc/fstab

และเพิ่มบรรทัดต่อไปนี้:

/ etc / fstab

192.168.33.10:/backups /backups nfs defaults, timeo=900, retrans=5, _netdev 0 0 192.168.33.10:/www /srv/www nfs defaults, timeo=900, retrans=5, _netdev 0 0

ในการค้นหาข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกที่มีอยู่เมื่อติดตั้งระบบไฟล์ NFS ให้พิมพ์ man nfs ในเทอร์มินัลของคุณ

ตัวเลือกอื่นสำหรับเมาท์ระบบไฟล์รีโมตคือการใช้เครื่องมือ autofs หรือเพื่อสร้าง systemd unit

ทดสอบการเข้าถึง NFS

ลองทดสอบการเข้าถึงการแชร์โดยการสร้างไฟล์ใหม่ให้กับแต่ละไฟล์

ก่อนอื่นให้ลองสร้างไฟล์ทดสอบไปยังไดเร็กทอรี /backups โดยใช้คำสั่ง touch :

sudo touch /backups/test.txt

ระบบไฟล์ /backup ถูกส่งออกเป็นแบบอ่านอย่างเดียวและอย่างที่คาดไว้คุณจะเห็นข้อความแสดงข้อผิดพลาดที่ Permission denied :

touch: cannot touch '/backups/test': Permission denied

จากนั้นลองสร้างไฟล์ทดสอบไปยังไดเร็กทอรี /srv/www เป็นรูทโดยใช้คำสั่ง sudo :

sudo touch /srv/www/test.txt

อีกครั้งคุณจะเห็นข้อความ Permission denied

touch: cannot touch '/srv/www': Permission denied

สมมติว่าคุณมีข้อมูล www-data ใช้บนเครื่องไคลเอนต์ที่มี UID และ GID เดียวกันกับเซิร์ฟเวอร์ระยะไกล (ซึ่งควรเป็นกรณีตัวอย่างเช่นหากคุณติดตั้ง nginx บนเครื่องทั้งสอง) คุณสามารถทดสอบเพื่อสร้างไฟล์ในฐานะผู้ใช้ www-data ด้วย:

sudo -u www-data touch /srv/www/test.txt

คำสั่งจะไม่แสดงผลลัพธ์ซึ่งหมายความว่าไฟล์ถูกสร้างขึ้นสำเร็จ

หากต้องการตรวจสอบรายการไฟล์ในไดเร็กทอรี /srv/www :

ls -la /srv/www

ผลลัพธ์ควรแสดงไฟล์ที่สร้างขึ้นใหม่:

drwxr-xr-x 3 www-data www-data 4096 Jun 23 22:18. drwxr-xr-x 3 root root 4096 Jun 23 22:29.. -rw-r--r-- 1 www-data www-data 0 Jun 23 21:58 index.html -rw-r--r-- 1 www-data www-data 0 Jun 23 22:18 test.txt

การถอนติดตั้งระบบไฟล์ NFS

sudo umount /backups

หากกำหนดจุดเชื่อมต่อในไฟล์ /etc/fstab ตรวจสอบให้แน่ใจว่าคุณลบบรรทัดหรือใส่ความคิดเห็นโดยเพิ่ม # ที่จุดเริ่มต้นของบรรทัด

ข้อสรุป

ในบทช่วยสอนนี้เราได้แสดงวิธีการตั้งค่าเซิร์ฟเวอร์ NFS และวิธีการติดตั้งระบบไฟล์ระยะไกลบนเครื่องไคลเอนต์ หากคุณกำลังใช้งาน NFS ในการผลิตและการแบ่งปันข้อมูลที่เหมาะสมเป็นความคิดที่ดีที่จะเปิดใช้งานการรับรองความถูกต้องของ Kerberos

เป็นทางเลือกแทน NFS คุณสามารถใช้ SSHFS เพื่อเมานต์รีโมตไดเร็กทอรีผ่านการเชื่อมต่อ SSH SSHFS ถูกเข้ารหัสโดยค่าเริ่มต้นและง่ายต่อการกำหนดค่าและใช้งาน

อย่าลังเลที่จะแสดงความคิดเห็นหากคุณมีคำถามใด ๆ

เทอร์มินัลติดตั้ง Ubuntu nfs