Linux ACL(Access Control List)提供了更加細粒度的訪問控制權限,并允許用戶或用戶組分別享有不同的權限。本文將介紹如何使用Linux ACL對文件和目錄進行訪問控制。
1. 安裝acl
Linux中默認已經安裝了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
輸出結果類似于下面的樣子:
# 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--
上面的輸出結果包含了文件或目錄的元數據信息和ACL信息。其中,`user`、`group`和`other`對應了三個不同的訪問控制級別,分別對應了所有者,所在組和其他用戶。在訪問控制級別下,`user:name`和`group:name`表明了ACL的所有者和使用組,`mask`表示ACL的訪問屏蔽位。
3. 設置和修改文件ACL
使用`setfacl`命令來設置文件或目錄的ACL信息,例如:
setfacl -m u:tim:rw- /path/to/file
setfacl -m g:admin:rx /path/to/directory
上述命令表示將用戶`tim`的訪問權限設置為“讀寫”,將組`admin`的訪問權限設置為“讀取和執行”。
為了避免沖突,最好在`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. 設置默認文件ACL
默認文件ACL指的是在創建新文件時應用的ACL信息。使用`setfacl`命令的`-d`選項來設置默認文件ACL,例如:
setfacl -d -m g:staff:rw /path/to/directory
上述命令表示將ACL信息設置為“組`staff`的讀取和寫入權限”,并將其作為默認ACL信息應用到目錄`/path/to/directory`中。
Linux ACL提供了更加細粒度的訪問控制權限。使用`getfacl`命令來查看文件或目錄的ACL信息,使用`setfacl`命令來設置和修改文件或目錄的ACL信息。注意,ACL信息應該在修改之前先備份,以免誤刪或被覆蓋。