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)中。这只是一个示例,假设已安装了 cvs 和 xinetd 软件包,使用了 SELinux targeted 策略,并且 SELinux 正以强制模式运行。
此示例将显示,即使具有完全 DAC 权限,SELinux 仍然可以根据文件标签强制执行策略规则,并且只允许访问已明确由 CVS 标识访问的特定区域。
注意
步骤 1-9 应在 CVS 服务器
cvs-srv 上执行。
- 这个示例需要 cvs 和 xinetd 软件包。确认已安装了软件包:
rpm -q cvs xinetd
[cvs-srv]$ rpm -q cvs xinetd package cvs is not installed package xinetd is not installedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有安装它们,请以 root 用户身份使用yum工具安装它:yum install cvs xinetd
[cvs-srv]# yum install cvs xinetdCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 以 root 用户身份输入以下命令,创建名为
CVS的组:groupadd CVS
[cvs-srv]# groupadd CVSCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这也可以通过使用system-config-users实用程序来完成。 - 创建用户名为
cvsuser的用户,并使此用户成为 CVS 组的成员。这可以通过system-config-users完成。 - 编辑
/etc/services文件,并确保 CVS 服务器有取消注释的条目,如下所示:cvspserver 2401/tcp # CVS client/server operations cvspserver 2401/udp # CVS client/server operations
cvspserver 2401/tcp # CVS client/server operations cvspserver 2401/udp # CVS client/server operationsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 在文件系统的根区域创建 CVS 存储库。在使用 SELinux 时,最好在 root 文件系统中包含 存储库,以便为它指定递归标签,而不影响任何其他子目录。例如,以 root 用户身份创建一个
/cvs/目录来存储存储库:mkdir /cvs
[root@cvs-srv]# mkdir /cvsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 为所有用户授予
/cvs/目录的完整权限:chmod -R 777 /cvs
[root@cvs-srv]# chmod -R 777 /cvsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 警告这只是一个示例,不应在生产系统中使用这些权限。 - 编辑
/etc/xinetd.d/cvs文件,并确保 CVS 部分已取消注释并配置为使用/cvs/目录。该文件应类似于:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 启动
xinetd守护进程:systemctl start xinetd.service
[cvs-srv]# systemctl start xinetd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 添加一条规则,该规则允许使用
system-config-firewall实用程序通过端口 2401 上的 TCP 进行入站连接。 - 在客户端中,以
cvsuser用户身份输入以下命令:cvs -d /cvs init
[cvsuser@cvs-client]$ cvs -d /cvs initCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 此时,CVS 已配置好,但 SELinux 仍会拒绝登录和文件访问。要演示这一点,在
cvs-client中设置$CVSROOT变量,并尝试远程登录。以下步骤应该在cvs-client上执行:Copy to Clipboard Copied! Toggle word wrap Toggle overflow SELinux 已阻止访问。要让 SELinux 允许此访问,应该在cvs-srv上执行以下步骤: - 以 root 身份更改
/cvs/目录的上下文,以便递归标记/cvs/目录中的任何现有和新数据,为其提供cvs_data_t类型:semanage fcontext -a -t cvs_data_t '/cvs(/.*)?' restorecon -R -v /cvs
[root@cvs-srv]# semanage fcontext -a -t cvs_data_t '/cvs(/.*)?' [root@cvs-srv]# restorecon -R -v /cvsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 客户端
cvs-client现在应该能够登录并访问此存储库中的所有 CVS 资源:Copy to Clipboard Copied! Toggle word wrap Toggle overflow