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.1xinetdデーモンを起動します。[cvs-srv]# systemctl start xinetd.servicesystem-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 deniedSELinux がアクセスをブロックしました。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]$