18.4. 設定の例
18.4.1. CDK の設定
この例では、簡単な CVS 設定と、リモートアクセスを可能にする SELinux 設定を説明します。ここでは、ホスト名が
192.168.1.1
の cvs-srv
の CVS サーバーと、ホスト名が cvs-client
で IP アドレスが 192.168.1.100
のクライアント の 2 つのホストが使用されます。両方のホストが同じサブネット (192.168.1.0/24) にあります。これは一例で、cvs パッケージと xinetd パッケージがインストールされ、SELinux targeted ポリシーが使用され、SELinux が実施モードで実行されていることを前提としています。
この例では、完全な DAC パーミッションを使用しても、SELinux はファイルラベルに基づくポリシールールを強制でき、CVS によるアクセスのラベルが付けられた特定の領域へのアクセスのみを許可することを示しています。
注記
手順 1-9 は、CVS サーバー
cvs-srv
上で実行されているはずです。
- この例では、cvs パッケージと xinetd パッケージが必要です。パッケージがインストールされていることを確認します。
[cvs-srv]$ rpm -q cvs xinetd package cvs is not installed package xinetd is not installed
インストールされていない場合は、root でyum
ユーティリティーを使用してインストールします。[cvs-srv]# yum install cvs xinetd
- root で次のコマンドを実行して、
CVS
という名前のグループを作成します。[cvs-srv]# groupadd CVS
これは、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
- ファイルシステムの root 領域に CVS リポジトリーを作成します。SELinux を使用する場合は、root ファイルシステムにリポジトリーを置いて、他のサブディレクトリーに影響を及ぼさずに再帰的なラベルを付けられるようにすることが最善の方法です。たとえば、root で、リポジトリーを格納する
/cvs/
ディレクトリーを作成します。[root@cvs-srv]# mkdir /cvs
- すべてのユーザーに、
/cvs/
ディレクトリーの完全なパーミッションを付与します。[root@cvs-srv]# chmod -R 777 /cvs
警告これは単なる例で、このような権限は実稼働システムでは使用できません。 /etc/xinetd.d/cvs
ファイルを編集し、CVS セクションがコメント解除されており、/cvs/
ディレクトリーを使用するように設定されていることを確認します。ファイルは以下のようになります。service cvspserver { disable = no port = 2401 socket_type = stream protocol = tcp wait = no user = root passenv = PATH server = /usr/bin/cvs env = HOME=/cvs server_args = -f --allow-root=/cvs pserver # bind = 127.0.0.1
xinetd
デーモンを起動します。[cvs-srv]# systemctl start xinetd.service
system-config-firewall
ユーティリティーを使用して、ポート 2401 で TCP 経由での着信接続を許可する規則を追加します。- クライアントで、
cvsuser
ユーザーとして以下のコマンドを実行します。[cvsuser@cvs-client]$ cvs -d /cvs init
- この時点で、CVS は設定されていますが、SELinux はログインとファイルアクセスを拒否します。これを実証するには、
cvs-client
で$CVSROOT
変数を設定し、リモートでログインを試みます。cvs-client
では、以下の手順を行う必要があります。[cvsuser@cvs-client]$ export CVSROOT=:pserver:cvsuser@192.168.1.1:/cvs [cvsuser@cvs-client]$ [cvsuser@cvs-client]$ cvs login Logging in to :pserver:cvsuser@192.168.1.1:2401/cvs CVS password: ******** cvs [login aborted]: unrecognized auth response from 192.168.100.1: cvs pserver: cannot open /cvs/CVSROOT/config: Permission denied
SELinux がアクセスをブロックしました。SELinux にこのアクセスを許可させるために、次のステップはcvs-srv
で実行されることになっています。 /cvs/
ディレクトリーのコンテキストを root 権限で変更し、/cvs/
ディレクトリーの既存データーおよび新規データーに再帰的にラベル付けするcvs_data_t
タイプを指定します。[root@cvs-srv]# semanage fcontext -a -t cvs_data_t '/cvs(/.*)?' [root@cvs-srv]# restorecon -R -v /cvs
- クライアント
cvs-client
は、このリポジトリーにログインし、すべての CVS リソースにアクセスできるようになります。[cvsuser@cvs-client]$ export CVSROOT=:pserver:cvsuser@192.168.1.1:/cvs [cvsuser@cvs-client]$ [cvsuser@cvs-client]$ cvs login Logging in to :pserver:cvsuser@192.168.1.1:2401/cvs CVS password: ******** [cvsuser@cvs-client]$