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