公式 を見ながらやる。今回は ssh を使って接続する方法をとるが、Git へのアクセスを制御する方法は腐るほどあるようで、リストが ここ にある。
$ sudo adduser git $ sudo su git git$ cd git$ mkdir .ssh git$ chmod 700 .ssh git$ cat pubkey >> .ssh/authorized_keys git$ chmod 600 .ssh/authorized_keys git$ exit $ which git-shell /usr/bin/git-shell $ sudo vim /etc/passwd
- git:x:1000:1000::/home/git:/bin/bash + git:x:1000:1000::/home/git:/usr/bin/git-shell
上記の設定をすると $ sudo su git
でも git
としてログインできなくなる ので、新しいディレクトリを作成するなどは sudoer が行う。その際に chown -R git:git しておくのを忘れないように。→ 記事末尾の追記参照
$ sudo su - # cd /home/git/ # mkdir testrepo # cd ~/testrepo # git init --bare # You cannot push to non-bare repo. # cd /home/git/ # chown -R git:git testrepo # exit
2014-02-11 追記
- ログインシェルとして git-shell が指定されている状態でも
$ sudo su git -s /bin/bash
とすれば指定されているログインシェルを無視して bash でログインできる。
ご指摘ありがとうございます!
2016-01-06 追記
Redmine のリポジトリにデフォルトで表示されるブランチを develop に変更したい。Redmine は HEAD を見にいっているっぽいので remote/HEAD を remote/develop に変更すればよい。local でやるだけではダメで remote でやらなければならない。
Initial push をしたのちに、remote のリポジトリに行って次のコマンドを打てば OK。
$ git symbolic-ref HEAD refs/heads/develop