Linux 怎么在不给 sudo 权限的情况下以别的用户身份执行命令

2023-12-22 21:57:40 +08:00
 dzdh

装了个 gogs ,git 用户执行。想用 githook (非 webhook )触发 git pull 。但是代码的用户是 www 。

本来可以给 git 用户 sudo 权限,sudo -u www git -C pull 就行。但是不想给 git 用户 sudo 权限,给限死在 git 用户身份下,selinux 也限制死了只能操作 home/git 目录。

有没有什么中间工具还是什么的么?比如有没有什么东西可以监控 git 的更新?然后这个东西是 www 用户身份啥的。

1969 次点击
所在节点    Linux
7 条回复
passive
2023-12-22 22:01:21 +08:00
chmod +s
proxytoworld
2023-12-22 22:29:16 +08:00
su -u
adoal
2023-12-22 22:30:15 +08:00
sudo 可以限制用户只能执行特定命令
msg7086
2023-12-23 01:57:02 +08:00
新建一个程序负责 git pull ,设置 owner 是 www 并且加上 sticky 位的权限。(其实就是重新发明一次 sudo 。)
ac169
2023-12-23 07:46:27 +08:00
在 /etc/sudoers 文件中 或者 /etc/sudoers.d/ 目录下 增加 类似

guanliyuan (用户名/用户组) ALL=(ALL) NOPASSWD:/usr/sbin/reboot (具体的命令)

这样 guanliyuan 这个普通用户就可以执行只有管理员才能的重启命令
dingwen07
2023-12-23 09:14:37 +08:00
这个不是应该给 www 和 git 用户弄一个单独的组,然后把代码文件的组设置成那个吗
libook
364 天前
git 用户有权限用 su 的话,可以使用 su+www 的密码切换到 www 用户。

另一个思路就是有个中间程序,可以被 git 用户执行,但以 www 用户操作文件。可以参考 setuid 和 setgid 。

我用 Docker 跑 Gogs (现在用 Gitea ),可以通过配置容器的 user 为特定的 UID 和 GID 来让 Git 仓库的所有文件都属于这个 UID 和 GID 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1002763

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX