ACL權限的設定:
一個使用者對一個徑物而言,擁有下列三種身分的其中一種:即「擁有者」、「群組」、「外人」。上述的權限設定,就是為了這三種身分來設定的。而Linux還有更細部的權限設定,可以將某使用者設定為徑物的「特定人士」、或是將某群組設定為徑物的「特定群組」,其對此徑物擁有的權限也可以獨立於前述的三種身分,另設一個「特定人士權限」或「特定群組權限」。這個機制稱為「ACL(access control list)機制」。因此,這個特定權限也被稱為「ACL權限」。通常只有root與徑物的擁有者可以設定徑物的ACL權限。
※註:並不是所有的Linux版本都預設開啟或支援ACL。若沒有支援ACL,在使用以下說明的指令時,可能會出現類似這樣的字眼:
Operation not supported
這時,可開啟/etc/fstab檔案,在檔案最下方加上一行:
LABEL=/1 / ext3 defaults,acl 1 1
再重新開機,通常就沒問題了。
(1) 設定一個徑物的ACL權限,語法有:
(1-1) setfacl 選項 -m ACL表達式 徑物:可依照ACL表達式去設定徑物的ACL權限。
※ 其中,ACL表達式的寫法有:
u:使用者:rwx串:表示將該徑物的ACL權限設定為「對使用者來說具有rwx串中所提到的權限」。若使用者為空白,表示此權限是擁有者而設。
g:群組:rwx串:表示將該徑物的ACL權限設定為「對群組來說具有rwx串中所提到的權限」。若群組為空白,表示此權限是針對其所屬群組而設。
m:rwx串:表示設定ACL權限的遮罩(mask)。任何所設定的ACL權限的rwx串,如果比遮罩的rwx串權限更高,那在實際操作時,會將權限限制在遮罩的權限。這是為了防止有人不小心手殘,設定了太高的權限給某些使用者。
例如,如果遮罩的權限是rw,命令:setfacl -m u:jack:rx aaa.txt 表示要將aaa.txt此檔案對jack這個使用者的權限,給設定為rx(可讀、不可寫、可執行)。因此,就算jack對aaa.txt來說是外人,也能擁有這個特定的權限去操作aaa.txt檔。不過在操作時受限於遮罩,因此jack對aaa.txt實際上的有效權限只有r。
※ 選項有:
(※-1) -R:若目標徑物是個目錄,此選項可讓目錄下的所有子代徑物都擁有ACL表達式中所設定的權限。若不寫該選項,就只設定目標徑物的ACL權限而已。
(※-2) -d:若目標徑物是個目錄,此選項會將該目錄的「預設權限」設定為ACL表達式中所設定的權限。之後,在此目錄下所新建立的所有子代徑物,就會自動的擁有此「預設權限」。要注意,原本就存在該目錄內的徑物並不會被此預設權限影響,是新建立的才會。
(1-2) setfacl -b 徑物:將徑物中,所有設定過的ACL權限都消除。
(1-3) setfacl -k 徑物:將徑物中,所有設定過的ACL預設權限都消除。
(2) 察看一個徑物的ACL權限:
(2-1)要查看一徑物完整的ACL權限,可用getfacl 徑物名,會顯示類似的訊息:
# file: acltest #這是徑物名
# owner: mary #這是擁有者
# group: class1 #這是群組
user::rw- #這代表對擁有者的權限
user:jack:rwx #這代表對jack這個使用者的權限
group::r-- #這代表對所屬群組的權限
other::r-- #這代表對外人的權限
mask::rwx #這代表權限遮罩
如果有設預設權限,還會顯示類似以下的訊息:
default:user::rw-
default:user:jack:rwx #預設權限:對jack這個使用者的權限
default:group::r--
default:other::r--
default:mask::rwx #預設權限:權限遮罩
(2-2) 如果用ls -l 來查看徑物權限,若該徑物沒有設定ACL權限,那自然就是如下顯示:
drwxr-xr-x |
2 |
jack |
class1 |
2048 |
Aug 26 10:37 |
ggg |
徑物權限 |
連結數 |
擁有者 |
群組 |
大小 |
修改日期 |
名稱 |
若該徑物有設定ACL權限,那麼在「徑物權限」的部分,會多顯示一個加號+,如:
drwxr-xr-x+ |
2 |
jack |
class1 |
2048 |
Aug 26 10:37 |
ggg |
徑物權限 |
連結數 |
擁有者 |
群組 |
大小 |
修改日期 |
名稱 |
留言列表