Usar cuentas de sistema linux para SVN


3

Estoy tratando de configurar un servidor svn para usar la cuenta del sistema Linux para la autenticación en lugar de un archivo htpasswd independiente. Uso Fedora 16 y seguí este manual para instalar y configurar mod_authnz_external y pwauth, luego configuro /etc/httpd/conf.d/subversion.conf de la siguiente manera:

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>

Pero no puedo acceder al repositorio, todas las contraseñas son rechazadas. El archivo de registro de Apache muestra el siguiente error:

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

¿Qué estoy haciendo mal? Gracias por adelantado.

PD: He intentado pwauth para el usuario apache (sudo -u apache / usr / local / libexec / pwauth) y funciona bien ...

Respuestas:


1

He tenido la misma experiencia tratando de hacer que pwauth se ejecute en Scientific Linux 6.3 (otra distribución basada en RH). SL viene con SELinux habilitado por defecto. hice un

fuerza de fuerza permisiva

y las cosas comenzaron a funcionar. / var / log / messages todavía tiene muchos mensajes. P.ej.

7 de febrero 14:59:26 VC-L001614-01 kernel: type = 1400 auditoria (1360270766.350: 44): avc: negado {execute} para 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

Intentaré deshacerme del registro deshabilitando SELinux en / etc / selinux / conf y guardaré la corrección de los problemas del contexto de seguridad de SELinux para otro día.


Gracias. Cuando desactivo SElinux, la autenticación con PAM funciona correctamente. Sin embargo, me gustaría mantener activo a selinux ... Profundizaré un poco más. Una cosa más: no tengo mensajes sobre pwauth en / var / log / messages
user1938733

1

Detener la aplicación de las políticas de selinux rara vez es una solución. Lo mejor es encontrar el booleano que permitiría al servidor apache ejecutar los comandos necesarios, o en el peor de los casos, definir una nueva política para eso (el audit2allow podría ayudar en este último punto).

El comando 'setenforce permissive' es útil solo para verificar que selinux es el problema mientras se mantienen activos los registros.

Es posible que desee echar un vistazo a los siguientes booleanos: allow_httpd_mod_auth_pam

Creo que también hay uno para la ejecución de los binarios del sistema, pero no puedo encontrarlo.

Para tener una lista de booleanos disponibles: getsebool -a

Para establecer un setsebool booleano dado


0

En la página de códigos de estado para pwauth dice:

Si ve un código de error negativo (o un número como 255 o 254) informado en el registro de errores de Apache, entonces ese es un código de error de mod_authnz_external y significa que no pudo ejecutar pwauth en absoluto.

siguiendo la documentación de mod-auth-external dice:

El segundo mensaje de error es realmente generado por mod_auth_external. Solo dice que la autenticación falló para el usuario. Normalmente daría el código de estado devuelto por el autenticador entre paréntesis, pero si el autenticador no se pudo ejecutar, mostrará un código de estado falso de -1 (que algunos sistemas muestran como 255).

Parece que no puede ejecutar pwauthdesde apache, ¿está seguro de que se ha cambiado al usuario correcto en este momento (ya que puede ejecutarlo como apache)


Si eso es. De hecho, el registro dice por qué no se puede ejecutar pwauth: permiso denegado. Pero no sé por qué sucede eso, los permisos del archivo son rwsr-xr-w (y también lo he intentado con rwxrwxrwx y con rwsrwxrwx) y todos los usuarios, incluido el usuario de apache, pueden ejecutar el archivo.

hmmm, ¿has probado el ejemplo configurado en el documento al que haces referencia? ¿Eso funciona?
Andrew Cox

Sí, lo intenté y no funcioné. Dio el mismo error.

¿Puedes hacer un script que solo devuelva un código de error 0 y ponerlo en lugar de pwauth para verificar si es ExternalAuth o pwauth
Andrew Cox

Gracias por tu interés, Andrew. Acabo de hacer lo que dijiste y recibí el mismo error. El archivo pwauth no se ejecuta ... Probablemente el error se deba a mod_authnz_external o requiera una cadena de permiso específica que no conozco. ¿Hay algún otro método similar a pwauth? Es solo para probar mod_authnz_external ...
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.