0

我正在编写一个快速的 shell 脚本来处理显示设置,但这无关紧要。将shell脚本放在任何可以访问的目录中;我选择了/usr/local/bin/<dir>/<script>

我使用 postinst 脚本创建相关的快捷方式并将此脚本注册为启动应用程序。一旦配置完成,我想/usr/local/bin/<dir>/<script>被执行。这似乎执行(因为它生成详细数据),但没有预期的视觉变化(显示设置不生效)。我期望为 root 用户完成更改。安装退出后,我可以运行/usr/local/bin/<dir>/<script>以获得所需的效果,但sudo /usr/local/bin/<dir>/<script>不会产生相同的效果,因为它正在更改根的显示设置。

如果可以在没有root 权限的情况下运行postinst中的命令,则可以简单地解决它。我怎样才能做到这一点?

4

1 回答 1

2

如果您想以 root 以外的用户身份运行某些东西,有很多方法可以做到这一点。它被称为“放弃特权”。如果您对如何保留环境、如何继承功能或如何应用 PAM 配置没有特殊要求,那么从 shell 脚本上下文中最简单的方法可能是使用/bin/su. 例如,

su $someuser -c /usr/local/bin/$dir/$script

man su有关该工具的更多信息,请参阅。

于 2014-02-24T17:29:13.377 回答