分类: 系统运维
2012-03-28 13:32:31
各chown函数允许我们改变一个文件的用户ID和组ID。
这三个函数基本类似,除非引用的文件是一个符号链接。在这种情况下,lchown改变符号链接本身的属主,而不是符号链接指向的文件。
lchown函数是POSIX.1功能的XSI扩展,定义在SUS里。作为这样的身份,所有的UNIX系统实现都被期望来支持它。
如果owner或group参数的为-1,则对应的ID保持不变。
历史上,基于BSD的系统强制限制只有超级用户能改变文件的属主关系。这是为了避免用户放弃他们自己的文件给别人,从而打破硬盘空间限额的限制。尽管如此,系统V已允许任何用户改变他们拥有的任何文件的属主。
POSIX.1允许两种操作中的任何一个,取决于_POSIX_CHOWN_RESTRICTED的值。
Solaris 9上,这个功能是一个配置的选项,它的默认值是实行这个限制。FreeBSD 5.2.1、Linux 2.4.22、Mac OS X 10.3一直实行这个chown限制。
回想下2.6节_POSIX_CHOWN_RESTRICTED常量可以在头文件
如果_POSIX_CHOWN_RESTRICTED对指定的文件有效,那么:
1、只有超级用户进程可以改变文件的用户ID;
2、如果非超级用户进程拥有这个文件(有效用户ID和文件用户ID相等),则它可以改变文件的组ID。owner被指定为-1或与文件用户ID相同,而group与进程的有效组ID或进程某个补充组ID相同。
这意味着如果_POSIX_CHOWN_RESTRICTED有效时,你不能改变其他用户文件的用户ID。你可以改变你拥有的文件的组ID,而且你属于该组。