以下命令(服务器名称混淆)按顺序运行正常:
ssh xxx.sjc
sudo -u appName id
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将它们链接在一起时,事情就破裂了:
ssh xxx.sjc 'sudo -u appName id'
Sorry, user merlin2011 is not allowed to execute '/bin/id' as appName on xxx.sjc.
Run Code Online (Sandbox Code Playgroud)
两种模式之间的哪些差异ssh
可能导致这种情况,我可以做些什么来调查?
在操作系统方面,我在客户端运行 OSX,在服务器上运行自定义 Linux 发行版(由我公司的其他人部署)。
uname -r
3.10.0-1127.18.2.el7.x86_64
Run Code Online (Sandbox Code Playgroud)
roa*_*ima 16
基于我的评论建议
请尝试
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
.