Linux ACL(Access Control List)提供了更加細(xì)粒度的訪問控制權(quán)限,并允許用戶或用戶組分別享有不同的權(quán)限。本文將介紹如何使用Linux ACL對(duì)文件和目錄進(jìn)行訪問控制。
1. 安裝acl
Linux中默認(rèn)已經(jīng)安裝了ACL支持,如果沒有,請(qǐng)使用下列命令安裝:
sudo apt-get install acl # debian和ubuntu
sudo yum install acl # centos和redhat
2. 查看文件ACL信息
使用`getfacl`命令來(lái)查看文件或目錄的ACL信息,例如:
getfacl /path/to/file
getfacl /path/to/directory
輸出結(jié)果類似于下面的樣子:
# file: /path/to/file
# owner: john
# group: staff
user::rw-
user:tim:rw-
group::r--
mask::rw-
other::r--
# file: /path/to/directory
# owner: john
# group: staff
user::rwx
group::r-x
other::r--
default:user::rwx
default:group::r-x
default:other::r--
上面的輸出結(jié)果包含了文件或目錄的元數(shù)據(jù)信息和ACL信息。其中,`user`、`group`和`other`對(duì)應(yīng)了三個(gè)不同的訪問控制級(jí)別,分別對(duì)應(yīng)了所有者,所在組和其他用戶。在訪問控制級(jí)別下,`user:name`和`group:name`表明了ACL的所有者和使用組,`mask`表示ACL的訪問屏蔽位。
3. 設(shè)置和修改文件ACL
使用`setfacl`命令來(lái)設(shè)置文件或目錄的ACL信息,例如:
setfacl -m u:tim:rw- /path/to/file
setfacl -m g:admin:rx /path/to/directory
上述命令表示將用戶`tim`的訪問權(quán)限設(shè)置為“讀寫”,將組`admin`的訪問權(quán)限設(shè)置為“讀取和執(zhí)行”。
為了避免沖突,最好在`setfacl`命令之前先使用`getfacl`命令查看ACL信息,以確保存在同名項(xiàng)且新的ACL不會(huì)覆蓋舊的ACL。
4. 刪除文件ACL
可以使用`setfacl`命令的`-x`選項(xiàng)來(lái)刪除特定的ACL項(xiàng),例如:
setfacl -x g:admin /path/to/directory
上述命令表示將組`admin`的ACL項(xiàng)從目錄`/path/to/directory`中刪除。同樣的,可以使用`-b`選項(xiàng)來(lái)刪除所有ACL項(xiàng)。
5. 設(shè)置默認(rèn)文件ACL
默認(rèn)文件ACL指的是在創(chuàng)建新文件時(shí)應(yīng)用的ACL信息。使用`setfacl`命令的`-d`選項(xiàng)來(lái)設(shè)置默認(rèn)文件ACL,例如:
setfacl -d -m g:staff:rw /path/to/directory
上述命令表示將ACL信息設(shè)置為“組`staff`的讀取和寫入權(quán)限”,并將其作為默認(rèn)ACL信息應(yīng)用到目錄`/path/to/directory`中。
Linux ACL提供了更加細(xì)粒度的訪問控制權(quán)限。使用`getfacl`命令來(lái)查看文件或目錄的ACL信息,使用`setfacl`命令來(lái)設(shè)置和修改文件或目錄的ACL信息。注意,ACL信息應(yīng)該在修改之前先備份,以免誤刪或被覆蓋。