将程序执行限制为参数列表

将程序执行限制为参数列表

我希望我的 Unix 用户只能使用insecurecommand存储在文件中的受控参数列表来运行特定命令。

我目前找到的唯一解决方案是:

  1. 创建一个名为的新安全组cmdxg
  2. 将命令的执行限制到该组:

    chown root:cmdxg /.../insecurecommand
    chmod 750 /.../insecurecommand
    
  3. 创建一个 setgid 包装器,它执行以下命令:

    ls -al /.../mywrapper
    -rwxr-sr-x 1 root cmdxg /.../mywrapper
    

唯一的问题是它insecurecommand是用用户真实的 gid 执行的gid=cmdxd,而不是用用户真实的 gid 执行的。但是,我想避免运行insecurecommand命令 setgid。

如果在包装器代码中,我使用 seteuid() 返回真实的 gid,则它无法再运行,insecurecommand因为进程丢失了cmdxg权利。

这是一种运行需要特权 gid 权限但具有真实 gid 的命令的方法吗?

也许我需要分解程序执行?

-> 首先使用特权有效 gid 加载二进制文件 -> 返回真实 gid -> 运行程序

但我该怎么做呢?

有任何想法吗 ?

相关内容