如何在deb-package(preinst,postinst,prerm,postrm)的安装脚本中运行某些命令,而不是从root用户运行,而是从当前用户(调用安装的用户)运行?
答案 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。