Unix File Permissions & ACLs in OS X(part 2)

Unix Permissions & ACLs in OS X
part 2

这是第一部分的接续,再详述一下permissions的继承关系等问题。
上一篇到这里可以找到: Unix File Permissions and ACLs in OS X
或者:
http://blog.csdn.net/afatgoat/archive/2008/12/07/3462131.aspx


下面的一些事实以及版本之间的差异在考虑permissions的继承问题时要牢记:
1. Leopard(10.5)默认的情况下是打开ACLs的, 而Tiger(10.4)不是.
2. 每一个在Leopard里面创建的用户,他们的默认组都是staff, 而在Tiger里面是, 新用户的创建都同时创建该用户同名的一个新组, 这样每个用户的组都不一样,当然可以在Netinfo里面变更用户组.
3. 默认的POSIX权限定义了创建者(拥有者owner),所属组(group)和任何人(everyone)的权限规则. 当ACLs打开时, ACLs和POSIX共同工作。他们相互作用的原则,最后产生有效的访问权限的规则是:
effective access = 所有ACLs中allow规则的叠加,剔除所有ACLs中的Deny的规则的叠加, 最后再合并POSIX的权限.
而只有两种可能: ACLs和POSIX共同作用,或者只有POSIX,不可能有ACLs单独起作用的情况。
4. 当一个新文件创建的时候, OS X对该文件默认的权限设置是这样的:
(1) POSIX owner-创建者就是创建该文件的当前用户account.
(2) POSIX group-组是继承于文件所在父文件夹的组.
(3) 而每一个部分权限bits的设定是: owner有读写(Read & Write)权限,而组和everyone都只有读(Read)权限, 也就是通过这个二进制的umask来设定的:755用于folder, 644用于文件.
(4) 如果在父目录中定义了继承关系的ACLs那么它同样继承这些ACLs.
5. 当拷贝copy一个文件或者目录时, 文件权限的继承遵循这样的规则:
(1) POSIX owner-是当前操作的客户
(2) POSIX group-组是继承于文件所在父文件夹的组. 这两点喝创建文件的相同
(3) 权限bits的设置是保留的,这一点和上面的"创建"不一样了。
(4) 对于ACLs, 如果不是继承的ACLs那么会保留,而原来继承于父目录的ACLs不被保留,而它将继承当前目录设定的子文件要继承的ACLs.
6. 当移动(move, mv或者Command+drug&Drop)一个文件目录的时候,所有的都被保留,owner和group都不变,权限设置也不变。所有的ACLs(包括自己的和继承的)都保留。

下面就用的Drop Box目录举例:
在Tiger 10.4系统里面, POSIX是唯一默认的权限, Ami的Drop Box目录的权限是这样的:
POSIX Owner: Ami
POSIX Group: Ami
POSIX permissions bits: 0733 (owner可以R & W, 所有其他人只写)

当另外一个用户Tim放了一个文件在Ami的Drop Box目录里后,这个文件的权限设定如下:
POSIX Owner: Tim (因为用户是Tim)
POSIX Group: Ami (从父目录继承的)
POSIX permissions bits: 0644 (owner可以R & W, 其它人只读)

这样,当用户Ami访问该文件的时候,他有只读的权限.

如果我们设置Ami和Tim都属于同一个组,比如就象10.5 Leopard中所默认的,都输入staff组,而且Tim在复制文件前把权限bits变更为664, 那么Ami就可以拥有R&W的权限了,或者Ami可以通过强制复制目录所有文件权限的方法重置权限bits。但是无论哪个方法都不是方便的做法。而使用ACLs可以作到无须用户干预就设置好权限的作用。

比如:
sudo chmod +a "everyone deny delete" /Users/sally/Public/Drop/ Box
sudo chmod -R +a "sally allow readattr,readextattr,readsecurity,list,search,read,execute,file_inherit,directory_inherit,delete,writeextattr,writeattr,write,append,delete_child,add_file,add_subdirectory" /Users/sally/Public/Drop/ Box

简单吧。

ref:http://www.macosxhints.com/article.php?story=20081009204908181

你可能感兴趣的:(Permission)