Menu Close

Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

18.4. 設定の例

18.4.1. CVS の設定

この例では、簡単な CVS 設定と、リモートアクセスを可能にする SELinux 設定を説明します。この例では、ホスト 2 台を使用しています。ホスト名が cvs-srv で、IP アドレスが 192.168.1.1 の CVS サーバーと、cv s-client のホスト名と 192.168.1.100 の IP アドレスを持つクライアント。両方のホストが同じサブネット上にあります(192.168.1.0/24)。これは唯一の例であり、cvs および xinetd パッケージがインストールされ、SELinux のターゲットポリシーが使用され、SELinux が強制モードで実行されていることを前提としています。
この例では、完全な DAC パーミッションであっても、SELinux はファイルラベルに基づいてポリシールールを強制でき、CVS によるアクセスにとくにラベル付けされた特定の領域へのアクセスのみを許可することを示しています。
注記
手順 1-9 は、CVS サーバー cvs-srv で実行する必要があります。
  1. この例では、cv パッケージおよび 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
  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 リポジトリーを作成します。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. クライアント側で、cv suser ユーザーとして以下のコマンドを入力します。
    [cvsuser@cvs-client]$ cvs -d /cvs init
  11. この時点で、CVS は設定されていますが、SELinux はログインおよびファイルのアクセスを拒否します。これを行うには、cv s-client$CVSROOT 変数を設定し、リモートでログインしてみてください。次の手順は、cv s-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 を取得するには、cv s-srv で以下の手順を実行 する必要があります。
  12. /cvs/ ディレクトリー内の既存データおよび新しいデータを再帰的にラベル付けするために、/ cvs/ ディレクトリーのコンテキストを root として変更し、それに cvs_data_t タイプを指定します。
    [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]$