Menu Close

Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

22.4. 設定の例

22.4.1. rsync をデーモンとして使用する

Red Hat Enterprise Linux を使用する場合は、rsync をデーモンとして使用することができ、複数のクライアントを直接中央サーバーとして通信して、集中化されたファイルを格納し、同期を保つことができます。以下の例では、rsync を正しいドメインのネットワークソケット経由でデーモンとして実行し、SELinux がこのデーモンを事前定義(SELinux ポリシー)の TCP ポートで実行することを想定しています。この例では、SELinux ポリシーを変更して、rsync デーモンを標準以外のポートで正常に実行できるようにする方法を説明します。
この例は、SELinux ポリシーと、ローカルデーモンおよびプロセスを制御するために、1 台のシステムで実行します。これは単なる例であり、SELinux が rsync にどのように影響するかを実証することに注意してください。rsync の包括的なドキュメントは、本書の対象外です。詳細は、公式の rsync ドキュメントを参照してください。この例では、rsyncsetroubleshoot-server パッケージ、および audit パッケージが、SELinux のターゲットポリシーが使用され、SELinux が Enforcing モードで実行されていることを前提としています。

手順22.1 rsync を使用して rsync_t として起動

  1. getenforce コマンドを実行して、SELinux が Enforcing モードで実行されていることを確認します。
    ~]$ getenforce
    Enforcing
    
    このコマンドは、SELinux が Enforcing モードで実行している場合に Enforcing を返します。
  2. このコマンドを実行して 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 _t ドメインで実行されているようになったため、rsync デーモンで保護メカニズムを強制できるようになりました。
    ~]$ ps -eZ | grep rsync
    system_u:system_r:rsync_t:s0     3220 ?        00:00:00 rsync
    
この例では、rsync _t ドメイン で実行されている rsync を取得する方法を示しています。rsync はソケットが有効になったサービスとして実行することもできます。この場合、rsyncd はクライアントがサービスへの接続を試みるまで実行されません。rsyncd がソケットが有効になったサービスとして実行できるようにするには、上記の手順に従ってください。socket-activated サービスとして rsync を起動するには、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 ユーティリティーを使用して、rsync_port_t の SELinux ポリシーに TCP ポート 10000 を追加します。
    ~]# semanage port -a -t rsync_port_t -p tcp 10000
  4. TCP ポート 10000 が rsync_port_t の SELinux ポリシーに追加され、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 で動作できるようになりました。