Show Table of Contents
このページには機械翻訳が使用されている場合があります (詳細はこちら)。
23.4. 設定例
23.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 モードで実行されていることを前提としています。
手順23.1 rsync を rsync_t として起動する
getenforce
コマンドを実行して、SELinux が enforcing モードで実行していることを確認します。~]$
getenforce
EnforcingSELinux が 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.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-detachrsync がrsync_t
ドメイン内で実行するようになったため、SELinux はその保護メカニズムをrsync
デーモンに適用できます。~]$
ps -eZ | grep rsync
system_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 を使用します。
手順23.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 10000
tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN 9910/rsync
SELinux のポリシーが修正されたため、
rsyncd
による TCP ポート 10000 での動作が許可されるようになりました。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。