c - 在 Unix 上的 C 中,进程如何在不打开文件的情况下知道它对文件具有哪些权限?

标签 c unix file-permissions

我可以使用 stat() 来确定所有者、组或其他人拥有哪些权限,我可以使用 geteuid() 和 getpwuid() 来获取进程的用户名。我不太确定如何在没有系统调用的情况下获取用户所属的组。

即使知道如何获取组,集成所有这些信息似乎也需要大量工作。有没有更简单的方法?

最佳答案

access() POSIX function无需打开即可查看权限。但是,它需要一个系统调用。

The access() function shall check the file named by the pathname pointed to by the path argument for accessibility according to the bit pattern contained in amode, using the real user ID in place of the effective user ID and the real group ID in place of the effective group ID.

例如:

access("/etc/passwd",W_OK)

检查您是否具有对密码文件的写入权限。使用 R_OK,检查读取权限。

eaccess() function (euidaccess 是同义词)使用有效的用户和组 ID。虽然 eaccess 似乎得到了广泛支持,但据我所知,它并不是 POSIX 标准的一部分。

关于c - 在 Unix 上的 C 中,进程如何在不打开文件的情况下知道它对文件具有哪些权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1138508/

相关文章:

c++ - 为什么同样适用于 Windows 而不适用于 Unix?

string - KornShell Printf - 填充字符串

c - 循环在 C 语言中运行超过预期

c++ - CreateProcessAsUser - 使用不同的父进程创建进程?

c - 为什么只打印最后一个字?

c - 为什么我会遇到以下程序的段错误?

c - winsock 的 recv 函数

linux - Linux下的特殊文件?

java - 文件夹访问权限 DMS

linux - gammu-smsd RunOnReceive 脚本结果退出状态 2