在進(jìn)一步深入之前,請(qǐng)確保你可使用 Samba 服務(wù)和 NFS 服務(wù)(注意在 RHEL 7 中 NFSv2 已不再被支持)。
在本次指導(dǎo)中,我們將使用一個(gè)IP 地址為 192.168.0.10 且同時(shí)運(yùn)行著 Samba 服務(wù)和 NFS 服務(wù)的機(jī)器來(lái)作為服務(wù)器,使用一個(gè) IP 地址為 192.168.0.18 的 RHEL 7 機(jī)器來(lái)作為客戶端。在這篇文章的后面部分,我們將告訴你在客戶端上你需要安裝哪些軟件包。
從 RHEL 7 開(kāi)始,由于 XFS 的高性能和可擴(kuò)展性,它已經(jīng)被作為所有的架構(gòu)中的默認(rèn)文件系統(tǒng)。根據(jù) Red Hat 及其合作伙伴在主流硬件上執(zhí)行的最新測(cè)試,當(dāng)前 XFS 已支持最大為 500 TB 大小的文件系統(tǒng)。
另外,XFS 啟用了 user_xattr
(擴(kuò)展用戶屬性) 和 acl
(POSIX 訪問(wèn)控制列表)來(lái)作為默認(rèn)的掛載選項(xiàng),而不像 ext3 或 ext4(對(duì)于 RHEL 7 來(lái)說(shuō),ext2 已過(guò)時(shí)),這意味著當(dāng)掛載一個(gè) XFS 文件系統(tǒng)時(shí),你不必顯式地在命令行或 /etc/fstab 中指定這些選項(xiàng)(假如你想在后一種情況下禁用這些選項(xiàng),你必須顯式地使用 no_acl
和 no_user_xattr
)。
請(qǐng)記住擴(kuò)展用戶屬性可以給文件和目錄指定,用來(lái)存儲(chǔ)任意的額外信息如 mime 類(lèi)型,字符集或文件的編碼,而用戶屬性中的訪問(wèn)權(quán)限由一般的文件權(quán)限位來(lái)定義。
作為一名系統(tǒng)管理員,無(wú)論你是新手還是專家,你一定非常熟悉與文件和目錄有關(guān)的常規(guī)訪問(wèn)權(quán)限,這些權(quán)限為所有者,所有組和“世界”(所有的其他人)指定了特定的權(quán)限(可讀,可寫(xiě)及可執(zhí)行)。但如若你需要稍微更新下你的記憶,請(qǐng)參考 RHCSA 系列(三).
但是,由于標(biāo)準(zhǔn)的 ugo/rwx
集合并不允許為不同的用戶配置不同的權(quán)限,所以 ACL 便被引入了進(jìn)來(lái),為的是為文件和目錄定義更加詳細(xì)的訪問(wèn)權(quán)限,而不僅僅是這些特別指定的特定權(quán)限。
事實(shí)上, ACL 定義的權(quán)限是由文件權(quán)限位所特別指定的權(quán)限的一個(gè)超集。下面就讓我們看看這個(gè)轉(zhuǎn)換是如何在真實(shí)世界中被應(yīng)用的吧。
存在兩種類(lèi)型的 ACL:訪問(wèn) ACL,可被應(yīng)用到一個(gè)特定的文件或目錄上;以及默認(rèn) ACL,只可被應(yīng)用到一個(gè)目錄上。假如目錄中的文件沒(méi)有 ACL,則它們將繼承它們的父目錄的默認(rèn) ACL 。
從一開(kāi)始, ACL 就可以為每個(gè)用戶,每個(gè)組或不在文件所屬組中的用戶配置相應(yīng)的權(quán)限。
ACL 可使用 setfacl
來(lái)設(shè)置(和移除),可相應(yīng)地使用 -m 或 -x 選項(xiàng)。
例如,讓我們創(chuàng)建一個(gè)名為 tecmint 的組,并將用戶 johndoe 和 davenull 加入該組:
#groupadd tecmint
#useradd johndoe
#useradd davenull
#usermod-a -G tecmint johndoe
#usermod-a -G tecmint davenull
并且讓我們檢驗(yàn)這兩個(gè)用戶都已屬于追加的組 tecmint:
#id johndoe
#id davenull
檢驗(yàn)用戶
現(xiàn)在,我們?cè)?/mnt 下創(chuàng)建一個(gè)名為 playground 的目錄,并在該目錄下創(chuàng)建一個(gè)名為 testfile.txt 的文件。我們將設(shè)定該文件的屬組為 tecmint,并更改它的默認(rèn) ugo/rwx
權(quán)限為 770(即賦予該文件的屬主和屬組可讀、可寫(xiě)和可執(zhí)行權(quán)限):
#mkdir/mnt/playground
#touch/mnt/playground/testfile.txt
#chown:tecmint /mnt/playground/testfile.txt
#chmod770/mnt/playground/testfile.txt
接著,依次切換為 johndoe 和 davenull 用戶,并在文件中寫(xiě)入一些信息:
#su johndoe
$ echo"My name is John Doe">/mnt/playground/testfile.txt
$ su davenull
$ echo"My name is Dave Null">>/mnt/playground/testfile.txt
到目前為止,一切正常,F(xiàn)在我們讓用戶 gacanepa 來(lái)向該文件執(zhí)行寫(xiě)操作 – 則寫(xiě)操作將會(huì)失敗,這是可以預(yù)料的。
$ su gacanepa
$ echo"My name is Gabriel Canepa">>/mnt/playground/testfile.txt
管理用戶的權(quán)限
但實(shí)際上我們需要用戶 gacanepa(他不是組 tecmint 的成員)在文件 /mnt/playground/testfile.txt 上有寫(xiě)權(quán)限,那又該怎么辦呢?首先映入你腦海里的可能是將該用戶添加到組 tecmint 中。但那將使得他在所有該組具有寫(xiě)權(quán)限位的文件上均擁有寫(xiě)權(quán)限,但我們并不想這樣,我們只想他能夠在文件 /mnt/playground/testfile.txt 上有寫(xiě)權(quán)限。
現(xiàn)在,讓我們給用戶 gacanepa 在 /mnt/playground/testfile.txt 文件上有讀和寫(xiě)權(quán)限。
以 root 的身份運(yùn)行如下命令:
#setfacl-R -m u:gacanepa:rwx /mnt/playground
則你將成功地添加一條 ACL,允許 gacanepa 對(duì)那個(gè)測(cè)試文件可寫(xiě)。然后切換為 gacanepa 用戶,并再次嘗試向該文件寫(xiě)入一些信息:
$ echo"My name is Gabriel Canepa">>/mnt/playground/testfile.txt
要觀察一個(gè)特定的文件或目錄的 ACL,可以使用 getfacl
命令:
# getfacl /mnt/playground/testfile.txt
檢查文件的 ACL
要為目錄設(shè)定默認(rèn) ACL(它的內(nèi)容將被該目錄下的文件繼承,除非另外被覆寫(xiě)),在規(guī)則前添加 d:
并特別指定一個(gè)目錄名,而不是文件名:
#setfacl-m d:o:r /mnt/playground
上面的 ACL 將允許不在屬組中的用戶對(duì)目錄 /mnt/playground 中的內(nèi)容有讀權(quán)限。請(qǐng)注意觀察這次更改前后 getfacl /mnt/playground
的輸出結(jié)果的不同:
在 Linux 中設(shè)定默認(rèn) ACL
在官方的 RHEL 7 存儲(chǔ)管理指導(dǎo)手冊(cè)的第 20 章 中提供了更多有關(guān) ACL 的例子,我極力推薦你看一看它并將它放在身邊作為參考。
2015職稱計(jì)算機(jī)考試書(shū)PowerPoint2007中 .. 定價(jià):¥45 優(yōu)惠價(jià):¥42 更多書(shū)籍 | |
2015年全國(guó)職稱計(jì)算機(jī)考試教材(2007模 .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書(shū)籍 |