我从很早以前的经验中了解一些关于ACL的知识,但从未在OSX中检查过它们(目前,我在独立iMac上使用了10.6.7标准的非服务器)。 我刚刚注意到,我刚刚创build的一些非pipe理用户帐户(更换器和testing)有一个每个人的ACE:拒绝删除。
我自己的pipe理员帐户没有ACL,也没有我今天创build的非pipe理员帐户。
我很困惑。
A)这并不意味着任何人都不能从这些目录中删除任何文件(changer&Test)吗? B)有关他们如何到达那里的任何想法?
这是我的/ Users目录
mimac:~ frank$ ls -le /Users total 0 drwxrwxrwt 4 root wheel 374 Sep 25 2010 Shared drwxr-xr-x+ 15 Test staff 612 Dec 2 13:11 Test 0: group:everyone deny delete drwxr-xr-x+ 11 changer staff 510 Apr 1 00:07 changer 0: group:everyone deny delete drwxr-xr-x@ 67 frank admin 3536 Apr 4 16:06 frank drwxr-xr-x 11 newone staff 408 Apr 6 02:07 newone
作为churnd笔记,这是一个默认的实体,虽然它不是/ Users,但在主目录本身,填充/ Users下,旨在防止意外删除。
在创build家目录时,默认是在那里,因为新的主目录是基于/ System / Library / User Template中的模板创build的。 正是这些文件在属性列表中指定了它们的ACL。
在10.6上,在/ var / db / receipts目录中,默认ACL在属性列表中指定。 下面是一个示例,我使用defaults命令读取初始安装操作系统时创build的一个主.plist文件中的PathACLs项。
[root@lithium5 19:13:43 /var/db/receipts]# defaults read /var/db/receipts/com.apple.pkg.Essentials PathACLs { Applications = "!#acl 1\\ngroup:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:delete\\n"; "Applications/Utilities" = "!#acl 1\\ngroup:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:delete\\n"; Library = "!#acl 1\\ngroup:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:delete\\n"; "System/Library/User Template/English.lproj/Desktop" = "!#acl 1\\ngroup:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:delete\\n"; "System/Library/User Template/English.lproj/Documents" = "!#acl 1\\ngroup:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:delete\\n"; "System/Library/User Template/English.lproj/Downloads" = "!#acl 1\\ngroup:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:delete\\n"; "System/Library/User Template/English.lproj/Library" = "!#acl 1\\ngroup:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:delete\\n";
这个例子snippit显示组:拒绝任何人删除像/ Applications目录的东西,而且/ System / Library / User Template / English中的文件夹 – 这是使用PrefPane或createhomedir创build新主目录时出现的源文件夹命令。
这是OS X 10.6的默认设置。 我也有。 它可以防止任何人删除/ Users目录,因为它是一个系统目录。