Show Table of Contents
このページには機械翻訳が使用されている場合があります (詳細はこちら)。
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)。これは一例に過ぎず、cvs と xinetd パッケージがインストールされていること、SELinux ターゲットポリシーを使用していること、SELinux は enforcing モードで実行していることを前提としています。
ここでは、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
- 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.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 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 login
Logging in to :pserver:cvsuser@192.168.1.1:2401/cvs CVS password: ******** [cvsuser@cvs-client]$
このページには機械翻訳が使用されている場合があります (詳細はこちら)。