22.4. 配置示例


22.4.1. rsync 作为守护进程

在使用红帽企业 Linux 时,rsync 可用作守护进程,让多个客户端可以直接将其通信为中央服务器,从而存储中央文件并保持它们同步。以下示例将演示通过正确的域中的网络套接字将 rsync 作为守护进程运行,以及 SELinux 如何期望此守护进程在预定义(SELinux 策略中)TCP 端口上运行。然后,本示例将演示如何修改 SELinux 策略,以允许 rsync 守护进程在非标准端口上正常运行。
此示例将在单个系统上执行,以演示 SELinux 策略及其对本地后台程序和进程的控制。请注意,这只是一个示例,并演示了 SELinux 如何影响 rsync。rsync 的综合文档不在本文的讨论范围之内。详情请查看官方的 rsync 文档。本例假定安装了 rsyncsetroubleshoot-serveraudit 软件包,使用了 SELinux targeted 策略,并且 SELinux 处于强制模式。

过程 22.1. 获取 rsync 作为 rsync_t 启动

  1. 运行 getenforce 命令,确认 SELinux 是否在 enforcing 模式下运行:
    ~]$ getenforce
    Enforcing
    
    当 SELinux 处于 enforcing 模式时,命令会返回 Enforcing
  2. 运行 which 命令来确认 rsync 二进制文件在系统路径中:
    ~]$ which rsync
    /usr/bin/rsync
    
  3. 当将 rsync 作为守护进程运行时,应使用配置文件并保存为 /etc/rsyncd.conf。请注意,在本示例中使用的以下配置文件非常简单,并不包括所有可用的选项,而是足以演示 rsync 守护进程:
    log file = /var/log/rsync.log
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    [files]
    	path = /srv/rsync
            comment = file area
            read only = false
            timeout = 300
    
  4. 现在,rsync 有一个简单的配置文件可在守护进程模式下运行,您可以运行以下命令来启动该文件:
    ~]# systemctl start rsyncd.service
    确保 rsyncd 已成功启动(输出应该类似以下示例,只有时间戳会有所不同):
    ~]# systemctl status rsyncd.service
    rsyncd.service - fast remote file copy program daemon
       Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; disabled)
       Active: active (running) since Thu 2014-02-27 09:46:24 CET; 2s ago
     Main PID: 3220 (rsync)
       CGroup: /system.slice/rsyncd.service
               └─3220 /usr/bin/rsync --daemon --no-detach
    
    SELinux 现在可以通过 rsync 守护进程强制其保护机制,因为它现在在 rsync_t 域中运行:
    ~]$ ps -eZ | grep rsync
    system_u:system_r:rsync_t:s0     3220 ?        00:00:00 rsync
    
本例演示了如何在 rsync_ t 域中运行 rsync。rsync 也可以作为套接字激活的服务运行。在这种情况下,在客户端尝试连接到该服务之前,不会执行 rsyncd。要启用 rsyncd 作为套接字激活服务运行,请按照以下步骤执行。要将 rsyncd 作为 socket-activated 服务启动,请以 root 用户身份输入以下命令:
~]# systemctl start rsyncd.socket
下一个示例演示了如何在非默认端口上成功运行此守护进程。下一个示例中使用 TCP 端口 10000。

过程 22.2. 在非默认端口上运行 rsync 守护进程

  1. 修改 /etc/rsyncd.conf 文件,并在全局配置区域(即定义任何文件区域之前)的文件顶部添加 port = 10000 行。新配置文件将如下所示:
    log file = /var/log/rsyncd.log
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    port = 10000
    [files]
            path = /srv/rsync
            comment = file area
            read only = false
    	timeout = 300
    
  2. 在使用这个新设置启动 rsync 守护进程后,SELinux 会记录类似如下的拒绝信息:
    Jul 22 10:46:59 localhost setroubleshoot: SELinux is preventing the rsync (rsync_t) from binding to port 10000. For complete SELinux messages, run sealert -l c371ab34-639e-45ae-9e42-18855b5c2de8
    
  3. 使用 semanage 工具将 TCP 端口 10000 添加到 rsync_port_t 中的 SELinux 策略中:
    ~]# semanage port -a -t rsync_port_t -p tcp 10000
  4. 现在,在 rsync_port_t 的 SELinux 策略中增加了 TCP 端口 10000,rsyncd 将在此端口上启动并运行:
    ~]# systemctl start rsyncd.service
    ~]# netstat -lnp | grep 10000
    tcp        0      0 0.0.0.0:10000   0.0.0.0:*      LISTEN      9910/rsync
    
SELinux 已修改其策略,现在允许 rsyncd 在 TCP 端口 10000 上操作。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.