web-dev-qa-db-ja.com

ユーザーが単一のGitリポジトリにアクセスできるようにする

複数の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.gitpaul.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 pullgit Pushを実行します。それ以上は何もしません。

1
dotancohen

少数のリポジトリの場合、グループアプローチは問題なく機能します。はい、各リポジトリには独自のグループが必要になる可能性があります。さらにリポジトリがあると扱いにくくなります。コメントで@AlexeyTenが述べたように、リポジトリの数が多い場合、またはより「高レベル」の管理インターフェイスが必要な場合は、gitoliteやgitlabなどのリポジトリマネージャーを確認する必要があります。 Gitoliteは、gitリポジトリ内のテキストファイルを介して管理されます(構成ファイルとSSHキーは特別なgitリポジトリにコミットされてプッシュされ、すべてが構成されます)。一方、Gitlabは、セルフホストのGithubと概念が似ているオールインワンのWebアプリです。すべてのベルやホイッスルが必要ない場合は、gitoliteがほぼ確実に機能します。

1
womble