Linux搭建Git共享仓库

Linux搭建Git共享仓库

在CVM云服务器上,纯净的CentOS 7.5 64位版本,搭建简单的Git共享仓库,实现多用户协作开发


账号密码登录

每个用户拥有独立的账号密码,通过账号密码登录操作Git仓库。方便对用户进行管理,能准确、快速的找到操作文件的用户,但每次操作需输入账号密码,增加了操作Git仓库的复杂度。

1、Git安装

1
yum install -y git

2、创建Git用户组

通过Git用户组来管理可操作Git仓库的用户。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建git用户组
groupadd git

# 创建用户git添加至git用户组
useradd git -g git

# 设置用户git的密码
passwd git

# 创建用户crazy添加至git用户组
useradd crazy -g git

# 设置用户crazy的密码
passwd crazy

3、禁止Git用户登录服务器

添加的用户默认可以登录服务器,需限制Git用户组用户只能操作Git仓库,不能登录服务器。

1
2
3
4
5
6
7
8
9
10
# 打开/etc/passwd文件
vi /etc/passwd

# 将bash改为git-shell
#修改前
git:x:1000:1000::/home/git:/bin/bash
crazy:x:1001:1000::/home/crazy:/bin/bash
#修改后
git:x:1000:1000::/home/git:/bin/git-shell
crazy:x:1001:1000::/home/crazy:/bin/git-shell

4、创建Git仓库

1
2
3
4
5
# 创建Git仓库目录
mkdir /home/git/test.git

# 初始化Git仓库
git init --bare /home/git/test.git

5、共享Git仓库

仅将仓库操作权限授予Git用户组,可以使得组内用户具备操作仓库的权限,但此时仓库内crazy用户新增或变更的文件,sky用户将不具备写入该文件的权限。这是因为新增文件时默认会给予755权限,而Git变更文件时,会重新新增变更的文件,也就是无论新增还是变更文件,权限都会被改变为755,从而导致用户组权限变为5,组内其他用户仅具备读取、执行文件的操作权限。将Git仓库设置成为共享仓库后,新增文件的权限将会由原来的默认755变成默认775。

1
2
3
4
5
# 打开/home/git/test.git/config文件
vi /home/git/test.git/config

# 在打开的文件中新增配置
sharedRepository = 1

6、授权Git用户组

将仓库操作权限授予Git用户组,使得组内用户可以操作仓库。

1
2
3
4
5
# 修改Git仓库目录及其子文件的权限
chmod -R 770 /home/git

# 授权Git用户组
chgrp -R git /home/git

SSH免密登录

配置好SSH免密登录后,无需输入账号密码即操作Git仓库,提高了操作Git仓库的效率。

注意:权限修改要放在最后进行,修改文件、新增文件可能会改变文件权限和文件所有者,配置完SSH免密登录后仍需输入密码大概率是权限未修改正确。

1、Git安装

1
yum install -y git

2、创建Git用户

通过Git用户来管理Git仓库。

1
2
3
4
5
# 创建用户git添加至git用户组
useradd git

# 设置用户git的密码
passwd git

3、禁止Git用户登录服务器

添加的用户默认可以登录服务器,需限制Git用户只能操作Git仓库,不能登录服务器。

1
2
3
4
5
6
7
8
# 打开/etc/passwd文件
vi /etc/passwd

# 将bash改为git-shell
#修改前
git:x:1000:1000::/home/git:/bin/bash
#修改后
git:x:1000:1000::/home/git:/bin/git-shell

4、创建Git仓库

1
2
3
4
5
# 创建Git仓库目录
mkdir /home/git/test.git

# 初始化Git仓库
git init --bare /home/git/test.git

5、配置SSH

服务器的authorized_keys文件存放客户机的公钥,文件中一行即为一个客户机公钥。采用SSH免密登录方式操作Git仓库时,每个客户机都需要将各自的公钥复制到authorized_keys文件中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 在客户机生成SSH密钥,默认私钥文件名为id_rsa,公钥文件名为id_rsa.pub
ssh-keygen -t rsa -C "crazy-sky@foxmail.com"

# 在/home/git目录下创建.ssh目录
mkdir /home/git/.ssh

# 在目录里创建authorized_keys文件,将客户机生成的SSH公钥复制到authorized_keys文件中
vi /home/git/.ssh/authorized_keys

# 打开/etc/ssh/sshd_config文件
vi /etc/ssh/sshd_config

# 在文件中打开服务器RSA认证,注释掉的打开注释,没有的添加进去
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

# 重启sshd服务
systemctl restart sshd.service

6、修改权限

将仓库操作权限授予Git用户,使得用户可以操作仓库。家目录及目录下文件权限不能超过755,即只能给予用户自己写权限,权限配置错误将导致SSH免密登录时仍需输入密码。

1
2
3
4
5
6
7
8
# 授权Git用户
chown -R git:git /home/git

# 修改家目录权限
chmod 700 -R /home/git

# 修改公钥文件权限
chmod 600 /home/git/.ssh/authorized_keys

学习所得,资料、图片部分来源于网络,如有侵权,请联系本人删除。

才疏学浅,若有错误或不当之处,可批评指正,还请见谅!


 
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×