![Linux:以另一个用户身份运行特定命令?](https://linux22.com/image/788421/Linux%EF%BC%9A%E4%BB%A5%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C%E7%89%B9%E5%AE%9A%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
我希望能够允许用户以另一个用户的身份运行特定命令,这可能吗?
我有一个脚本,可以通过 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 下运行单个和/或仅一些特定命令。