我可以想到两种方法:
在具有 的系统上
sudo
,通过修改/etc/sudoers
.在没有的系统
sudo
(例如 Docker 环境)上,通过编写类似于以下的程序并将 setuid 位设置为chmod u+s
.apt-get
检查真实的uid,因此需要setuid
调用。
...
int main(int argc, char **argv) {
char *envp[] = { ... };
setuid(0);
execve("/usr/bin/apt-get", argv, envp);
return 1;
}
我有两个问题:
- 允许非 root 用户运行的潜在漏洞是什么
apt-get
? - 我的目标是允许人们安装/删除/更新软件包,因为它们
apt-get
存在于自定义的非系统 refroot 中并从自定义策划的 apt 存储库安装。有没有更安全的方法可以让非 root 用户apt-get
在没有sudo
.