Show Table of Contents
22.4. 設定例
22.4.1. デーモンとして rsync を使用する
Red Hat Enterprise Linux を使用する場合、rsync をデーモンとして使用することで、複数のクライアントがセントラルサーバーとしてこのデーモンと直接通信して、一元的にファイルを格納し、継続的に同期することができます。以下の例では、rsync を適切なドメイン内のネットワークソケットでデーモンとして実行し、SELinux が期待する、事前定義された TCP ポート (SELinux ポリシー内) 上でのこのデーモンの実行を説明します。次に、非標準のポートでの
rsync デーモンによる正常な実行を許可するため SELinux を編集する方法について説明していきます。
SELinux ポリシーとローカルのデーモンおよびプロセスに対するその制御を示すために、この例は単一のシステム上で行います。以下に示す例は、rsync に対してどのように SELinux が影響を与えることができるのかを示す一例に過ぎません。rsync に関する総合的な説明は本ガイドの対象外となります。詳細については、公式の rsync ドキュメント を参照してください。ここでは、rsync パッケージ、setroubleshoot-server パッケージ、audit パッケージがインストールされていること、SELinux のターゲットポリシーを使用していること、SELinux が enforcing モードで実行されていることを前提としています。
手順22.1 rsync を rsync_t として起動する
getenforceコマンドを実行して、SELinux が enforcing モードで実行していることを確認します。~]$
getenforceEnforcingSELinux が enforcing モードで実行している場合は、Enforcingが返されます。whichコマンドを実行し、rsync バイナリがシステムパス内にあるか確認します。~]$
which rsync/usr/bin/rsync- 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 - これで、rsync がデーモンモードで動作する簡単な設定ファイルができたので、以下のコマンドでこれを起動することができます。
~]#
systemctl start rsyncd.servicersyncdが正常に起動したことを確認します。出力は以下のようになり、タイムスタンプのみが異なります。~]#
systemctl status rsyncd.servicersyncd.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-detachrsync がrsync_tドメイン内で実行するようになったため、SELinux はその保護メカニズムをrsyncデーモンに適用できます。~]$
ps -eZ | grep rsyncsystem_u:system_r:rsync_t:s0 3220 ? 00:00:00 rsync
上記の例では、
rsyncd を rsync_t ドメイン内で実行する方法について説明しました。rsync は、ソケットでアクティベートされたサービスとして実行することも可能です。この場合、rsyncd は、クライアントがサービスに接続を試みるまで実行されません。ソケットでアクティベートされたサービスとして rsyncd を実行可能とするには、上記のステップに従います。ソケットでアクティベートされたサービスとして rsyncd を開始するには、root で以下のコマンドを実行します。
~]# systemctl start rsyncd.socket
次の例では、このデーモンをデフォルト以外のポートで適切に実行する方法について説明します。ここでは TCP ポート 10000 を使用します。
手順22.2 デフォルト以外のポートで rsync デーモンを実行する
/etc/rsyncd.confファイルを変更して、port = 10000の行をファイルの冒頭にあるグローバル設定エリア内に追加します (つまり、file エリアが定義される前)。新しい設定ファイルは以下のようになります。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- この新規設定で
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
semanageユーティリティーを使用して TCP ポート 10000 をrsync_port_tの SELinux ポリシーに追加します。~]#
semanage port -a -t rsync_port_t -p tcp 10000- TCP ポート 10000 が
rsync_port_tの SELinux ポリシーに追加されたので、rsyncdがこのポートで正常に起動し、動作するようになります。~]#
systemctl start rsyncd.service~]#
netstat -lnp | grep 10000tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN 9910/rsync
SELinux のポリシーが修正されたため、
rsyncd による TCP ポート 10000 での動作が許可されるようになりました。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.