我有一个需要以 root 权限运行的应用程序。
在应用程序文件上使用 setuid 位似乎是一个合理的选择。我对 setuid 的理解是,文件应该由 root 拥有,并且只能由 root 写入,否则具有写入权限的不受信任的用户可能会编辑该文件,并在 root 上下文中执行任何操作。
但是,这使应用程序的部署变得复杂,因为我需要在部署后(从远程 Git 存储库中拉下)将文件所有者设置为 root,例如:
sudo chown root:root /app/rootprog
sudo chmod 6711 /app/rootprog
有没有办法避免这种情况,或者有更好的方法来开发和部署必须以 root 身份运行的应用程序?
答案1
需要以 root 身份运行的应用程序必须由具有 root 访问权限的管理员安装。这可以通过特权升级(例如 viasudo
或等效方式)来完成。
部署应用程序的最佳方式取决于多种因素,但最好通过发行版的主包管理器来完成。这可能意味着提供 RPM 文件供下载,也可能意味着将包添加到可通过 Internet 访问的存储库。