2

如何在我的 deb 包(preinst、postinst、prerm、postrm)的安装脚本中运行一些命令,而不是从 root 而是从当前用户(调用安装的用户)?

4

2 回答 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 回答