Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
dzdh
V2EX  ›  Linux

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

  •  
  •   dzdh · Dec 22, 2023 · 2430 views
    This topic created in 879 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

    我用 Docker 跑 Gogs (现在用 Gitea ),可以通过配置容器的 user 为特定的 UID 和 GID 来让 Git 仓库的所有文件都属于这个 UID 和 GID 。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5722 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 02:20 · PVG 10:20 · LAX 19:20 · JFK 22:20
    ♥ Do have faith in what you're doing.