使用特定用户和组使用 X 自动启动 GUI 应用程序

使用特定用户和组使用 X 自动启动 GUI 应用程序

当您想要在特定用户和组下使用 X 自动启动特定程序时,最好使用什么方法?

我的程序有 GUI,所以我不能使用 systemd

我希望它能自动启动 X 而不要求输入 sudo 密码。

sudo -H -u $USER bash -c "newgrp $GROUP && /bin/command"

这很接近..但它要求我输入 sudo 密码。

答案1

sudo可以使用选项设置主要组-g,因此无需使用newgrp.您还可以配置sudo为允许您的用户以任何用户身份运行而/bin/command无需密码。

例如将以下内容添加到/etc/sudoers(执行不是直接编辑该文件。使用visudo。它会对您的更改进行健全性检查,以便您不会犯导致整个 sudoers 文件无效的语法错误。你仍然可能犯逻辑错误,但它不会让你破坏 /etc/sudoers 到你sudo根本无法使用的程度):

username ALL = (ALL) NOPASSWD: /bin/command

然后运行它:

sudo -H -u "$USER" -g "$GROUP" /bin/command

如果您想限制命令可以运行的用户名和/或组,请更改ALL括号内的内容。例如

cas ALL = (fred, bob : mygroup, othergroup) NOPASSWD: /bin/command

将允许用户以用户或具有组的用户或没有密码的用户身份cas运行。查看并搜索标题为 的部分。/bin/commandfredbobmygroupothergroupman sudoersRunas_Spec

顺便说一句,第一个ALL(在 之前=)指的是该规则适用的主机名。仅当您在多台计算机上共享相同的 sudoers 文件并且系统管理员需要权限才能sudo在某些计算机上运行某些命令(而不是在其他计算机上)时,这一点才重要。搜索Host_Listinman sudoers了解详细信息。

注意:sudo非常复杂且非常灵活。值得花精力反复阅读手册页,sudo直到sudoers它们对您有意义为止。很容易犯错误,授予比您预期更少或更糟糕的特权。

相关内容