Usando as contas do sistema linux para o SVN

3

Eu estou tentando definir um servidor svn para usar a conta do sistema linux para autenticação em vez de um arquivo htpasswd independente. Eu uso o Fedora 16 e segui este manual para poder instalar e configure o mod_authnz_external e o pwauth, então eu configurei o /etc/httpd/conf.d/subversion.conf da seguinte forma:

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>

Mas não consigo acessar o repositório, todas as senhas são rejeitadas. O arquivo de log do Apache mostra o seguinte erro:

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

O que estou fazendo de errado? Agradecemos antecipadamente.

P.S. Eu tentei pwauth para o usuário do apache (sudo-u apache / usr / local / libexec / pwauth) e funciona bem….

    
por user1938733 29.01.2013 / 11:53

3 respostas

1

Eu tive a mesma experiência tentando executar o pwauth no Scientific Linux 6.3 (outra distro baseada em RH). O SL vem com o SELinux ativado por padrão. Eu fiz um

setenforce permissive

e as coisas começaram a funcionar. / var / log / messages ainda tem muitas mensagens. Por exemplo.

7 de fevereiro 14:59:26 VC-L001614-01 kernel: tipo = 1400 auditoria (1360270766.350: 44): avc: negado {executar} para pid = 32154 comm="sh" nome="pwauth" dev = dm -0 ino = 290254 scontext = unconfined_u: system_r: httpd_t: s0 tcontext = unconfined_u: object_r: usr_t: s0 tclass = arquivo

Eu vou tentar me livrar do registro, desabilitando o SELinux em / etc / selinux / conf e salvando a correção dos problemas do contexto de segurança do SELinux por mais um dia.

    
por 08.02.2013 / 18:19
1

Parar a aplicação de políticas de selinux raramente é uma solução. O melhor é encontrar o booleano que permita ao servidor do apache executar os comandos necessários, ou, pior ainda, definir uma nova política para isso (o audit2allow pode ajudar neste último ponto).

O comando 'setenforce permissive' é útil apenas para verificar se o selinux é o problema, mantendo os logs ativos.

Você pode querer dar uma olhada nos seguintes booleanos: allow_httpd_mod_auth_pam

Eu acho que há também um para a execução de binários do sistema, mas não consigo encontrá-lo de volta.

Para ter uma lista de booleanos disponíveis: getsebool -a

Para definir um dado booleano setsebool

    
por 04.08.2014 / 17:02
0

Na página de códigos de status do pwauth, ele diz:

If you see a negative error code (or a number like 255 or 254) reported in the Apache error log, then that is an error code from mod_authnz_external and means that it was unable to run pwauth at all.

seguindo a documentação para mod -auth-external diz:

The second error message is actually generated by mod_auth_external. It just says authentication failed for the user. Normally it would give the status code returned by the authenticator in parenthesis, but if the authenticator could not be executed it will show a phoney status code of -1 (which some systems display as 255).

Parece que você não pode executar pwauth do apache, tem certeza de que você mudou para o usuário certo neste ponto (como você pode executá-lo como apache)

    
por 29.01.2013 / 15:55