我希望我的 Unix 用户只能使用insecurecommand
存储在文件中的受控参数列表来运行特定命令。
我目前找到的唯一解决方案是:
- 创建一个名为的新安全组
cmdxg
将命令的执行限制到该组:
chown root:cmdxg /.../insecurecommand chmod 750 /.../insecurecommand
创建一个 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 -> 运行程序
但我该怎么做呢?
有任何想法吗 ?