是否可以在 sudoers 中定义一条规则,允许一个用户以 root 身份运行一个明确定义的命令,除了成为正确的用户之外,无需密码或其他身份验证?
是否有其他方法可以解决这个问题(或非常类似的问题)?
使用suid权限位?也许以某种方式使用 ssh 密钥?
答案1
文件sudoers
允许指定命令以准许:
username ALL=(root) NOPASSWD: /bin/foo bar baz
这username
是您要允许的用户,命令位于该行的末尾。如果您为命令指定参数,则用户只能使用这些参数运行该命令,但如果您未在此处指定参数,则用户可以使用他们选择的任何参数运行该命令。您可以指定用逗号分隔的多个命令,或者只是作为单独的行。
编辑sudoers
文件visudo
(以 root 身份)并以该格式添加一行,并更改适当的详细信息,并且用户将被允许以提升的权限运行您指定的命令。
NOPASSWD:
允许用户在没有提示的情况下运行命令。这ALL
是一个主机限制,您可能可以忽略它(如果不能的话您就会知道)。(root)
意味着他们只能以 root 用户身份运行该命令。
既然你问了,也完全可以这样做ssh
,尽管sudo
更好。您可以将其放在COMMAND=something
行的开头/root/.ssh/authorized_keys
并向用户提供与该命令相对应的专用 SSH 密钥。唯一可能的原因是,sudo
如果您不希望用户对计算机有任何其他访问权限,或者您不希望他们自己编写命令。