使用 Linux 系统账户进行 SVN

使用 Linux 系统账户进行 SVN

我正在尝试设置 svn 服务器以使用 linux 系统帐户进行​​身份验证,而不是使用独立的 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

我做错了什么?提前致谢。

PS 我已经为 apache 用户尝试了 pwauth(sudo -u apache /usr/local/libexec/pwauth)并且它运行良好......

答案1

我在尝试让 pwauth 在 Scientific Linux 6.3(另一个基于 RH 的发行版)上运行时也遇到了同样的问题。SL 默认启用了 SELinux。我做了一个

setenforce 允许

一切开始正常运转。/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 安全上下文问题留到另一天。

答案2

停止执行 selinux 策略很少能解决问题。最好的办法是找到允许 apache 服务器执行所需命令的布尔值,或者更糟的是为此定义一个新策略(audit2allow 可能有助于解决最后一点)。

'setenforce permissive' 命令仅用于检查 selinux 是否存在问题同时保持日志保持活动状态。

您可能需要查看以下布尔值:allow_httpd_mod_auth_pam

我认为也有一个用于执行系统二进制文件的程序,但无法找到它。

获取可用布尔值的列表:getsebool -a

设置给定布尔值 setsebool

答案3

在里面状态代码页对于 pwauth 它说:

如果您在 Apache 错误日志中看到报告负错误代码(或像 255 或 254 这样的数字),那么这是来自 mod_authnz_external 的错误代码,意味着它根本无法运行 pwauth。

按照文档进行外部身份验证它说:

第二条错误消息实际上是由 mod_auth_external 生成的。它只是说用户身份验证失败。通常它会在括号中给出身份验证器返回的状态代码,但如果身份验证器无法执行,它会显示虚假的状态代码 -1(某些系统显示为 255)。

看起来您无法pwauth从 apache 运行,您确定此时已切换到正确的用户吗(因为您可以以 apache 身份运行它)

相关内容