分类:
2008-10-31 16:51:45
#include int chown(const char *pathname, uid_t owner, gid_t group); int fchown(int filedes, uid_t owner, gid_t group); int lchown(const char *pathname, uid_t owner, gid_t group); |
All three return: 0 if OK, 1 on error |
要想改变一个文件的owner,需要满足:
1. 当前process的effective user 具有super user 权限 或者
2. 当前process如果拥有该文件,即当前process 的effective user id等于该文件的owner id,那么可以修改该文件的group id为当前process的group id或supplement group ids中一个。Owner id是不能改的。
3. 如果仅仅当前process 的effective group id和该文件的group id相同,但process的effective user id和文件的owner id不同,且当前process不具有superuser权限时,也是不允许修改该文件的owner和group的。说白了,如果我不是该文件的owner,我不能改其owner和group。
总之:要想改一个文件的owner,就得是superuser,要想改一个文件的group,至少要是该文件的owner。