18.4. 配置示例


18.4.1. 设置 CVS

这个示例描述了一个简单的 CVS 设置以及允许远程访问的 SELinux 配置。本例中使用两个主机:一个主机名为 cvs-srv 的 CVS 服务器,IP 地址为 192.168.1.1,并且主机名为 cvs-client 且 IP 地址为 192.168.1.100 的客户端。两个主机在同一子网(192.168.1.0/24)中。这只是一个示例,假设已安装了 cvsxinetd 软件包,使用了 SELinux targeted 策略,并且 SELinux 正以强制模式运行。
此示例将显示,即使具有完全 DAC 权限,SELinux 仍然可以根据文件标签强制执行策略规则,并且只允许访问已明确由 CVS 标识访问的特定区域。
注意
步骤 1-9 应在 CVS 服务器 cvs-srv 上执行。
  1. 这个示例需要 cvsxinetd 软件包。确认已安装了软件包:
    [cvs-srv]$ rpm -q cvs xinetd
    package cvs is not installed
    package xinetd is not installed
    
    Copy to Clipboard Toggle word wrap
    如果没有安装它们,请以 root 用户身份使用 yum 工具安装它:
    [cvs-srv]# yum install cvs xinetd
    Copy to Clipboard Toggle word wrap
  2. 以 root 用户身份输入以下命令,创建名为 CVS 的组:
    [cvs-srv]# groupadd CVS
    Copy to Clipboard Toggle word wrap
    这也可以通过使用 system-config-users 实用程序来完成。
  3. 创建用户名为 cvsuser 的用户,并使此用户成为 CVS 组的成员。这可以通过 system-config-users 完成。
  4. 编辑 /etc/services 文件,并确保 CVS 服务器有取消注释的条目,如下所示:
    cvspserver	2401/tcp			# CVS client/server operations
    cvspserver	2401/udp			# CVS client/server operations
    
    Copy to Clipboard Toggle word wrap
  5. 在文件系统的根区域创建 CVS 存储库。在使用 SELinux 时,最好在 root 文件系统中包含 存储库,以便为它指定递归标签,而不影响任何其他子目录。例如,以 root 用户身份创建一个 /cvs/ 目录来存储存储库:
    [root@cvs-srv]# mkdir /cvs
    Copy to Clipboard Toggle word wrap
  6. 为所有用户授予 /cvs/ 目录的完整权限:
    [root@cvs-srv]# chmod -R 777 /cvs
    Copy to Clipboard Toggle word wrap
    警告
    这只是一个示例,不应在生产系统中使用这些权限。
  7. 编辑 /etc/xinetd.d/cvs 文件,并确保 CVS 部分已取消注释并配置为使用 /cvs/ 目录。该文件应类似于:
    service cvspserver
    {
    	disable	= no
    	port			= 2401
    	socket_type		= stream
    	protocol		= tcp
    	wait			= no
    	user			= root
    	passenv			= PATH
    	server			= /usr/bin/cvs
    	env			= HOME=/cvs
    	server_args		= -f --allow-root=/cvs pserver
    #	bind			= 127.0.0.1
    
    Copy to Clipboard Toggle word wrap
  8. 启动 xinetd 守护进程:
    [cvs-srv]# systemctl start xinetd.service
    Copy to Clipboard Toggle word wrap
  9. 添加一条规则,该规则允许使用 system-config-firewall 实用程序通过端口 2401 上的 TCP 进行入站连接。
  10. 在客户端中,以 cvsuser 用户身份输入以下命令:
    [cvsuser@cvs-client]$ cvs -d /cvs init
    Copy to Clipboard Toggle word wrap
  11. 此时,CVS 已配置好,但 SELinux 仍会拒绝登录和文件访问。要演示这一点,在 cvs-client 中设置 $CVSROOT 变量,并尝试远程登录。以下步骤应该在 cvs-client 上执行:
    [cvsuser@cvs-client]$ export CVSROOT=:pserver:cvsuser@192.168.1.1:/cvs
    [cvsuser@cvs-client]$
    [cvsuser@cvs-client]$ cvs login
    Logging in to :pserver:cvsuser@192.168.1.1:2401/cvs
    CVS password: ********
    cvs [login aborted]: unrecognized auth response from 192.168.100.1: cvs pserver: cannot open /cvs/CVSROOT/config: Permission denied
    
    Copy to Clipboard Toggle word wrap
    SELinux 已阻止访问。要让 SELinux 允许此访问,应该在 cvs-srv 上执行以下步骤:
  12. 以 root 身份更改 /cvs/ 目录的上下文,以便递归标记 /cvs/ 目录中的任何现有和新数据,为其提供 cvs_data_t 类型:
    [root@cvs-srv]# semanage fcontext -a -t cvs_data_t '/cvs(/.*)?'
    [root@cvs-srv]# restorecon -R -v /cvs
    Copy to Clipboard Toggle word wrap
  13. 客户端 cvs-client 现在应该能够登录并访问此存储库中的所有 CVS 资源:
    [cvsuser@cvs-client]$ export CVSROOT=:pserver:cvsuser@192.168.1.1:/cvs
    [cvsuser@cvs-client]$
    [cvsuser@cvs-client]$ cvs login
    Logging in to :pserver:cvsuser@192.168.1.1:2401/cvs
    CVS password: ********
    [cvsuser@cvs-client]$
    
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat