如果我尝试通过 SSH 到远程服务器执行 bash 脚本,权限被拒绝

如果我尝试通过 SSH 到远程服务器执行 bash 脚本,权限被拒绝

我能够在没有密码的情况下与该远程服务器建立 ssh 连接。另外,如果我执行单行命令而不是 bash 脚本,它也可以正常工作。但如果我尝试通过 ssh 执行 bash 脚本,它会说

bash: /home/username/script.sh: Permission denied

我怎样才能解决这个问题?我可以通过 ssh 执行单行命令,没有任何问题。

答案1

如果您尝试运行此命令:

/home/username/LastBootupTime.sh

它具有以下权限:

-rwxr--r-- 1 root root 42 Nov  3 14:01 LastBootUpTime.sh

那就root只能这么做了。其他人都会收到错误bash: /home/username/LastBootUpTime.sh: Permission denied

这是因为权限是这样的:

  • rwx- 所有者(在本例中为 root)可以读/写/执行脚本
  • r--- 该组(在本例中为根组)可以读取但既不能写入也不能执行脚本
  • r--- 其他人可以读取但不能写入或执行脚本

现在,在您的情况下,您已经明确指定了此命令:

bash /home/user/LastBootupTime.sh

所以虽然你需要阅读许可不要需要执行权限。因此,错误消息还有另一个原因。用户很可能无法访问其中一个目录。

也许你真正的命令是这样的:

bash /root/LastBootupTime.sh

在这种情况下,只有root用户可以访问该/root目录,因此其他人都会收到权限被拒绝的错误。解决方案是将脚本放入适当的可访问目录中(我/usr/local/bin在我的系统上使用;其他人更喜欢/opt/bin,但您可以将其放置在适合您的任何地方)。

相关内容