2014-03-26 44 views
0

我正在写一个简单的C++ web服务器任务,我想检查文件是否可以被其他用户读取。如果没有,服务器将发回403 Forbidden。C++/Linux如何获得其他用户的读取权限统计信息?

我已经有statbuf.st_mode使用stat(FILE,&statbuf)但我不知道如何检索其他用户的读取权限。我知道有“S_IROTH”,但我不知道如何使用它。我试图用cout<<S_IROTH<<endl;打印到终端,它是4,但“FILE”具有0440的许可,所以我想我不打印“FILE”的S_IROTH。

所以我的问题是:如何获取其他用户的读取权限统计? 或者我在这里有任何概念上的错误?

谢谢。

回答

1

您需要对照S_IROTH屏蔽文件的模式。另外,你错误地传递了statbuf(并且你应该得到一个警告)。正确的代码应该看起来像:

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

这是一个错字原因我没有复制粘贴我的代码...我已经纠正它。而你的代码正在工作,非常感谢! – user3238850

相关问题