我们的环境中有linux脚本,它使用普通用户对远程机器执行ssh,并通过scp
将脚本从基本机器复制到远程机器。
脚本测试
#!/bin/bash
machines = $1
for machine in $machines
do
ssh -tt -o StrictHostKeyChecking=no ${machine} "mkdir -p -m 700 ~/test"
scp -r bin conf.d ${machine}:~/test
ssh -tt ${machine} "cd ~/test; sudo bash bin/RunFromRemotevm.sh"
done
脚本runfrommotevm.sh
#!/bin/bash
echo "$(date +"%Y/%m/%d %H:%M:%S")"
在运行Test_RunFromBaseVM.sh script base vm之前,我们运行以下两个命令。
eval $(ssh-agent)
ssh-add
执行
./Test_RunFromBaseVM.sh "<list_of_machine_hosts>"
获取权限被拒绝错误。[remote-vm-1] bin/RunFromRemotevm.sh:line 2: /bin/date: Permission denied
任何关于这个错误的线索或见解都会有很大帮助。
谢谢。
最佳答案
我认为问题在于sudoers文件中存在NOEXEC:
标记,对应于执行"cd ~/test; sudo bash bin/RunFromRemotevm.sh"
命令的用户(或组)。这将导致拒绝任何进一步的execv()、execve()和fexecve()调用,在本例中是/bin/date
。
解决方案显然是从主/etc/sudoers
文件或/etc/sudoers.d
下的某个文件中删除NOEXEC:。