我从很久以前的经验中了解到一些 ACL,但从未在 OSX 中检查过它们(目前我在独立 iMac 上安装了 10.6.7 标准版,非服务器版)。我刚刚注意到,我之前创建的一些非管理员用户帐户(changer 和 Test)的 ACE 为 everyone:deny delete。
我自己的管理员帐户没有 ACL,我今天创建的非管理员帐户也没有。
我很困惑。
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
答案1
正如 churnd 所指出的,它是一个默认实体,尽管它不在 /Users 上,而是在主目录本身上,填充在 /Users 下,旨在防止意外删除。
在创建主目录时,它默认存在,因为新的主目录是基于 /System/Library/User Template 中的模板创建的。这些文件的 ACL 在属性列表中指定。
在 10.6 中,在 /var/db/receipts 目录中,默认 ACL 在属性列表中指定。下面是一个例子,我使用默认值命令读取操作系统初始安装时创建的主要 .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";
此示例代码片段显示组:拒绝所有人删除对于 /Applications 目录之类的内容,以及 /System/Library/User Template/English 中的文件夹 — 该文件夹是使用 PrefPane 或 createhomedir 命令创建新主目录时显示方式的来源。
答案2
这是 OS X 10.6 的默认设置。我也有。它可以防止任何人删除 /Users 目录,因为它是系统目录。