没有密码以 root 身份运行命令来执行固定命令?

Vol*_*gel 6 password root sudo not-root-user

是否可以在 sudoers 中定义一个规则,以允许一个用户以 root 身份运行一个定义明确的命令,而无需密码或其他身份验证,除非是正确的用户?

有没有其他方法可以解决这个问题(或非常相似的问题)?

使用 suid 权限位?也许以某种方式使用 ssh 密钥?

Mic*_*mer 9

sudoers文件允许指定命令以允许:

username ALL=(root) NOPASSWD: /bin/foo bar baz
Run Code Online (Sandbox Code Playgroud)

username是您要允许的用户,该命令位于行尾。如果您为命令指定参数,则用户只能使用这些参数运行它,但如果您没有在此处指定它们,用户可以使用他们选择的任何参数运行命令。您可以指定以逗号分隔的多个命令,或仅指定为单独的行。

sudoers使用visudo(以 root 身份)编辑文件并以该格式添加一行,更改适当的详细信息,然后用户将被允许以提升的权限准确运行您指定的命令。


NOPASSWD:允许用户在没有提示的情况下运行命令。这ALL是一个主机限制,您可以忽略它(如果不能,您就会知道)。(root)意味着他们只能以 root 用户身份运行命令。


既然你问了,也完全可以这样做ssh,虽然sudo更好。您可以COMMAND=something在一行的开头输入/root/.ssh/authorized_keys并为用户提供与该命令对应的专用 SSH 密钥。唯一可能的原因sudo是如果您不希望用户对机器有任何其他访问权限,或者您不希望他们必须自己写出命令。