关于leopard下的权限问题和@符号的意义

Mac OS X Leopard下的文件权限改变比较大,经常会出现一些文件权限上的问题,比如使用权限修复时可能会出现下面的问题:

********** 2008-03-17 13:39:37 +0800: “磁盘工具”已启动。 2008-03-17 13:39:47 +0800: 正在修复“Macintosh HD”的权限 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/extra/httpd-autoindex.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/extra/httpd-dav.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/extra/httpd-default.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/extra/httpd-info.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/extra/httpd-languages.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/extra/httpd-manual.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/extra/httpd-mpm.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/extra/httpd-multilang-errordoc.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/extra/httpd-ssl.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/extra/httpd-userdir.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/extra/httpd-vhosts.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/extra”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/magic”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/mime.types”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/original/extra/httpd-autoindex.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/original/extra/httpd-dav.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/original/extra/httpd-default.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/original/extra/httpd-info.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/original/extra/httpd-languages.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/original/extra/httpd-manual.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/original/extra/httpd-mpm.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/original/extra/httpd-multilang-errordoc.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/original/extra/httpd-ssl.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/original/extra/httpd-userdir.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/original/extra/httpd-vhosts.conf”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/original/extra”上。 2008-03-17 13:44:25 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/original/httpd.conf”上。 2008-03-17 13:44:26 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/original”上。 2008-03-17 13:44:26 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/other/bonjour.conf”上。 2008-03-17 13:44:26 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/other/php5.conf”上。 2008-03-17 13:44:26 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/other”上。 2008-03-17 13:44:26 +0800: 已找到 ACL,但它不是按期望的在“private/etc/apache2/users”上。 2008-03-17 13:44:26 +0800: “private/etc/profile”上的权限不一致,应该是 -r--r--r-- ,却为 -rw-r--r-- 。 2008-03-17 13:45:25 +0800: 已找到 ACL,但它不是按期望的在“Applications”上。 2008-03-17 13:45:28 +0800: 已找到 ACL,但它不是按期望的在“Library”上。 2008-03-17 13:45:30 +0800: 2008-03-17 13:45:30 +0800: 完成权限修复 2008-03-17 13:45:30 +0800: 2008-03-17 13:45:30 +0800:

主要是ACL的问题,不管修复几次都会存在,挥之不去,相当噩梦.只要用下面的命令即可解决

chmod -RN /etc/apache2

-R是递归,-N是删除所有ACL

另外细心的人都会发现,leopard下面的文件属性后面多了个@(以前最常见的是+),比如

drwxr-xr-x@  6 Sam   staff   204B  1 26 23:53 .subversion

这个符号代表这个目录或者文件带有扩展属性.一般情况下,这个问题要归功于Time Machine.
想要看一下@符号里面藏了什么东西,可以用下面的命令

ls -lh@Sam@Bogon-2:~$ ls -lh@ total 128drwx------@ 28 Sam   wheel   952B  3 17 13:38 . com.apple.metadata:_kTimeMachineNewestSnapshot   50B com.apple.metadata:_kTimeMachineOldestSnapshot   50B drwxr-xr-x   5 root  admin   170B  3 15 18:56 .. -rw-------   1 Sam   staff     5B  3 15 18:56 .CFUserTextEncoding -rw-r--r--@  1 Sam   staff    12K  3 17 14:15 .DS_Store com.apple.FinderInfo   32B drwx------   2 Sam   wheel    68B  3 17 14:10 .Trash -rw-------   1 Sam   staff   6.2K  3 17 14:15 .bash_history drwx------@  9 Sam   wheel   306B  3 17 14:05 .gnupg com.apple.metadata:_kTimeMachineNewestSnapshot   50B com.apple.metadata:_kTimeMachineOldestSnapshot   50B -rw-------   1 Sam   staff    35B  3 17 14:14 .lesshst -rwxr-----@  1 Sam   staff   177B  3 16 16:22 .login com.apple.TextEncoding   15B -rw-------   1 Sam   wheel   119B  3 17 13:11 .mysql_history -rw-r--r--@  1 Sam   staff   741B  3 16 19:49 .profile com.apple.metadata:_kTimeMachineNewestSnapshot   50B com.apple.metadata:_kTimeMachineOldestSnapshot   50B drwx------@  6 Sam   staff   204B  2 29 13:29 .ssh com.apple.metadata:_kTimeMachineNewestSnapshot   50B com.apple.metadata:_kTimeMachineOldestSnapshot   50B drwxr-xr-x@  6 Sam   staff   204B  1 26 23:53 .subversion com.apple.metadata:_kTimeMachineNewestSnapshot   50B com.apple.metadata:_kTimeMachineOldestSnapshot   50B -rw-------   1 Sam   staff   7.5K  3 17 13:33 .viminfo -rw-r--r--@  1 Sam   staff    41B  3 16 14:49 .vimrc com.apple.metadata:_kTimeMachineNewestSnapshot   50B com.apple.metadata:_kTimeMachineOldestSnapshot   50B ...

@符号的存在,没什么大碍.但如果你发现某天某个文件夹里面写不进去东西了,但用户/用户组的权限都正确,那么就要考虑清理ACL了.目前暂时还不知道这个BUG是如何造成的.