我想让特定用户能够以任何普通用户(例如非 root 或守护进程)身份登录并以该用户身份执行命令。
我怎样才能安全地做到这一点?
目前我的用户对 bash 脚本有 sudo 权限,如下所示:
if [ "$1" = "run" ]; then
sudo -u ${2} ${3};
fi
虽然这种方法可行,但是安全并不是重点。
多谢你们。
答案1
制作一个新脚本,/usr/bin/runasuser
#!/bin/sh
newuser="${1}" && shift
/usr/bin/sudo su - "${newuser}" -c "$@"
使其可执行
chmod +x /usr/bin/runasuser
使用命令编辑 sudoersvisudo
并添加以下行:
alice ALL=(ALL) /usr/bin/runasuser
如果 Alice 执行以下操作,她就可以以 Bob 的身份运行任何内容:
sudo /usr/bin/runasuser bob /opt/application/for/bob
假设您的 sudo 环境默认包含 /usr/bin,您只需运行:
sudo runasuser bob /opt/application/for/bob