我可以获得当前用户真实有效的UID,那么,给定一些文件或目录,如何使用这些UID来检查rwx
该特定用户访问/修改该文件或目录的权限?
答案1
感谢 roaima 的评论,我得出以下结论:
//snip...
#include <fcntl.h>
#include <unistd.h>
...
bool bcanR, bcanW, bcanX;
//'fullpath' is to file or directory..
bcanR=(faccessat(0, fullpath, R_OK, AT_EACCESS)==0);
bcanW=(faccessat(0, fullpath, W_OK, AT_EACCESS)==0);
bcanX=(faccessat(0, fullpath, X_OK, AT_EACCESS)==0);
...
//snip
这满足了我的需求,因为它使用有效的 UID 来检查权限。
还基于这个答案需要记住改变权限(使用chmod
)只能由所有者或 root 执行。