8.4. 設定例
8.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 targeted ポリシーを使用していること、 SELinux は enforced モードで実行していることを前提としています。
DAC の全パーミッションが許可されている場合であっても、 SELinux ではファイルラベルに応じたポリシールールを施行し、 CVS アクセス用のラベルが明確に付けられている特定領域にしかアクセスを許可しないようにすることができます。
注記
ステップ 1 から 9 は CVS サーバー
cvs-srv で行なってください。
- cvs と xinetd のパッケージが必要になります。
rpm -q cvsを実行して、 cvs パッケージがインストールされているか確認してください。 インストールされていない場合は、 root ユーザーで次のコマンドを実行し、 cvs をインストールします。# yum install cvsrpm -q xinetdを実行して、 xinetd パッケージがインストールされているか確認してください。インストールされていない場合は、 root ユーザーで次のコマンドを実行し xinetd をインストールします。# yum install xinetd CVSと言う名前のグループを作成します。 root ユーザーで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- root ユーザーで
service xinetd startを実行し、xinetdデーモンを起動します。 - 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タイプを与えます。[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]$