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

mer*_*011 5 ssh

以下命令(服务器名称混淆)按顺序运行正常:

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

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