正巧,前一段时间主力NAS炸了(详情见此处),临时把NanoPi NEO2翻出来顶上了。顺手用导热胶把散热片和外壳粘一起了,效果拔群。

经过这一段时间的使用,发现被动散热真是个好东西。原先的主力NAS,现在设置成冷备机,通过网络唤醒,每周自动执行备份同步,然后关机。完美,终于没有风扇的噪音了~

因为NanoPi上跑的东西有点多(Docker真是个好东西),所以需要一个轻量的Git权限管理工具。

最后我选定了Gitolite来实现对源码仓库权限管理。


部署&配置Gitolite

部署

推荐新建个低权限用户安装运行
1#新建一个用户git,<-s>参数指定新用户使用的shell路径
2sudo useradd -s /bin/bash git
3#设置密码
4sudo passwd git
5#切换用户
6su git

说真的,Gitolite安装非常简单。你可以直接从源来安装。

1sudo apt install gitolite3

当然,你也可以从仓库拉取源码安装。

1git clone https://github.com/sitaramc/gitolite
2mkdir -p $HOME/bin
3gitolite/install -to $HOME/bin

配置

首先上传你用来管理Git仓用户的公钥。

info:注意:请保证公钥名称和用户名一致

初始化gitolite

1gitolite setup -pk YourName.pub

初始化的两个git仓库

然后,使用你用来管理Git仓用户,克隆gitolite-admin.git

gitolite核心权限仓库

下面是gitolite.conf文件的说明

 1#用户组users
 2@users = ding Administrator
 3
 4#管理员库
 5repo gitolite-admin
 6    #可以执行任何操作(create, push, delete, rewind/overwrite etc)
 7	RW+     =   ding
 8
 9#contact.git仓库(新建仓库的增加此句即可)
10repo contact
11	#拥有此权限的用户有ding
12	RW+     =   ding
13	#仅可以clone/pull
14	R		=   Administrator
15
16repo testing
17	#@all表示所有人(仅限于提交公钥的用户)
18    RW+     =   @all
19
20repo foo
21	#可以clone/pull、push
22	RW     =   @users
23	#可以push任何不以master开头的分支,且创建任何不以v+数字头的标签
24	-   master              =   @all
25    -   refs/tags/v[0-9]    =   @all
26    RW                      =   @all

然后像提交仓库一样push就行了,权限自动生效,新添加仓库自动初始化。

1git add conf
2git add keydir
3git commit -m "提交说明"
4git push

禁止非授权用户使用shell

此时,使用SSH登陆git用户时,Gitolite会接管shell,显示当前用户可以使用的仓库列表。

显示当前用户可以使用的仓库列表

如果,该用户没有提交公钥到Gitolite中,仍可以正常登陆。为了安全需要限制这一问题。

我们可以把用户shell指向到Gitolite提供的shell,来解决这个问题。

1#编辑etc/passwd文件
2sudo vim /etc/passwd

编辑etc/passwd文件,修改git用户默认shell

此时未在Gitolite中授权的用户直接被踢出,授权用户则显示可用仓库列表。

未授权用户直接被踢出


打印当前用户可用命令列表

1ssh git@host help

打印可用命令列表