在bash脚本中运行linux命令会抛出权限被拒绝错误

问题描述 投票:0回答:1

我们的环境中有linux脚本,它使用普通用户ssh到远程机器,并通过scp将脚本从基本机器复制到远程机器。

脚本Test_RunFromBaseVM.sh

#!/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

脚本RunFromRemotevm.sh

#!/bin/bash
echo "$(date +"%Y/%m/%d %H:%M:%S")"

在运行Test_RunFromBaseVM.sh脚本库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

任何关于此错误的线索或见解都将有很大帮助。谢谢。

linux bash
1个回答
1
投票

我认为问题是sudoers文件中存在NOEXEC:标记,对应于执行"cd ~/test; sudo bash bin/RunFromRemotevm.sh"命令的用户(或组)。这导致任何进一步的execv(),execve()和fexecve()调用被拒绝,在这种情况下它是/bin/date

解决方案显然是从主要的/etc/sudoers文件或/etc/sudoers.d下的某个文件中删除NOEXEC:无论是这个定义的。

© www.soinside.com 2019 - 2024. All rights reserved.