gitosis - Git リポジトリ群の管理とアクセス制御 vol.0 の続編です。
前回のエントリでは、Git リポジトリの管理に対する不満と、それを少し改善してくれる gitosis を簡単に紹介をしました。このエントリでは gitosis のインストール編ということで話を進めていきます。
基本的に Hosting Git repositories, The Easy (and Secure) Way のエントリと同様です。本家の方が安心という人はそちらのエントリをどうぞ。
サーバ/クライアント(ローカル)両方で作業する必要があるので、識別しやすいように以下の表記をします。
サーバ作業のプロンプト表記
remote%
クライアント(ローカル)作業のプロンプト表記
local%
また、サーバアドレスを便宜上 remote-name.com とします。
まずは Git リポジトリをホストするサーバに git 及び gitosis をインストールします。サーバにログインしてインストールを開始します。
local% ssh keiji@remote-name.com remote% sudo aptitude install git git-core remote% sudo aptitude python python-setuptools # gitosis は python で書かれてるため必要に応じてインストールする。 remote% mkdir ~/src remote% cd ~/src remote% git clone git://eagain.net/gitosis.git remote% cd gitosis remote% sudo python setup.py install # gitosis をシステムにインストールする。
ここまでで gitosis のインストールは終了。僕は ubuntu 8.04 server edition で試していますが特に問題なくインストール完了しました。
次に、サーバ上にホストする Git リポジトリの管理用ユーザを作成します。gitosis は ~/.ssh/authorized_keys をいじる(生成する)ので、~/.ssh/authorized_keys を編集している場合は gitosis によって勝手に上書きされてしまって「うわーん」な状況になってしまいます。そのため Git 用に新しくユーザを作った方が無難です。
そういうことで、ここでは git ユーザを作成します。このユーザは公開鍵によるログインしか行わないのでパスワードログインは無効にしておきます。
remote% sudo adduser --system --shell /bin/sh --gecos 'git version control' --group --disabled-password --home /home/git git
git ユーザの作成が完了したら、gitosis が管理する Gitリポジトリコンテナ1 を作成します。このコンテナを作成するには、少なくとも一つはアカウントを登録しなければなりません(ここで登録するアカウントはコンテナの管理アカウントになります。管理アカウントは後で変更できます)。gitosis は公開鍵 によってアカウントを識別するので、まずは自分自身のアカウントを作るために自分の公開鍵をサーバに転送することにします(公開鍵を持っていない場合は適宜作成する)。
local% % scp ~/.ssh/id_rsa.pub keiji@remote-name.com:/home/keiji # 自分の公開鍵をサーバに転送
さて、ようやく gitosis のリポジトリコンテナを作成するときがきました!コンテナの作成には gitosis に付属する gitosis-init スクリプトを使用します。このスクリプトは gitosis のインストールが完了していれば、既にシステム上に存在しているはずです。
% sudo -H -u git gitosis-init < /home/keiji/id_rsa.pub # gitosis-init を用いて先程転送してきた鍵を登録。上で作ったユーザ(git)で実行 Initialized empty Git repository in ./ Initialized empty Git repository in ./ % sudo ls /home/git # git ユーザのホームディレクトリにgitosisとrepositoriesという二つのディレクトリが作られてる gitosis repositories
gitosis-init を実行すると /home/git は以下のファイルとディレクトリが作られているはずです。
/home/git/
|-- .gitosis.conf -> /home/git/repositories/gitosis-admin.git/gitosis.conf
|-- .ssh
| `-- authorized_keys # gitosis-admin.git の内容が push されると、gitosis-admin.git の内容に応じて再生成される
|-- gitosis
| `-- projects.list
`-- repositories
`-- gitosis-admin.git
そして最後に gitosis がアクセス制御に使用する Git リポジトリ(gitosis-admin.git) に含まれる post-update フックスクリプトのパーミッションをチェックしておきます。post-update フックスクリプトには実行権限が付与されている必要があります。通常 755 になっているはずですが、なっていなかったら適宜 chmod して下さい。これは重要な作業です。
パーミッションが以下のようになっていれば問題ありません。
remote% sudo ls -l /home/git/repositories/gitosis-admin.git/hooks/post-update -rwxr-xr-x 1 git git 69 2008-11-06 15:26 /home/git/repositories/gitosis-admin.git/hooks/post-update
これでサーバ上のリポジトリコンテナのセットアップは完了!
クライアントからこのリポジトリコンテナにアクセスできるかどうか試してみます。
local% mkdir -p ~/workspace/hosting-self local% cd ~/workspace/hosting-self local% git clone git@remote-name.com:gitosis-admin.git # or ssh://git@remote-name/gitosis-admin.git
gitosis-admin.git を git clone することができれば完了です。
gitosis-admin.git リポジトリについて簡単に説明します。 このリポジトリはアカウントを登録/削除したり、アクセス制御を設定するために使用します。アカウントを追加登録したい場合には、リポジトリ内の keydir ディレクトリ以下に追加アカウント用の公開鍵を git add することで行います。アクセス制御を設定するにはリポジトリ内にある gitosis.conf を編集します。
もちろん、この gitosis-admin.git リポジトリ自体もアクセス制御の対象です。
gitosis-admin.git については次のエントリでもう少し詳しく紹介します。
- 複数の Git リポジトリを収容するという意味で僕が勝手にリポジトリコンテナと表現した ↩
Comments:0
Trackbacks:4
- Trackback URL for this entry
- http://openbooth.org/archives/65.html/trackback
- Listed below are links to weblogs that reference
- gitosis - Git リポジトリ群の管理とアクセス制御 vol.1 from openbooth
- pingback from gitosis - Git リポジトリ群の管理とアクセス制御 vol.2 - openbooth 08-11-08 (土) 18:01
-
[...] Older [...]
- pingback from Ikeda->Weblog() » Blog Archive » iPod Touch な生活。 09-03-12 (木) 11:02
-
[...] トリからPull。Githubもいいけどとりあえず自サーバのリポジトリをgitosisで管理。 [...]
- trackback from Rente 09-05-01 (金) 2:04
-
Bij het voorspellen van de rente wordt vaak gekeken naar het historische renteverloop.
Een ingrijpende verandering die gaat plaatsvinden op het gebied van pensioenen is de afschaffing van de partnertoeslag
- pingback from Vantage Point of Queens - gitosis をインストール 10-01-18 (月) 14:56
-
[...] 日本語で書かれたものとして openbooth さんの gitosis – Git リポジトリ群の管理とアクセス制御 vol.1が非常によく纏まっています。僕は Install (Set Up) Git and Gitosis on Ubuntu を参考にしました [...]