2014-03-26 2 views
0

간단한 C++ 웹 서버 할당을 작성 중이며 다른 사용자가 파일을 읽을 수 있는지 확인하고 싶습니다. 그렇지 않은 경우 서버는 403 금지를 다시 보냅니다.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

관련 문제