FreeBSD UFS2 acl 初探

出自啟示錄
跳轉到: 導覽, 搜尋

作者:夜猫子( yeaha AT cnfug DOT org)

原文網址:[http://www.cnfug.org/journal/archives/000011.html]

繁體化:Joe Horn( joehorn AT leobbs DOT net )

授權:[CC授權:姓名標示-非商業性-相同方式分享 2.5]


昨天和朋友談起一個複雜的權限控制的時候,我提起可以試試 UFS2 的ACL。當 5.0 的特性公布的時候,我第一感興趣的就是 UFS2 的各種特性,特別就是這個 ACL,不過事實證明,這個 ACL 和我理想中的 NTFS 那種ACL 還是不一樣。順便提一下,我覺得雖然 Windows 2000 做伺服器不是讓我很爽,但是 NTFS 的權限系統的確比 UFS 的權限控制強大,Windows 也並不是那麼一無是處的。下面說說我一個早上的心得:


原本的 UFS1 的權限是三部分,u(ser) g(roup) o(ther),u 只能是一個人,g 可以是一組人,而 o 就是其他所有人,那麼應用了 UFS2 ACL 以後,u 可以是幾個人,而 g 可以是幾組人,而且各自有各自的權限。


使用 ACL 的前提是: 1、核心編譯的時候加上 options UFS_ACL(5.1-Release 預設的核心已經支援); 2、UFS2(5.x 預設); 3、mount 時加入 acls 這個參數(可以使用 /etc/fstab 來作設定)。


另外需要注意的是,對於一個已經 mount 的系統,不能通過 mount -u 的方式來使用 ACL,必須徹底的 umount 再 mount,因此修改 /etc/fstab 是一個好主意。


(編註:也可以使用 tunefs -a enable filesystem 來使 ACL 永遠生效,這樣就可以不必在每次 mount 時都要加上 acls 參數了。)


我的步驟:

1、修改 /etc/fstab(我是在 /home 上做的測試。)

/dev/ad0s1f /home ufs rw,acls 2 2

2、重新啟動

# sync;sync;sync;reboot

3、產生測試用檔案

# touch /home/root/test

4、顯示檔案屬性

# ls -l /home/root/test
-rw-r--r-- 1 root wheel 0 Jun 29 13:35 /home/root/test
注意這個:-rw-rwxr--

5、增加 ACL

# setfacl -m u:cat:rwx,g:mail:rw /home/root/test

6、顯示檔案屬性

# ls -l /home/root/test
-rw-rwxr--+ 1 root wheel 0 Jun 29 13:38 /home/root/test
注意這個:-rw-rwxr--+,說明 acl 加上去了。

7、列出 ACL

# getfacl /home/root/test
#file:/home/root/test
#owner:0
#group:0
user::rw-
user:cat:rwx
group::r--
group:mail:rw-
mask::rwx
other::r--


至此我們的 UFS2 ACL 初探索完成。


註:任何轉載請保留作者信息和註明文章出處( 中文 FreeBSD 用戶組 [http://www.cnfug.org] )

個人工具