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] )