我正在尝试使用一个函数对远程实例中的目录设置组权限,该函数将接受目录和组的输入,该函数如下所示,总共有三个实例,其中实例 A 和 B 共享相同的公共密钥。但是 A_IP 的 ssh 命令不会更改 A_IP 远程实例中目录的权限,而在 B_IP 上它工作正常,我尝试通过将 B_IP 保留为函数中的第一行来交换命令执行顺序,在这种情况下 B_IP ssh 命令不会更改A_IP ssh 命令正在更改目录的权限。我观察到共享公共密钥文件的 A_IP 或 B_IP 之一登录命令序列中第一个的 IP 无法运行 ssh 命令来更改远程系统上的权限
grouppermission () {
dir=$1
group=$2
ssh -i $A_Key -p 2022 ec2-user@$A_IP -t "sudo chown -R :$group $dir"
ssh -i $A_Key -p 2022 ec2-user@$B_IP -t "sudo chown -R :$group $dir"
ssh -i $B_Key -p 2022 ec2-user@$C_IP -t "sudo chown -R :$group $dir"
}
请帮助解决问题。我使用的是centos操作系统。
答案1
我创建了类似的环境,但没有遇到您提到的任何此类问题,组已成功更改。
你尝试过一一执行吗?那行得通吗?如果它有效,您可以尝试在 ssh 命令之间添加 5 秒的睡眠时间并尝试一次吗?
答案2
问题在于组的 GID,我在每个实例中创建具有相同名称的本地组,但它们具有不同的 GID,因为在函数中执行的最后一个命令正在更改权限。