Cài đặt NFS Server trên Ubuntu 22.04: NFS Client

bởi | LPI, Ubuntu

Home » LPI » Ubuntu » Cài đặt NFS Server trên Ubuntu 22.04: NFS Client

Chuẩn bị

– Sơ đồ bài lab

+----------------------+          |          +-------------------------+
| [    NFS Server    ] |10.0.0.8 | 10.0.0.51| [    NFS Client    ]    |
|nfs.dinhducthanh.local+----------+----------+client.dinhducthanh.local|
+----------------------+                     +-------------------------+

– Đã cài NFS Server như bài: Cài đặt NFS Server trên Ubuntu 22.04

– Cấu hình 2 card mạng cho NFS Client

root@localhost:~# cat /etc/netplan/01-netcfg.yaml
network:
  ethernets:
    ens33:
      dhcp4: false
      addresses: [192.168.64.51/24]
      routes:
        - to: default
          via: 192.168.64.2
          metric: 100
      nameservers:
        addresses: [192.168.64.3,8.8.8.8]
      dhcp6: false
  version: 2

network:
  ethernets:
    ens37:
      dhcp4: false
      addresses: [10.0.0.51/24]
      nameservers:
         addresses: [10.0.0.3]
      dhcp6: false
  version: 2

– Đổi hostname, time zone

root@localhost:~# hostnamectl set-hostname client.dinhducthanh.local
root@localhost:~# timedatectl set-timezone Asia/Ho_Chi_Minh
root@localhost:~# reboot

– Đổi DNS server và thử truy vấn DNS

root@client:~# echo "nameserver 10.0.0.3" > /etc/resolv.conf
root@client:~# host -t A nfs.dinhducthanh.local
nfs.dinhducthanh.local has address 10.0.0.8

Cài đặt và cấu hình NFS Client

– install nfs-common

root@client:~# apt -y install nfs-common

– cấu hình NFS Client

root@client:~# vi /etc/idmapd.conf
# line 5 : bỏ comment và đổi thành domain name của bạn
Domain = dinhducthanh.local

– mount ổ nfs share vào máy

root@client:~# mount -t nfs nfs.dinhducthanh.local:/home/nfsshare /mnt
root@client:~# df -hT
Filesystem                            Type   Size  Used Avail Use% Mounted on
tmpfs                                 tmpfs  388M  1.6M  387M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv     ext4   9.8G  3.2G  6.1G  35% /
tmpfs                                 tmpfs  1.9G     0  1.9G   0% /dev/shm
tmpfs                                 tmpfs  5.0M     0  5.0M   0% /run/lock
/dev/sda2                             ext4   1.8G  130M  1.5G   8% /boot
tmpfs                                 tmpfs  388M  4.0K  388M   1% /run/user/1000
nfs.dinhducthanh.local:/home/nfsshare nfs4   9.8G  3.4G  5.9G  37% /mnt
# NFS share đã được mount

+ Nếu muốn mount với NFSv3, có thể thêm tùy chọn [-o vers=3]

root@client:~# mount -t nfs -o vers=3 nfs.dinhducthanh.local:/home/nfsshare /mnt

– Để tự động mount khi hệ thống khởi động. Cấu hình trong [/etc/fstab].

root@client:~# vi /etc/fstab
# add to the end : set NFS share
nfs.dinhducthanh.local:/home/nfsshare /mnt               nfs     defaults        0 0


– Để mount động khi có ai đó access vào NFS Share, Cấu hình AutoFS.

root@client:~# apt -y install autofs
root@client:~# vi /etc/auto.master
# Thêm vào cuối
/-    /etc/auto.mount
root@client:~# vi /etc/auto.mount
# Tạo mới : [mount point] [option] [location]
/mnt   -fstype=nfs,rw  nfs.dinhducthanh.local:/home/nfsshare
root@client:~# systemctl restart autofs

+ di chuyển đến vị trí mount để verify mounting

root@client:~# cd /mnt
root@client:/mnt# df -h /mnt
Filesystem                             Size  Used Avail Use% Mounted on
nfs.dinhducthanh.local:/home/nfsshare  9.8G  3.9G  5.4G  42% /mnt
root@client:/mnt# grep /mnt /proc/mounts
/etc/auto.mount /mnt autofs rw,relatime,fd=6,pgrp=3637,timeout=300,minproto=5,maxproto=5,direct,pipe_ino=50628 0 0
nfs.dinhducthanh.local:/home/nfsshare /mnt nfs4 rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.0.0.51,local_lock=none,addr=10.0.0.8 0 0

NFS 4 ACL Tool

Thiết đặt NFS 4 ACL Tool để đặt ACL (Access Control Lists) trên hệ thống tệp NFS (v4)

Cài đặt

– Cài đặt NFS 4 ACL Tool trên các NFS client mount NFS share với NFSv4.

root@client:~# apt -y install nfs4-acl-tools

– Kiểm tra folder nfs share.

root@client:~# df -hT /mnt
Filesystem                            Type  Size  Used Avail Use% Mounted on
nfs.dinhducthanh.local:/home/nfsshare nfs4  9.8G  3.9G  5.4G  42% /mnt
root@client:~# ll /mnt
total 12
drwxr-xr-x  3 root root 4096 May 18 13:21 ./
drwxr-xr-x 20 root root 4096 May  3 13:43 ../
drwxr-xr-x  2 root root 4096 May 18 13:19 testdir/
-rw-r--r--  1 root root    0 May 18 13:15 testfile.txt

– Hiển thị ACL của tệp hoặc thư mục trên hệ thống tệp NFSv4.

root@client:~# nfs4_getfacl /mnt/testfile.txt

A::OWNER@:rwatTcCy
A::GROUP@:rtcy
A::EVERYONE@:rtcy

root@client:~# nfs4_getfacl /mnt/testdir

A::OWNER@:rwaDxtTcCy
A::GROUP@:rxtcy
A::EVERYONE@:rxtcy

# mỗi mục có nghĩa như sau
# ACE = Access Control Entry
# (ACE Type):(ACE Flags):(ACE Principal):(ACE Permissions)

Description

ACE Type
A A = Allow : it means Allow accesses.
D D = Deny : it means Deny accesses.

ACE Flags
d Directory-Inherit : New sub-directory kế thừa cùng một ACE.
f File-Inherit : New file kế thừa cùng một ACE nhưng không kế thừa inheritance-flag.
n No-Propogate-Inherit : New sub-directory kế thừa cùng một ACE nhưng không kế thừa inheritance-flag.
i Inherit-Only : New file/sub-directory kế thừa cùng một ACE nhưng directory này nhưng không có ACE.

ACE Principal
(USER)@(NFSDomain): Người dùng chung. Đối với [NFSDomain], nó chỉ là Tên miền được chỉ định cho giá trị [Domain] trong [idmapd.conf].
(GROUP)@(NFSDomain): Nhóm chung. Đối với group, chỉ định flag [g] như sau ⇒ A:g:GROUP@NFSDomain:rxtncy
OWNER@: Sở hữu chính đặc biệt Owner
GROUP@: Sở hữu chính đặc biệt Group
EVERYONE@: Sở hữu chính đặc biệt Everyone

ACE Permissions
r Read dữ liệu của files / Hiển thị files trong directory
w Write dữ liệu vào files / Tạo files mới directory
a Nối dữ liệu vào files / Tạo mới sub-directory
x Thực thi files / Thay đổi directory
d Xóa files or directories
D Xóa files hoặc sub-directories trong directory
t Read thuộc tính của files hoặc directories
T Write thuộc tính của files hoặc directories
n Read tên thuộc tính của files or directories
N Write tên thuộc tính của files or directories
c Read ACL của files hoặc directories
C Write ACL của files hoặc directories
o Thay đổi ownership của files hoặc directories

ACE Permissions Aliases
Để sử dụng nfs4_setfacl, có thể sử dụng Alias cho ACE Permissions
R R = rntcy : Generic Read
W W = watTNcCy : Generic Write
X X = xtcy : Generic Execute

Cấu hình

– Thêm hoặc xóa ACE.

root@client:~# ll /mnt
total 12
drwxr-xr-x  3 root root 4096 May 18 13:21 ./
drwxr-xr-x 20 root root 4096 May  3 13:43 ../
drwxr-xr-x  2 root root 4096 May 18 13:19 testdir/
-rw-r--r--  1 root root    0 May 18 13:15 testfile.txt

root@client:~# nfs4_getfacl /mnt/testfile.txt

A::OWNER@:rwatTcCy
A::GROUP@:rtcy
A::EVERYONE@:rtcy

+ Thêm quyền read/execute cho user [ubuntu] vào file [/mnt/testfile.txt]

root@client:~# nfs4_setfacl -a A::ubuntu@dinhducthanh.local:rxtncy /mnt/testfile.txt

root@client:~# nfs4_getfacl /mnt/testfile.txt

D::OWNER@:x
A::OWNER@:rwatTcCy
A::1000:rxtcy
A::GROUP@:rtcy
A::EVERYONE@:rtcy

+ Kiểm tra lai với user [ubuntu]

ubuntu@client:~$ ll /mnt
total 12
drwxr-xr-x  3 root root 4096 May 18 13:21 ./
drwxr-xr-x 20 root root 4096 May  3 13:43 ../
drwxr-xr-x  2 root root 4096 May 18 13:19 testdir/
-rw-r-xr--  1 root root    0 May 18 13:15 testfile.txt*

ubuntu@client:~$ cat /mnt/testfile.txt
test file

+ xóa quyền read/execute cho user [ubuntu] từ file [/mnt/testfile.txt]

root@client:~# nfs4_setfacl -x A::1000:rxtcy /mnt/testfile.txt
root@client:~# nfs4_getfacl /mnt/testfile.txt

A::OWNER@:rwatTcCy
A::GROUP@:rtcy
A::EVERYONE@:rtcy

– Chỉnh sửa ACL trực tiếp.

root@client:~# nfs4_setfacl -e /mnt/testfile.txt

# chạy một trình soạn thảo trên $EDITOR (if null, mặc định là [vi] editor)
## Chỉnh sửa NFSv4 ACL cho file: /mnt/testfile.txt
A::OWNER@:rwatTcCy
A::GROUP@:rtcy
A::EVERYONE@:rtcy

– Add ACE từ 1 file.
+ Tạo ACL list

root@client:~# vi acl.txt
A::ubuntu@dinhducthanh.local:RX
A::root@dinhducthanh.local:RWX

+ add ACL từ file

root@client:~# nfs4_setfacl -A acl.txt /mnt/testfile.txt
root@client:~# nfs4_getfacl /mnt/testfile.txt

D::OWNER@:x
A::OWNER@:rwatTcCy
A::0:rwaxtcy
A::1000:rxtcy
A::GROUP@:rtcy
A::EVERYONE@:rtcy

– Thay thế ACE hiện tại bằng ACE mới.

+ tạo ACL mới

root@client:~# vi acl2.txt
A::OWNER@:rwaxtTcCy
A::GROUP@:tcy
A::EVERYONE@:tcy

+ thay thế ACL từ file

root@client:~# nfs4_setfacl -S acl2.txt /mnt/testfile.txt

root@client:~# nfs4_getfacl /mnt/testfile.txt

A::OWNER@:rwaxtTcCy
A::GROUP@:tcy
A::EVERYONE@:tcy

– Thay thế ACE cụ thể trong một ACE

root@client:~# nfs4_getfacl /mnt/testfile.txt

A::OWNER@:rwaxtTcCy
A::GROUP@:tcy
A::EVERYONE@:tcy

+ Thay thế ACE của EVERYONE để read/execute

root@client:~# nfs4_setfacl -m A::EVERYONE@:tcy A::EVERYONE@:RX /mnt/testfile.txt

root@client:~# nfs4_getfacl /mnt/testfile.txt

A::OWNER@:rwaxtTcCy
A::GROUP@:rxtcy
A::EVERYONE@:rxtcy

Tham khảo thêm

Cài đặt ban đầu Ubuntu 22.04: Enable root user

Cài đặt ban đầu Ubuntu 22.04: Network Settings

Cài đặt DNS Server trên Ubuntu 22.04: Internal Network