装了个 gogs ,git 用户执行。想用 githook (非 webhook )触发 git pull 。但是代码的用户是 www 。
本来可以给 git 用户 sudo 权限,sudo -u www git -C pull 就行。但是不想给 git 用户 sudo 权限,给限死在 git 用户身份下,selinux 也限制死了只能操作 home/git 目录。
有没有什么中间工具还是什么的么?比如有没有什么东西可以监控 git 的更新?然后这个东西是 www 用户身份啥的。
装了个 gogs ,git 用户执行。想用 githook (非 webhook )触发 git pull 。但是代码的用户是 www 。
本来可以给 git 用户 sudo 权限,sudo -u www git -C pull 就行。但是不想给 git 用户 sudo 权限,给限死在 git 用户身份下,selinux 也限制死了只能操作 home/git 目录。
有没有什么中间工具还是什么的么?比如有没有什么东西可以监控 git 的更新?然后这个东西是 www 用户身份啥的。
|
passiveDec 22, 2023 via Android
1
chmod +s
|
|
proxytoworldDec 22, 2023
2
su -u
|
|
adoalDec 22, 2023 via iPhone
3
sudo 可以限制用户只能执行特定命令
|
|
msg7086Dec 23, 2023
4
新建一个程序负责 git pull ,设置 owner 是 www 并且加上 sticky 位的权限。(其实就是重新发明一次 sudo 。)
|
|
ac169Dec 23, 2023
5
在 /etc/sudoers 文件中 或者 /etc/sudoers.d/ 目录下 增加 类似
guanliyuan (用户名/用户组) ALL=(ALL) NOPASSWD:/usr/sbin/reboot (具体的命令) 这样 guanliyuan 这个普通用户就可以执行只有管理员才能的重启命令 |
|
6
这个不是应该给 www 和 git 用户弄一个单独的组,然后把代码文件的组设置成那个吗
|
|
libookDec 25, 2023
7
git 用户有权限用 su 的话,可以使用 su+www 的密码切换到 www 用户。
另一个思路就是有个中间程序,可以被 git 用户执行,但以 www 用户操作文件。可以参考 setuid 和 setgid 。 我用 Docker 跑 Gogs (现在用 Gitea ),可以通过配置容器的 user 为特定的 UID 和 GID 来让 Git 仓库的所有文件都属于这个 UID 和 GID 。 |