Alice 有 sudo 权限。Bob 没有(这是不可更改的),但是知道 Alice 帐户的密码。
如果 Bob 想要执行管理命令,他必须:
su alice
- 填写 Alice 的 su 密码
sudo whoami
- 填写 Alice 的 sudo 密码
- 命令以超级用户权限执行
为了缩短这个我使用:su -m alice -c 'sudo whoami'
。
但是,我想构建一个别名命令,用常规 sudo 命令替换这个繁琐的命令。
所以我做了这个:alias sudo="su -m alice -c 'sudo $@'"
。
2 个注意事项:
- 它不起作用
- 它总是要求 Alice 提供 su 密码,它确实记得 sudo 密码
我怎样才能做得更好?
谢谢!
答案1
这取决于 sudoers 的配置。如果设置了“Defaults requiretty”,则此方法无效。
suds () {
ARGS="$@"
/bin/su -m alice -c "/usr/bin/sudo TERM=xterm $ARGS"
}
关于此问题的一些评论
- 它将始终要求输入 alices 的密码来验证 su 的身份。
- 当变量用单引号引起来时,它通常不会被扩展。
- 我倾向于使用函数而不是别名,它们允许我在转换中添加更多逻辑。
- 从安全角度来看,这不是一个好主意。在实施之前,请确保这不会违反当地政策。
里克