複数のGitリポジトリをホストするサーバーについて考えてみます。
$ ls -l /opt/git/
drwxrwxr-x 7 ubuntu root 4096 Jan 2 2014 george.git
drwxrwxr-x 7 ubuntu root 4096 Dec 29 2013 john.git
drwxrwsr-x 7 ubuntu root 4096 Jul 4 2013 paul.git
drwxrwsr-x 7 ubuntu root 4096 Jun 30 2013 ringo.git
これまで、すべての開発者はSSH経由ですべてのGitリポジトリにアクセスできました。現在、john.git
リポジトリにのみアクセスできる開発者を追加しています。 Linuxユーザーyoko
を作成しましたが、yoko
に/opt/git/john.git
の他のディレクトリへのアクセスを許可せずに、最も安全な方法で/opt/git/
ディレクトリにアクセスさせる方法がわかりません。
アクセスを制限する標準的な方法は何ですか?
私の傾向は、john.git
をグループfoobar
として作成し、そのグループをユーザーyoko
のグループに追加することです。ただし、後で2つのリポジトリにアクセスできる別のユーザーを追加する必要がある場合はどうなりますか?たとえば、john.git
とpaul.git
の両方にアクセスできるユーザーcynthia
を追加したい場合があります。 Gitリポジトリごとに個別のグループを作成する必要がありますか?非常にすぐに扱いにくくなることがわかりました
これらのユーザーは、自分の/home/user/
ディレクトリ以外にnothingにアクセスでき、さらに許可されているGitリポジトリにアクセスできる必要があることに注意してください。 /home/yoko/john.git
から/opt/git/john.git
にシンボリックリンクする方法がある場合は、残りの/opt/git/
にアクセスできないようにするのが最善ですが、システムをそのように構成することはできないようです。
サーバーはUbuntuServer 12.04を実行していますが、必要に応じて14.04に更新することもできます。ユーザーは、パスワードなしでRSAキーを使用してSSH経由で接続します。彼らはサーバー上でgit pull
とgit Push
を実行します。それ以上は何もしません。
少数のリポジトリの場合、グループアプローチは問題なく機能します。はい、各リポジトリには独自のグループが必要になる可能性があります。さらにリポジトリがあると扱いにくくなります。コメントで@AlexeyTenが述べたように、リポジトリの数が多い場合、またはより「高レベル」の管理インターフェイスが必要な場合は、gitoliteやgitlabなどのリポジトリマネージャーを確認する必要があります。 Gitoliteは、gitリポジトリ内のテキストファイルを介して管理されます(構成ファイルとSSHキーは特別なgitリポジトリにコミットされてプッシュされ、すべてが構成されます)。一方、Gitlabは、セルフホストのGithubと概念が似ているオールインワンのWebアプリです。すべてのベルやホイッスルが必要ない場合は、gitoliteがほぼ確実に機能します。