我正在编写一个快速的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>
不会产生相同的效果,因为它会更改根的显示设置。
如果postinst中的命令可以运行 WITHOUT root权限,则可以简单地解决。我怎样才能做到这一点?
答案 0 :(得分:2)
如果您想以非root用户身份运行某些用户,可以通过多种方式执行此操作。它被称为“删除权限”。如果您对如何保留环境,如何继承功能或如何应用PAM配置没有特殊要求,那么从shell脚本上下文中最简单的方法可能是使用/bin/su
。例如,
su $someuser -c /usr/local/bin/$dir/$script
有关该工具的详情,请参阅man su
。