Bash 从带有<;的文件读取的权限被拒绝;,即使使用sudo

Bash 从带有<;的文件读取的权限被拒绝;,即使使用sudo,bash,permissions,sudo,Bash,Permissions,Sudo,我需要从服务器B中的服务器a运行脚本。在ssh连接到服务器B后,我运行了以下命令: sudo ssh root@ip_A 'bash -s' < root/work/task.sh 在服务器A上,我已经完成了sudo chmod 777 task.sh 请感谢。这是少数几个在不连接多个文件的情况下,cat也能增加价值的地方之一: sudo cat /root/work/task.sh | ssh root@ip_A 'bash -s' 因为像这样的重定向是少数几个地方之一,cat即使在

我需要从服务器B中的服务器a运行脚本。在ssh连接到服务器B后,我运行了以下命令:

sudo ssh root@ip_A 'bash -s' < root/work/task.sh
在服务器A上,我已经完成了sudo chmod 777 task.sh


请感谢。

这是少数几个在不连接多个文件的情况下,
cat
也能增加价值的地方之一:

sudo cat /root/work/task.sh | ssh root@ip_A 'bash -s'

因为像
这样的重定向是少数几个地方之一,
cat
即使在不连接多个文件的情况下也会增加价值:

sudo cat /root/work/task.sh | ssh root@ip_A 'bash -s'
因为重定向,例如
i测试用例1:

sudo ssh root@ip_A 'bash -s < /root/work/task.sh'
sudo-sshroot@ip_A'bash-s
哪个task.sh保存在ip_A中,并且有效 和测试用例2:

sudo ssh root@ip_A 'bash -s' < /root/work/task.sh
sudo-sshroot@ip_A“bash-s”
它也可以工作,ip_A中没有task.sh,只有本地主机中有这个文件

不知道您的问题是什么,您可以向我们展示您的tash.sh吗?

i测试用例1:

sudo ssh root@ip_A 'bash -s < /root/work/task.sh'
sudo-sshroot@ip_A'bash-s
哪个task.sh保存在ip_A中,并且有效 和测试用例2:

sudo ssh root@ip_A 'bash -s' < /root/work/task.sh
sudo-sshroot@ip_A“bash-s”
它也可以工作,ip_A中没有task.sh,只有本地主机中有这个文件



不知道你的问题是什么,你能给我们看看你的tash.sh吗?

sudo
不会更改用于重定向的权限,例如
BTW,永远不要
chmod 777
任何东西。在任何情况下都不会。你最好让你的系统崩溃,而不是不安全……无论如何,如果当前用户无法读取它所在的目录,那么对
task.sh
拥有世界可读权限根本没有帮助。顺便说一句,这实际上是一种类似于。它与ssh没有任何关系--您可以运行
sudocat…因此,现在您已经编辑了足够多的问题,以至于原始答案没有意义。一般来说,当你在已经给出答案后需要这样做时,你应该问一个新问题。在该帐户上回滚。
sudo
不会更改用于重定向的权限,例如
BTW,永远不要
chmod 777
任何内容。在任何情况下都不会。你最好让你的系统崩溃,而不是不安全……无论如何,如果当前用户无法读取它所在的目录,那么对
task.sh
拥有世界可读权限根本没有帮助。顺便说一句,这实际上是一种类似于。它与ssh没有任何关系--您可以运行
sudocat…因此,现在您已经编辑了足够多的问题,以至于原始答案没有意义。一般来说,当你在已经给出答案后需要这样做时,你应该问一个新问题。回滚到该帐户。若要重现OP的问题,请以没有读取
/root/work/task.sh
权限的用户身份运行测试用例2。(顺便说一句,“我不能重现这个问题”通常不是答案)。在案例2中,它是一个本地文件,无论该文件是否具有x权限。我重新测试了案例1,仍然存在权限被拒绝的问题。已尝试案例2,命令已执行但未返回。就挂在那里。我的task.sh只是#/{1..10}do echo hello>“$f.txt”doneOk中f的bin/bash,案例2返回连接超时。它正在等待我的服务器输入密码?如何使用bash-s命令发送此密码?您的task.sh能否只有一个命令,如ls或pwd?只需尝试重现OP的问题,以用户身份运行测试用例2,但不能读取
/root/work/task.sh
。(顺便说一句,“我不能重现这个问题”通常不是答案)。在案例2中,它是一个本地文件,无论该文件是否具有x权限。我重新测试了案例1,仍然存在权限被拒绝的问题。已尝试案例2,命令已执行但未返回。就挂在那里。我的task.sh只是#/{1..10}do echo hello>“$f.txt”doneOk中f的bin/bash,案例2返回连接超时。它正在等待我的服务器输入密码?如何使用bash-s命令发送此密码?您的task.sh能否只有一个命令,如ls或pwd?只需在服务器B中手动尝试一下这个命令,它显示cat:root/work/task.sh:没有这样的文件或目录。我确认拼写正确,文件位于服务器A中。它的/root/xxxx,而不是root/xxxx@yudongshen,OP使用了
root/xxxx
。他们比我们更了解自己的路径(理论上)——如果相对于他们开始的位置错误,他们会有不同的错误,而不是找不到权限。@user3782604,我上面给出的命令是在服务器B上运行的。我在服务器B上手动尝试了这个命令,它说cat:root/work/task.sh:没有这样的文件或目录。我确认拼写正确,文件位于服务器A中。它的/root/xxxx,而不是root/xxxx@yudongshen,OP使用了
root/xxxx
。他们比我们更了解自己的路径(理论上)——如果相对于他们开始的位置错误,他们会有不同的错误,而不是找不到权限。@user3782604,我上面给出的命令是在服务器B上运行的。