.htaccess
파일 보호를 사용해야 하는 웹사이트가 있습니다 .
하지만 내 웹사이트에 액세스할 때 올바른 로그인을 무시하고 권한 거부 오류가 발생합니다. 아파치 서버 버전: Apache/2.2.3
.htaccess
문서:
[root@server conf]# cat /home/molly/www/.htaccess
AuthName "Directory Auth for User Molly"
AuthType Basic
AuthUserFile /home/molly/.htpasswd
require user molly
권한:
[root@server conf]# ls -al /home/molly/www/.htaccess
-rwxr-xr-x 1 molly apache 116 Jan 13 18:12 /home/molly/www/.htaccess
[root@server conf]#
이전에는 파일 권한이 644였는데 htaccess
, 몇 가지 해결 방법을 찾아본 후 755로 변경했지만 작동하지 않았습니다.
마찬가지로 .htpasswd
파일 권한은 다음과 같습니다.
[root@server conf]# ls -al /home/molly/.htpasswd
-rwxr-xr-x 1 molly apache 46 Jan 13 18:58 /home/molly/.htpasswd
[root@server conf]#
오류 로그 파일:
[Wed Jan 14 11:59:29 2015] [error] [client 10.0.0.7] (13)Permission denied: Could not open password file: /home/molly/.htpasswd
[Wed Jan 14 11:59:29 2015] [error] [client 10.0.0.7] access to /~molly failed, reason: verification of user id 'molly' not configured
또한 사용자 디렉터리 권한을 755로 변경했지만 작동하지 않았습니다.
[root@server conf]# ls -ld /home/molly/
drwxr-xr-x 4 molly molly 4096 Jan 13 18:23 /home/molly/
[root@server conf]#
이 이상한 htpasswd 문제로 인해 앞으로 나아갈 수 없습니다.
많은 사람들이 이 문제를 경험했을 수 있기를 바랍니다 .
답변1
(이것은 오래된 질문이지만 다른 사람들에게는 유용할 수 있으므로...)
SELinux에 문제가 있다고 의심되는 경우 일반적으로 SELinux를 완전히 비활성화하지 않고 문제를 쉽게 해결할 수 있는 방법이 있습니다.
먼저 SELinux 정책 문서가 포함된 패키지가 설치되어 있는지 확인하세요. RedHat/CentOS/OEL에서는 이름이 selinux-policy-doc
.
그런 다음 표준 배포판에 포함된 각 시스템 서비스에는 SELinux 컨텍스트 태그와 해당 특정 서비스에 필요한 기타 세부 정보를 설명하는 매뉴얼 페이지가 있습니다. 그들은 모두 이름이 입니다 <service name>_selinux
.
이 경우 명령은 입니다 man httpd_selinux
.
일반적으로 매뉴얼 페이지 섹션 에는 BOOLEANS
필요에 따라 쉽게 켜고 끌 수 있는 SELinux 제한 사항이 많이 있습니다. 가장 일반적인 요구 사항은 필요에 따라 적절한 부울 값을 조정하여 충족할 수 있습니다. 여기 몇 가지 예가 있어요 httpd
:
httpd가 내장 스크립트(보통 PHP)를 사용하도록 허용하려면
httpd_builtin_scripting
부울을 활성화해야 합니다. 기본적으로 활성화되어 있습니다.
setsebool -P httpd_builtin_scripting 1
httpd cgi 지원을 허용하려면 httpd_enable_cgi 부울을 활성화해야 합니다. 기본적으로 활성화되어 있습니다.
setsebool -P httpd_enable_cgi 1
httpd가 사용자 콘텐츠를 읽을 수 있도록 허용하려면 httpd_read_user_content 부울을 활성화해야 합니다. 기본적으로 비활성화되어 있습니다.
setsebool -P httpd_read_user_content 1
httpd가 홈 디렉토리를 읽을 수 있도록 하려면 httpd_enable_homedirs 부울을 활성화해야 합니다. 기본적으로 비활성화되어 있습니다.
setsebool -P httpd_enable_homedirs 1
httpd가 cifs 파일 시스템에 액세스하도록 허용하려면 httpd_use_cifs 부울을 설정해야 합니다. 기본적으로 비활성화되어 있습니다.
setsebool -P httpd_use_cifs 1
httpd가 nfs 파일 시스템에 액세스하도록 허용하려면 httpd_use_nfs 부울을 활성화해야 합니다. 기본적으로 비활성화되어 있습니다.
setsebool -P httpd_use_nfs 1
더 많은 SELinux 부울이 있습니다 httpd
.
사용자의 홈 디렉토리에 대한 액세스 를 허용하려면 httpd
최소한 httpd_read_user_content
.UserDir
httpd_enable_homedirs
서버 오류에 대한 이 질문도 참조하세요.
둘 다 기본적으로 비활성화되어 있으므로 두 가지 명령이 필요합니다.
# setsebool -P httpd_read_user_content 1
# setsebool -P httpd_enable_homedirs 1
옵션은 설정을 영구적으로 유지하도록 -P
지시 setsebool
하므로 추가 SELinux 구성 파일을 편집할 필요가 없습니다.
답변2
문제가 무엇인지 확인하려면 777 권한을 사용한 다음 다시 644 또는 444로 변경해 보세요. 777 권한에도 동일한 오류가 발생하면 SELinux를 비활성화해 보세요.
/etc/selinux/config
SELINUX=disabled
다시 작동하지 않으면 .htpasswd를 제거해 보십시오. 지금 작동한다면 규칙이나 일부 구문 오류처럼 문제가 .htpasswd에 있다는 의미입니다.