当您想要在特定用户和组下使用 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/command
fred
bob
mygroup
othergroup
man sudoers
Runas_Spec
顺便说一句,第一个ALL
(在 之前=
)指的是该规则适用的主机名。仅当您在多台计算机上共享相同的 sudoers 文件并且系统管理员需要权限才能sudo
在某些计算机上运行某些命令(而不是在其他计算机上)时,这一点才重要。搜索Host_List
inman sudoers
了解详细信息。
注意:sudo
非常复杂且非常灵活。值得花精力反复阅读手册页,sudo
直到sudoers
它们对您有意义为止。很容易犯错误,授予比您预期更少或更糟糕的特权。