从当前用户在Debian软件包脚本中运行一些命令

时间:2012-07-07 08:52:48

标签: shell package debian

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

2 个答案:

答案 0 :(得分: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发货,不要指望安装终端。

答案 1 :(得分:0)

您需要root才能安装某些内容。如果您安装每用户配置,通常应为所有用户安装它们。

话虽如此,请研究真实与有效的uid。