19.4. 設定例

19.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)。これは一例に過ぎず、cvsxinetd パッケージがインストールされていること、SELinux ターゲットポリシーを使用していること、SELinux は enforcing モードで実行していることを前提としています。
ここでは、DAC の全パーミッションが許可されている場合でも、SELinux ではファイルのラベルに基づくポリシールールが強制でき、明確に CVS アクセス用のラベルが付けられている特定領域へのアクセスのみを許可することができることを例示しています。

注記

ステップ 1 から 9 は CVS サーバーcvs-srv で行います。
  1. この例では、cvsxinetd のパッケージが必要になります。これらのパッケージがインストールされていることを確認します。
    [cvs-srv]$ rpm -q cvs xinetd
    package cvs is not installed
    package xinetd is not installed
    これらのパッケージがインストールされていない場合は、root で yum ユーティリティーを使用してインストールします。
    [cvs-srv]# yum install cvs xinetd
  2. root で以下のコマンドを実行して、CVS という名前のグループを作成します。
    [cvs-srv]# groupadd CVS
    これは、system-config-users ユーティリティーで行うこともできます。
  3. cvsuser というユーザー名のユーザーを作成し、このユーザーを CVS グループのメンバーにします。system-config-users を使用します。
  4. /etc/services ファイルを編集して、以下のように CVS サーバーのエントリをコメント解除します。
    cvspserver	2401/tcp			# CVS client/server operations
    cvspserver	2401/udp			# CVS client/server operations
  5. CVS リポジトリーをファイルシステムの root 領域に作成します。SELinux を使用する場合、リポジトリーは root ファイルシステムに配置するのが最適です。こうすることで、他のサブディレクトリーに影響を与えることなく、再帰的なラベルを与えることができます。たとえば、root でリポジトリーを格納する /cvs/ ディレクトリーを作成します。
    [root@cvs-srv]# mkdir /cvs
  6. 誰でもアクセスできるように /cvs/ ディレクトリーにすべてのパーミッションを与えます。
    [root@cvs-srv]# chmod -R 777 /cvs

    警告

    これは説明を目的とした例に過ぎません。実稼働システムでは、ここで示すパーミッションを使用しないでください。
  7. /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
  8. xinetd デーモンを起動します。
    [cvs-srv]# systemctl start xinetd.service
  9. system-config-firewall ユーティリティーを使って、ポート 2401 上で TCP を使用した着信接続を許可するルールを追加します。
  10. クライアント側では、cvsuser ユーザーとして以下のコマンドを実行します。
    [cvsuser@cvs-client]$ cvs -d /cvs init
  11. これで 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 で行ってください。
  12. root で /cvs/ ディレクトリーのコンテキストを変更し、cvs_data_t タイプを付与して、/cvs/ 内の既存のデータおよび新規のデータすべてに再帰的にラベル付けが行われるようにします。
    [root@cvs-srv]# semanage fcontext -a -t cvs_data_t '/cvs(/.*)?'
    [root@cvs-srv]# restorecon -R -v /cvs
  13. これで、クライアント 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]$

このページには機械翻訳が使用されている場合があります (詳細はこちら)。