Linux ACL(Access Control List)提供了更加細粒度的訪問控制權(quán)限,并允許用戶或用戶組分別享有不同的權(quán)限。本文將介紹如何使用Linux ACL對文件和目錄進行訪問控制。
1. 安裝acl
Linux中默認已經(jīng)安裝了ACL支持,如果沒有,請使用下列命令安裝:
sudo apt-get install acl # debian和ubuntu
sudo yum install acl # centos和redhat
2. 查看文件ACL信息
使用`getfacl`命令來查看文件或目錄的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`對應(yīng)了三個不同的訪問控制級別,分別對應(yīng)了所有者,所在組和其他用戶。在訪問控制級別下,`user:name`和`group:name`表明了ACL的所有者和使用組,`mask`表示ACL的訪問屏蔽位。
3. 設(shè)置和修改文件ACL
使用`setfacl`命令來設(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信息,以確保存在同名項且新的ACL不會覆蓋舊的ACL。
4. 刪除文件ACL
可以使用`setfacl`命令的`-x`選項來刪除特定的ACL項,例如:
setfacl -x g:admin /path/to/directory
上述命令表示將組`admin`的ACL項從目錄`/path/to/directory`中刪除。同樣的,可以使用`-b`選項來刪除所有ACL項。
5. 設(shè)置默認文件ACL
默認文件ACL指的是在創(chuàng)建新文件時應(yīng)用的ACL信息。使用`setfacl`命令的`-d`選項來設(shè)置默認文件ACL,例如:
setfacl -d -m g:staff:rw /path/to/directory
上述命令表示將ACL信息設(shè)置為“組`staff`的讀取和寫入權(quán)限”,并將其作為默認ACL信息應(yīng)用到目錄`/path/to/directory`中。
Linux ACL提供了更加細粒度的訪問控制權(quán)限。使用`getfacl`命令來查看文件或目錄的ACL信息,使用`setfacl`命令來設(shè)置和修改文件或目錄的ACL信息。注意,ACL信息應(yīng)該在修改之前先備份,以免誤刪或被覆蓋。