Linux:以另一个用户身份运行特定命令?

Linux:以另一个用户身份运行特定命令?

我希望能够允许用户以另一个用户的身份运行特定命令,这可能吗?

我有一个脚本,可以通过 ssh 读取远程文件来获取状态,例如:

#!/usr/bin/sh

state=$(ssh -q -i $HOME/.ssh/id_rsa" auto@remote-host "[ -f /path/to/state/file ] && cat /path/to/state/file 2>/dev/null")

printf "${state}"

用户auto已设置密钥,因此无需密码即可登录远程计算机。我希望用户能够运行此脚本,而无需担心设置自己的密钥,例如:

bob@local-machine$ /path/to/state-check

因此,bob用户可以轻松以用户身份运行脚本auto。我知道您可以使用类似

su auto -c "/path/to/state-check"

但这仍然需要访问 auto 用户的密码或 sudo。有没有办法设置一个文件,允许 bob 以 auto 无密码方式运行特定命令?或者我应该重新设计该工具,以便获取状态文件并将其存储在本地?我不太确定有什么好方法可以做到这一点。我在 RHEL 9 机器上运行它。

答案1

我希望能够允许用户以另一个用户的身份运行特定命令,这可能吗?

是的

这就是该sudo命令的设计目的。

虽然许多新手 Linux 系统管理员只知道并使用sudo运行命令/提升或升级权限到 root 和完全管理员权限,并且许多示例仅授予无限制和无限制的权限 sudo是明确设计用于授予限制权限并且还可用于在不同的非特权用户的 UID 下运行单个和/或仅一些特定命令。

也可以看看https://serverfault.com/a/639062

答案2

此外sudo,@HBruijn 提到,您还可以使用执行命令波尔基特(又名 Policy Kit)。另请参阅:波尔基特(8)请参阅手册页。

相关内容