Google Cloud CentOS7服务器SVN克隆403错误排查求助
解决SVN Checkout 403 Forbidden(Authz文件权限拒绝)问题
从你的错误日志Failed to load the AuthzSVNAccessFile: Can't open file '/svn/authz': Permission denied可以明确看出,核心问题是Apache进程没有权限读取/svn/authz文件,下面是一步步的实操解决方案:
1. 确认Apache运行用户
CentOS 7上Apache的默认运行用户是apache,你可以用这条命令验证:
ps aux | grep httpd
输出里第一列就是httpd进程的运行用户,大概率是apache。
2. 检查目录与文件的权限归属
先查看/svn目录和authz文件的权限信息:
ls -ld /svn ls -l /svn/authz
你需要确保:
/svn目录权限至少为755(所有者可读写执行,其他用户可读执行),且apache用户有访问权限/svn/authz文件权限至少为644(所有者可读写,其他用户可读),同样要保证apache能读取它
3. 修正权限与归属
如果权限不达标,执行以下命令调整:
- 修改
/svn目录的归属(让apache成为组用户):
chown -R root:apache /svn
- 调整目录权限:
chmod -R 755 /svn
- 调整authz文件权限:
chmod 644 /svn/authz
4. 处理SELinux限制(关键环节)
CentOS 7默认启用SELinux,它很可能会阻止Apache访问/svn目录:
- 先临时关闭SELinux测试是否是它的问题:
setenforce 0
如果此时checkout成功,说明就是SELinux的限制在起作用。
- 永久设置SELinux允许Apache访问该目录:
semanage fcontext -a -t httpd_sys_content_t "/svn(/.*)?" restorecon -Rv /svn
这条命令会给/svn目录及其子文件设置正确的SELinux上下文,让Apache可以正常访问。
5. 验证Authz文件格式
你的Authz内容基本没问题,但要保证格式规范:
[groups] admin=user001 [/] @admin=rw
另外要确认user001已经通过htpasswd添加到/etc/svn/svn-auth文件中:
# 首次创建用户用-c参数,后续添加用户去掉-c htpasswd -c /etc/svn/svn-auth user001
6. 重启Apache服务
所有修改完成后,重启Apache让配置生效:
systemctl restart httpd
现在重新尝试checkout仓库,应该就能正常访问了。
内容的提问来源于stack exchange,提问作者Omrum Cetin
相关产品推荐
相关产品推荐

