Show Table of Contents
18.4. 設定例
18.4.1. CVS のセットアップ
以下の例では、リモートアクセスを許可する SELinux 設定と簡単な CVS セットアップを示しています。使用する 2 台のホストは、ホスト名が
cvs-srv で IP アドレスが 192.168.1.1 の CVS サーバーと、ホスト名が cvs-client で IP アドレスが 192.168.1.100 のクライアントです。いずれのホストも同一サブネット上にあります (192.168.1.0/24)。これは一例に過ぎず、cvs と xinetd パッケージがインストールされていること、SELinux ターゲットポリシーを使用していること、SELinux は enforcing モードで実行していることを前提としています。
ここでは、DAC の全パーミッションが許可されている場合でも、SELinux ではファイルのラベルに基づくポリシールールが強制でき、明確に CVS アクセス用のラベルが付けられている特定領域へのアクセスのみを許可することができることを例示しています。
注記
ステップ 1 から 9 は CVS サーバー
cvs-srv で行います。
- この例では、cvs と xinetd のパッケージが必要になります。これらのパッケージがインストールされていることを確認します。
[cvs-srv]$
rpm -q cvs xinetdpackage 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
- CVS リポジトリーをファイルシステムの root 領域に作成します。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 loginLogging 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で行ってください。 - root で
/cvs/ディレクトリーのコンテキストを変更し、cvs_data_tタイプを付与して、/cvs/内の既存のデータおよび新規のデータすべてに再帰的にラベル付けが行われるようにします。[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 loginLogging in to :pserver:cvsuser@192.168.1.1:2401/cvs CVS password: ******** [cvsuser@cvs-client]$

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.