2017-02-02 17 views
1

Apache 서버 용 모듈을 개발 중입니다. 그 안에서,/tmp/_clusterMemberName/stat (const char * filename, struct stat * buf) 함수를 사용하여 경로에서 파일을 읽으려고합니다. 내 문제는 경로에 파일이 존재하더라도 -1을 반환하는 stat() 함수입니다. 파일 위치를 /tmp/_clusterMemberName/에서 /opt/으로 변경하면 stat() 함수가 정상적으로 작동합니다. 이유를 찾도록 도와주세요.파일이 존재하더라도 stat()가 -1을 반환하는 이유 [RHEL 7.2]

+0

에 지속적인 변화를 만드는) 값의 errno는이 무엇인지 찾아서 맞는 있는지 확인 stat에 대한 맨 페이지의 사례 중 하나. –

답변

0

가장 큰 이유는 /tmp에 액세스 할 수 없다는 것입니다.

stat에 의해 반환 된 errno 값을 확인해야합니다. EACCES 인 경우 사용자에게 /tmp에 대한 액세스 권한이 없다는 것입니다. EPERM 인 경우 SELinux 정책에 따라 httpd가 /tmp에 액세스하지 못하게 될 수 있습니다. SELinux를 사용하는 경우 httpd_selinux 맨 페이지를 알고 있어야합니다.

당신이 /tmp- httpd 액세스 활성화 할 수 있습니다

:

setsebool httpd_tmp_t 1 

을하고 합계를 (전화 후

setsebool -P httpd_tmp_t 1 
+0

입력 해 주셔서 감사합니다. 내 컴퓨터에서 SELinux를 비활성화하고 errno 값을 2로 유지하려고합니다. – ashutosh

+0

RHEL6 시스템에서 동일한 설정이 작동하고 있습니다. – ashutosh

+0

errno 값 2는 ENOENT입니다. '/ tmp/_clusterMemberName'에 철자 오류가 없습니까? –