如何在我的 deb 包(preinst、postinst、prerm、postrm)的安装脚本中运行一些命令,而不是从 root 而是从当前用户(调用安装的用户)?
问问题
799 次
2 回答
3
root 是当前用户。您永远不要期望软件包的安装是由sudo
您可以检查SUDO_USER
可能已调用脚本的用户的环境变量,如果安装是从简单的上下文执行的sudo dpkg -i
- sudo 可能尚未安装,因此安装可能已由 执行su
,这意味着环境变量不会设置。
如果您想以该用户身份调用脚本,您只需反转 sudo - 即:
sudo -u $SUDO_USER -c <command to invoke>
但您需要确保您正确了解调用脚本的用户——即 SUDO_USER 可能是 root!
但是,通常情况下,因为您可以在 Linux 系统上拥有任意数量的用户,所以您不应该这样做,因为它会使系统处于只有一个用户可以使用该软件包的状态。您应该以普通用户身份在第一次调用时创建状态/配置。
最后,不要指望 GUI,如果它只是作为 dpkg 交付,也不要指望安装终端。
于 2012-07-07T09:49:49.690 回答
0
你需要root
为了安装一些东西。如果您安装每用户配置,通常应该为所有用户安装它们。
话虽如此,请查看真实与有效的 uid。
于 2012-07-07T09:49:59.363 回答