文件都有一个特定的所有者,也就是对该文件具有所有权的用户,即文件的属主,通俗的说为“文件的主人”。在 Linux
系统中,用户是按组分类的,一个用户可以属于一个或多个组。因此,文件属主以外的其他用户又可以分为文件所有者的同组织用户和其他用户。
每个文件都有一个与之关联的用户ID( UID
)和组ID( GID
),即文件的属主和属组。系统调用 chown()
函数、 lchown()
函数和 fchown()
函数来改变用户ID和组ID。
#include <unistd.h> int chown(const char *path, uid_t owner, gid_t group); int fchown(int fd, uid_t owner, gid_t group); int lchown(const char *path, uid_t owner, gid_t group);点击复制复制失败已复制
这三个函数之间的区别类似于 stat()
函数一族。
chown()
函数用于改变由path
参数指定的的属主。lchown()
函数用途与chown()
函数类似,不同之处在于如果参数path
为一符号链接,则将会改变符号链接文件本身的所有权,而与该链接所指向的文件无关。fchown()
函数也会改变文件的所有权,只是文件由打开文件描述符fd
表示。
参数 owner
和 group
分别为文件指定新的用户ID和组ID。若只打算改变其中之一,只需将另一个参数置为 -1
,即可令与之相关的 ID
保持不变。