为gitea授予git用户的访问权限
Easul Lv6

由于我的gitea相关数据放到了 easul 用户下,但我想要使用 git 用户进行管理,所以需要进行如下相关操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# 创建用户和组为git的用户
sudo adduser git
# 为git授予gitea的相关目录权限
# /home/easul:只给 git 用户执行(x)权限,能进入目录
# /home/easul/software:给 git 用户读+执行(rx)
# /home/easul/software/gitea:给 git 用户读写+执行(rwx)
# 如果不这样授予权限,或者只给 /home/easul/software/gitea 目录授予权限,git用户会因为上级目录无法访问而导致权限问题
# 这样授予了之后,相当于原本文件夹的所有权还是属于 easul ,但是 git 用户却可以对这些文件夹有相应的操作
setfacl -m u:git:x /home/easul
setfacl -m u:git:rx /home/easul/software
setfacl -R -m u:git:rwx /home/easul/software/gitea
# 创建 gitea 的运行脚本
echo '#!/bin/bash
if [[ "$1" = "start" ]];then
cd /home/easul/software/gitea
nohup ./gitea > /dev/null 2>&1 &
echo "已启动"
elif [[ "$1" = "restart" ]];then
pkill gitea
cd /home/easul/software/gitea
nohup ./gitea > /dev/null 2>&1 &
echo "已重启"
elif [[ "$1" = "stop" ]];then
pkill gitea
echo "已停止"
else
echo "参数错误"
exit 1
fi

exit 0' > /home/easul/software/gitea/runcmd
chmod +x /home/easul/software/gitea/runcmd
# 为 git 用户创建相应的启动服务配置
sudo echo '
[Unit]
Description=gitea
After=network.target

[Service]
Type=forking
User=git
Group=git
ExecStart=/home/easul/software/gitea/runcmd start
ExecReload=/home/easul/software/gitea/runcmd restart
ExecStop=/home/easul/software/gitea/runcmd stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target' > /usr/lib/systemd/system/gitea.service
# 开启自启动并启动服务
sudo systemctl enable gitea
sudo systemctl start gitea
 评论