在上一篇文章(RHCSA 系列第 6 部分)中,我們開始解釋如何使用 parted 和 ssm 設置和配置本地系統存儲。

我們還討論了如何在系統啟動時創建和掛載帶有密碼的加密卷。此外,我們警告您避免在已掛載的文件系統上執行關鍵存儲管理操作。考慮到這一點,我們現在將回顧在 Red Hat Enterprise Linux 7 中最常用的文件系統格式,然後繼續涵蓋手動和自動掛載、使用和 卸載 網絡文件系統(CIFS 和 NFS)的主題,以及實施訪問控制列表到您的系統。
先決條件
在繼續之前,請確保您有一個 Samba 伺服器和一個 NFS 伺服器可用(請注意 NFSv2 在 RHEL 7 中不再受支持)。
在本指南中,我們將使用一台機器,其 IP 為 192.168.0.10,並在其中運行兩個服務作為伺服器,以及一個 RHEL 7 機器作為客戶端,其 IP 地址為 192.168.0.18。文章後面我們將告訴您客戶端需要安裝哪些套件。
RHEL 7 中的文件系統格式
從RHEL 7開始,由於其高性能和可擴展性,XFS已被引入為所有架構的默認文件系統。根據Red Hat及其合作夥伴對主流硬件進行的最新測試,它目前支持最大文件系統大小為500 TB。
此外,XFS啟用了user_xattr(擴展用戶屬性)和acl(POSIX訪問控制列表)作為默認掛載選項,不像ext3或ext4(從RHEL 7開始,ext2被視為已棄用),這意味著在掛載XFS文件系統時,您無需在命令行或/etc/fstab中明確指定這些選項(如果您想在最後一種情況下禁用這些選項,您必須明確使用no_acl和no_user_xattr)。
請注意,擴展用戶屬性可以分配給文件和目錄,用於存儲任意額外信息,例如文件的MIME類型、字符集或編碼,而用戶屬性的訪問權限由常規文件權限位定義。
訪問控制列表
作為每個系統管理員,無論是新手還是專家,都對文件和目錄的通常存取權限非常熟悉,這些權限指定了某些权限(讀,寫,和執行)給所有者,群組和「全世界」(其他所有人)。然而,如果您需要稍微回憶一下,請自由查阅RHCSA系列第3部分。
然而,由於標準ugo/rwx設定不允許為不同用戶配置不同的權限,ACLs從而被引进,以為文件和目錄指定比通常權限位更詳細的存取權限。
實際上,由ACL定義的權限是 Specified by the file permission bits 的超集。讓我們看看這些应在现实世界中的应用。
1. 主要有兩種ACLs:訪問ACLs(可以應用於特定的文件或目錄),和預設ACLs(只能應用於目錄)。如果該目錄中的文件沒有ACL設定,它們會繼承它們父目錄的預設ACL。
2. 首先,ACL可以按用戶、群組或文件所有組外的用戶進行配置。
3. ACLs 是使用 setfacl 命令设置(和移除)的,分别使用 -m 和 -x 选项。
例如,让我们创建一个名为 tecmint 的组,并将用户 johndoe 和 davenull 添加到该组中:
# groupadd tecmint # useradd johndoe # useradd davenull # usermod -a -G tecmint johndoe # usermod -a -G tecmint davenull
然后验证两个用户是否属于附属组 tecmint:
# id johndoe # id davenull

现在,在 /mnt 目录下创建一个名为 playground 的目录,并在其中创建一个名为 testfile.txt 的文件。我们将把该文件的组所有者设置为 tecmint,并将其默认的 ugo/rwx 权限更改为 770(文件的所有者和组所有者都具有读取、写入和执行权限):
# mkdir /mnt/playground # touch /mnt/playground/testfile.txt # chmod 770 /mnt/playground/testfile.txt
然后按顺序切换用户为 johndoe 和 davenull,并向文件中写入内容:
echo "My name is John Doe" > /mnt/playground/testfile.txt echo "My name is Dave Null" >> /mnt/playground/testfile.txt
到目前为止一切正常。现在让用户 gacanepa 写入该文件,写操作将会失败,这是可以预料到的。
但是,如果我们确实需要用户 gacanepa(不是 tecmint 组的成员)对 /mnt/playground/testfile.txt 具有写权限怎么办?你可能首先想到的是将该用户添加到 tecmint 组。但是这样将会使他对所有设置了组的写权限的文件都具有写权限,这不是我们想要的。我们只想让他能够写入 /mnt/playground/testfile.txt 文件。
# touch /mnt/playground/testfile.txt # chown :tecmint /mnt/playground/testfile.txt # chmod 777 /mnt/playground/testfile.txt # su johndoe $ echo "My name is John Doe" > /mnt/playground/testfile.txt $ su davenull $ echo "My name is Dave Null" >> /mnt/playground/testfile.txt $ su gacanepa $ echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt

讓我們給用戶 gacanepa 對 /mnt/playground/testfile.txt 文件進行讀寫權限。
以 root 用戶運行,
# setfacl -R -m u:gacanepa:rwx /mnt/playground
你將成功地新增一個 ACL,允許 gacanepa 寫入測試文件。然後切換到用戶 gacanepa 並再次嘗試寫入文件:
$ echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt
要查看特定文件或目錄的 ACL,請使用 getfacl 命令:
# getfacl /mnt/playground/testfile.txt

要為目錄設定 默認 ACL(其內容將繼承,除非明確覆寫),在規則前添加 d:,並指定目錄而非文件名:
# setfacl -m d:o:r /mnt/playground
上面的 ACL 將允許非所有者組用戶讀取 /mnt/playground 目錄未來的內容。注意 getfacl /mnt/playground 命令 output 改變前後的不同:

RHEL 7 官方存儲管理指南的第 20 章 提供了更多 ACL 示例,我強烈建議你查看並將其作為參考手冊备用。
Source:
https://www.tecmint.com/rhcsa-exam-configure-acls-and-mount-nfs-samba-shares/