V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
dzdh
V2EX  ›  Linux

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

  •  
  •   dzdh · 2023-12-22 21:57:40 +08:00 · 1969 次点击
    这是一个创建于 366 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

    我用 Docker 跑 Gogs (现在用 Gitea ),可以通过配置容器的 user 为特定的 UID 和 GID 来让 Git 仓库的所有文件都属于这个 UID 和 GID 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3066 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 13:49 · PVG 21:49 · LAX 05:49 · JFK 08:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.