昨天和朋友談起一個復雜的權限控制的時候,我提起可以試試ufs2的acl。當5.0的特性公布的時候,我第一感興趣的就是ufs2的各種特性,特別就是這個acl,不過事實證明,這個acl和我理想中的ntfs那種acl還是不一樣。順便提一下,我覺得雖然win2000做服務器不是讓我很爽,但是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 22、重新啟動
reboot3、生成測試文件
touch /home/root/test4、顯示文件屬性
ls -l /home/root/test root@bsd5:/root# 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/test6、顯示文件屬性
ls -l /home/root/test root@bsd5:/root# ls -l /home/root/test -rw-rwxr--+ 1 root wheel 0 Jun 29 13:38 /home/root/test注意這個:-rw-rwxr--+,說明acl加上去了。
getfacl /home/root/test root@bsd5:/root# 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初探索完成。