SVN服务器取消NIS认证并切换为本地认证的实现方法咨询
SVN服务器取消NIS认证并切换为本地认证的实现方法咨询
嗨Rajesh,我来帮你一步步搞定从NIS切换到本地认证的事儿,结合你给出的配置片段,其实核心就是调整Apache的认证配置,再断开NIS的依赖就行,具体步骤如下:
第一步:确保Apache加载必要的本地认证模块
首先得确认Apache已经加载了处理本地用户和组的模块,打开你的subversion.conf(或者httpd主配置文件),添加下面两行(如果还没加的话):
LoadModule authn_file_module modules/mod_authn_file.so LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
这两个模块分别负责读取本地用户密码文件和组文件,是本地认证的基础。
第二步:创建本地SVN用户密码文件
我们用Apache自带的htpasswd命令来生成存储用户加密密码的文件,比如把文件放在/etc/httpd/svn-users:
- 第一次创建文件并添加第一个用户:
执行后会提示你输入该用户的密码htpasswd -c /etc/httpd/svn-users alice - 后续添加其他用户时去掉
-c参数(避免覆盖已有文件):htpasswd /etc/httpd/svn-users bob
第三步:创建本地组配置文件
如果还要保留accounting和finance这两个组的权限控制,新建一个组文件比如/etc/httpd/svn-groups,内容格式如下:
accounting: alice bob finance: charlie dave
把原来NIS里属于这两个组的用户,对应改成你刚才创建的本地SVN用户名就行。
第四步:修改SVN的Location配置
更新你的svn.conf里的<Location /svn/dir>块,添加本地用户和组文件的配置,修改后大概是这样:
<Location /svn/dir> DAV svn SVNPath /svn/dir SVNPathAuthz Off AuthType Basic AuthName "Subversion Server" # 新增本地认证相关配置 AuthUserFile /etc/httpd/svn-users AuthGroupFile /etc/httpd/svn-groups Require group accounting finance AuthzSVNAccessFile /etc/httpd/vhosts/business.acl </Location>
这里的关键就是通过AuthUserFile和AuthGroupFile指定本地的用户、组源,替代原来的NIS依赖。
第五步:断开服务器与NIS的连接
这部分要根据你的操作系统调整,一般步骤是:
- 停止并禁用NIS客户端服务(比如
ypbind):systemctl stop ypbind systemctl disable ypbind - 编辑
/etc/nsswitch.conf,把passwd、group、shadow这些条目里的nis去掉,只保留files,比如:
这样系统就只会读取本地的用户组信息,不再访问NIS服务器了。passwd: files group: files shadow: files
第六步:配置校验与服务重启
先检查Apache配置语法是否正确:
httpd -t
如果提示Syntax OK,就重启Apache服务让配置生效:
systemctl restart httpd
额外注意事项
- 要确保
svn-users和svn-groups文件的权限正确,给Apache用户(通常是apache或www-data)加上读权限:chown apache:apache /etc/httpd/svn-users /etc/httpd/svn-groups chmod 600 /etc/httpd/svn-users /etc/httpd/svn-groups - 如果你原来的
AuthzSVNAccessFile里有依赖NIS用户名的权限规则,记得同步更新成本地SVN用户的名字。 - 操作前最好备份
/etc/nsswitch.conf和Apache的配置文件,万一出问题可以快速回滚。
备注:内容来源于stack exchange,提问作者Rajesh Yidi
相关产品推荐
相关产品推荐

