这种奇怪的安全行为的原因是什么?

这种奇怪的安全行为的原因是什么?

以下命令(服务器名称已混淆)按顺序可以正常工作:

ssh xxx.sjc
sudo -u appName id

然而,当我尝试将它们链接在一起时,事情就破裂了:

ssh xxx.sjc 'sudo -u appName id'
Sorry, user merlin2011 is not allowed to execute '/bin/id' as appName on xxx.sjc.

两种模式之间的哪些差异ssh可能会导致这种情况,我可以采取哪些措施进行调查?

就操作系统而言,我在客户端上运行 OSX,在服务器上运行自定义 Linux 发行版(由我公司的其他人部署)。

uname -r
3.10.0-1127.18.2.el7.x86_64

答案1

基于我的评论建议

sudo -u appName id请尝试将这两种情况下的替换为type sudo。我很想知道他们是否报告相同的应用程序路径

你的回应,

看来他们没有!

似乎有两次安装sudo使用了两种不同的sudoers配置。您期望使用的版本sudo可能位于非标准位置,例如/usr/local/bin/sudo在登录脚本中/opt/bin/sudo添加到用户的位置PATH,这意味着该命令通常会覆盖其他未使用的命令/usr/bin/sudo

解决方法是sudossh命令行上提供“工作”命令的完整路径。顺便说一句,如果sudo提示输入密码,或者您的目标应用程序需要用户输入,请确保您使用的ssh -t不仅仅是ssh.

相关内容