概要
Fedoraで用意したgitリポジトリー用のサーバーにgit用のユーザーやリポジトリーを作成する。ある程度ユーザー権限はgitコマンドのみにするなどの方法で運用してみる。
※正しいのかわからないがroot権限があるユーザーかrootユーザーで作業している。
gitリポジトリー用のディレクトリー作成
好きな場所にディレクトリーを作成すればいいが今回は「/var/git/repos」にリポジトリーを置いていく想定
mkdri /var/git/repos
gitユーザーの作成 ssh公開鍵の登録
「gituser01」という名前で作成する「/usr/bin/git-shell」はgitに関する作業しかできないような制限付きのシェルのことでこのユーザーは通常のssh接続でPCにログインすることはできないようになっている。
useradd -s /usr/bin/git-shell gituser01
SSH公開鍵の登録用のファイルを作成、ディレクトリーとファイル名はこの名前にしておく必要がある。
mkdir /home/gituser01/.ssh
touch /home/gituser01/.ssh/authorized_keys
root権限のユーザーでファイルを作成したのでファイルの権限を「gituser01」にしておく
chown -R gituser01:gituser01/home/gituser01/.ssh
chmod 700 /home/gituser01/.ssh
chmod 600 /home/gituser01/.ssh/authorized_keys
authorized_keysの中身はrsaの公開鍵(pubキー)を登録しておく,ここではsshキーの生成方法は省く
vi /home/gituser01/.ssh/authorized_keys
ssh-rsa
...
gituser01@example.com
グループを作成してユーザーを追加する
gitリポジトリーにユーザーを毎回登録するのもよかったが毎回gitリポジトリーのユーザーについてするのが面倒だと思ったのでgitリポジトリーを操作するグループを作成してそこにgitユーザーを登録する。
リポジトリーなどの権限はこのグループで登録しておけば、グループにユーザーを追加するだけでgitリポジトリーに接続できる(はず)
今回は「gitgroup」というグループにする
// 「gitgroup」というグループを作成
groupadd gitgroup
// 先ほど作成した「gituser01」を追加
usermod -G gitgroup gituser01
// もしグループにユーザーが登録されているか確認したい場合
getent group gitgroup
gitgroup:x:1001:gituser01
Gitリポジトリの作成
リポジトリー名は「repo01」という名前で作成して権限を作成したグループ名「gitgroup」にする。
// /var/git/repos内に移動
cd /var/git/repos
mkdir repo01.git
// 権限変更
sudo chgrp -R gitgroup repo01.git
// 権限が変更されているかの確認
ls -al
---
drwxrwsr-x. 7 root gitgroup 119 Aug 20 16:15 repo01.git
リポジトリーのディレクトリーを作成したら初期化コマンドを行ってもいいがgitのmaster slaveなどの呼び方が良くないらしくhintが表示されることがあるのでデフォルトブランチをmainにしておく。
// リポジトリーの作業のために移動
cd repo01.git/
// デフォルトブランチをmain
git config --system init.defaultBranch main
// gitリポジトリーの初期化
sudo git init --bare --shared
これでリポジトリーサーバは完了
おわりに
リポジトリーを用意出来たらローカルIPアドレスでgitのクローンなどは可能なはず。
クライアントでの最初の行動はgithubを参考にみたいにしておく
// testフォルダーにクローンして初回のコミットをしていみる
echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
// ここはクライアントPCでssh接続できるようにしておく必要がある
git remote add origin gituser01@ローカルIPアドレス:/var/git/repos/repo01.git
git push -u origin main
別のgitユーザーを追加したい場合はユーザー作成とグループの登録を行うだけ。
rootで作業する ユーザー名は「gitf」
// git用のユーザー作成
useradd -s /usr/bin/git-shell gitf
// もろもろssh接続するための処理
mkdir /home/gitf/.ssh
touch /home/gitf/.ssh/authorized_keys
chown -R gitf:gitf /home/gitf/.ssh
chmod 700 /home/gitf/.ssh
chmod 600 /home/gitf/.ssh/authorized_keys
// グループ追加
usermod -G gitgroup gitf
コメント