【发布时间】:2011-04-06 18:14:59
【问题描述】:
我正在寻找一种方法来确定当前用户(即进程的 UID)在 POSIX 兼容系统上的文件权限。我不想尝试打开文件 - 这可能会使目录和各种特殊文件变得混乱。
我正在编译一个指定目录的目录列表,并且对于每个文件,报告一堆东西:文件名、大小、类型(文件/目录/其他)、权限(可以读取,可以写入)。对于尺寸和类型,我已经有了stat 调用的结果。
这是我想出的:
if ((dirent->st_uid == getuid() && dirent->st_mode & S_IRUSR)
|| (dirent->st_gid == getgid() && dirent->st_mode & S_IRGRP)
|| (dirent->st_mode && S_IROTH)) entry->perm |= PERM_READ;
if ((dirent->st_uid == getuid() && dirent->st_mode & S_IWUSR)
|| (dirent->st_gid == getgid() && dirent->st_mode & S_IWGRP)
|| (dirent->st_mode && S_IWOTH)) entry->perm |= PERM_WRITE;
我必须这样做吗,还是有一个简单的调用/宏可以完成同样的事情? ACL 支持的奖励积分,尽管目前这不是绝对必要的。
【问题讨论】:
标签: c unix posix file-permissions