我正在编写一个简单的C++ WebServer赋值,我想检查这个文件是否可以被其他用户读取。否则,服务器将发送回403禁止。
我已经有了一个使用statbuf.st_modestat(FILE,&statbuf),但我不知道如何检索其他用户的读取权限。我知道有“S椆IROTH”,但我不知道如何使用它。我试着用cout<<S_IROTH<<endl;把它打印到终端,结果是4,但是“FILE”的权限是0440,所以我想我没有打印“FILE”的S_IROTH。
所以我的问题是:如何获取其他用户的读取权限统计信息?
或者我在概念上犯了什么错误?
谢谢您。

最佳答案

您需要根据S_IROTH屏蔽文件的模式。另外,您传递的statbuf不正确(您应该会收到警告)。正确的代码应该如下所示:

int result = stat(path, &statbuf);
if (result != 0) {
    return NOT_FOUND;
}
if (!(statbuf.st_mode & S_IROTH)) {
    return FORBIDDEN;
}
... success, continue ...

关于c++ - C++/Linux如何获得其他用户的读取权限统计信息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22650189/

10-12 16:07