以下命令(服务器名称已混淆)按顺序可以正常工作:
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
解决方法是sudo
在ssh
命令行上提供“工作”命令的完整路径。顺便说一句,如果sudo
提示输入密码,或者您的目标应用程序需要用户输入,请确保您使用的ssh -t
不仅仅是ssh
.