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