리눅스 시스템 계정을 사용하여 SVN


3

나는 svn 서버가 독립적 인 htpasswd 파일 대신 인증을 위해 리눅스 시스템 계정을 사용하도록 설정하려고합니다. 나는 Fedora 16을 사용하고있다. 이 매뉴얼 mod_authnz_external과 pwauth를 설치하고 설정하려면 /etc/httpd/conf.d/subversion.conf를 아래와 같이 설정하십시오 :

LoadModule dav_svn_module          modules/mod_dav_svn.so
LoadModule authz_svn_module        modules/mod_authz_svn.so
LoadModule authnz_external_module  modules/mod_authnz_external.so

AddExternalAuth pwauth /usr/local/libexec/pwauth
SetExternalAuthMethod pwauth pipe 

<Location /svn>
   DAV svn
   SVNParentPath /var/www/svn
   AuthType Basic
   AuthName "Subversion repositories PAM"
   AuthBasicProvider external
   AuthExternal pwauth
   Require valid-user
</Location>

그러나 저장소에 액세스 할 수 없으며 모든 암호가 거부됩니다. Apache 로그 파일에 다음 오류가 표시됩니다.

exec of '/usr/local/libexec/pwauth' failed: (13) Permission denied
[Tue Jan 29 11:23:18 2013] [error] [client ::1] AuthExtern pwauth [/usr/local/libexec /pwauth]: Failed (255) for user tom
[Tue Jan 29 11:23:18 2013] [error] [client ::1] user tom: authentication failure for "/svn/project/trunk": Password Mismatch

내가 뭘 잘못하고 있죠? 미리 감사드립니다.

추신 apache 사용자 (sudo -u apache / usr / local / libexec / pwauth)에 대해 pwauth를 시도했지만 제대로 작동합니다 ....

답변:


1

나는 pswauth가 Scientific Linux 6.3 (다른 RH 기반 배포판)에서 실행되도록하려는 동일한 경험을 가졌습니다. SL은 기본적으로 SELinux가 활성화되어 제공됩니다. 나는 해냈어.

허용되는 설정

일이 시작되었습니다. / var / log / messages에는 여전히 많은 메시지가 있습니다. 예 :

2 월 7 일 14시 59 분 26 초 VC-L001614-01 커널 : type = 1400 감사 (1360270766.350 : 44) : avc : pid = 32154에 대해 {실행}이 거부 됨 comm = "sh"name = "pwauth"dev = dm-0 ino = 290254 scontext = unconfined_u : system_r : httpd_t : s0 tcontext = unconfined_u : object_r : usr_t : s0 tclass = file

나는 / etc / selinux / conf에있는 SELinux를 비활성화하여 로깅을 없애고 SELinux 보안 컨텍스트 문제를 다른 날에 저장하지 않도록 할 것입니다.


감사. SElinux를 비활성화하면 PAM을 통한 인증이 올바르게 작동합니다. 그러나, 나는 selinux를 계속 활성화하고 싶습니다. 조금 더 깊이 파헤겠습니다. 한가지 더 : 나는 / var / log / messages에 pwauth에 대한 메시지가 없다.
user1938733

1

selinux 정책 시행을 중단하는 것은 거의 불가능합니다. 가장 좋은 점은 아파치 서버가 필요한 명령을 실행할 수있는 부울을 찾는 것입니다. 또는 더 나쁜 경우에는 새로운 정책을 정의 할 수 있습니다 (audit2allow가이 마지막 지점에 도움이 될 수 있음).

'setenforce permissive'명령은 로그를 활성화 상태로 유지하면서 selinux가 문제인지 확인하는 데 유용합니다.

다음 부울을 살펴볼 수 있습니다. allow httpd mod_auth_pam

시스템 바이너리의 실행을위한 것도 있지만 재검색을 찾을 수는 없다고 생각합니다.

사용 가능한 불리언 목록을 얻으려면 다음을 수행하십시오. getsebool -a

주어진 부울을 설정하려면 세트 세울


0

에서 상태 코드 페이지 pwauth 그것은 말한다 :

부정적인 오류 코드 (또는 255 또는 254와 같은 숫자)가 표시되면   아파치 오류 로그에보고되면 다음 오류 코드가 표시됩니다.   mod_authnz_external은 pwauth를 전혀 실행할 수 없다는 것을 의미합니다.

문서에 따라 mod-auth-external 그것은 말한다 :

두 번째 오류 메시지는 실제로 mod_auth_external에 의해 생성됩니다.     단지 사용자가 인증에 실패했음을 나타냅니다. 일반적으로     인증 자에 의해 반환 된 상태 코드를 괄호 안에 넣고,     그러나 인증자가 실행될 수 없다면 그것은 phoney를 보여줄 것이다.   상태 코드 -1 (일부 시스템에서는 255로 표시됨)

네가 뛰지 못하는 것 같아. pwauth 아파치에서이 시점에서 올바른 사용자로 전환했는지 확인하십시오 (아파치로 실행할 수 있음).


그래 그거야. 실제로 로그에는 pwauth를 실행할 수없는 이유가 나와 있습니다. 사용 권한이 거부되었습니다. 하지만 그 이유는 모르겠지만 파일의 사용 권한은 rwsr-xr-w입니다 (또한 rwxrwxrwx와 rwsrwxrwx로 시도했습니다). 그리고 apache 사용자를 포함한 모든 사용자가 파일을 실행할 수 있습니다.

흠, 당신이 참조하는 문서에 예제 설정을 시도 했습니까? 그게 효과가 있니?
Andrew Cox

예, 시도했지만 작동하지 않았습니다. 그것은 같은 오류를 주었다.

당신은 단지 0 오류 코드를 반환하고 pwauth 대신 ExternalAuth 또는 pwauth가 있는지 확인하는 스크립트를 만들 수 있습니까?
Andrew Cox

관심을 가져 주셔서 감사합니다, 앤드류. 방금 한 말을했는데 같은 오류가 있습니다. pwauth 파일이 실행되지 않습니다 ... 아마 오류는 mod_authnz_external 때문이거나 알 수없는 특정 사용 권한 문자열이 필요합니다. pwauth와 비슷한 다른 방법이 있습니까? 그냥 mod_authnz_external을 시도하는 것입니다 ...
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.