Home > server | setup > gitosis - Git リポジトリ群の管理とアクセス制御 vol.1

gitosis - Git リポジトリ群の管理とアクセス制御 vol.1fake permalink

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 ユーザのホームディレクトリに gitosisrepositories という二つのディレクトリが作られてる
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 については次のエントリでもう少し詳しく紹介します。

  1. 複数の Git リポジトリを収容するという意味で僕が勝手にリポジトリコンテナと表現した

Comments:0

Comment Form
Remember personal info

Trackbacks:6

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 を参考にしました [...]

pingback from gitosisを入れてみた | shoutack/blog 10-07-15 (木) 2:21

[...] [gitosis - Git リポジトリ群の管理とアクセス制御 vol.1 - openbooth] http://openbooth.org/archives/65.html [...]

pingback from yamakk blog » Blog Archive » Gitのユーザ管理をgitosisで設定する 10-08-12 (木) 19:54

[...] gitosis – Git リポジトリ群の管理とアクセス制御 vol.0 gitosis – Git リポジトリ群の管理とアクセス制御 vol.1 [...]

Home > server | setup > gitosis - Git リポジトリ群の管理とアクセス制御 vol.1

Search
Feeds
Meta

Return to page top