运行 sh 脚本:尽管有可执行位和 root 权限,但“权限被拒绝”

运行 sh 脚本:尽管有可执行位和 root 权限,但“权限被拒绝”

我安装了 Debian虚拟盒子(对于通常会破坏我的系统的各种实验)并尝试启动 VirtualBox 来宾插件脚本。我以 root 身份登录并尝试启动autorun.sh,但收到“权限被拒绝”。ls -l表明该脚本具有可执行权限。

抱歉,我无法复制输出 - 如果没有插件,VirtualBox 绝对没有用处,因为共享目录和共享剪贴板都不起作用。但为了让你确定,我手工复制了权利:

#ls -l ./autorun.sh
-r-xr-xr-x 1 root root 6966 Mar 26 13:56 ./autorun.sh

起初我认为可能是脚本执行了一些导致错误的内容。我尝试/bin/sh用类似的内容替换#/pathtorealsh/sh -xv,但没有输出 - 似乎脚本甚至无法执行。

我什至不知道是什么原因造成的。

答案1

也许您的文件系统是使用noexec选项集安装的,因此您无法运行任何可执行文件。从文档:

不执行

不允许在已安装的文件系统上直接执行任何二进制文件。 (直到最近,还可以使用 /lib/ld*.so /mnt/binary 等命令来运行二进制文件。自 Linux 2.4.25 / 2.6.0 以来,这个技巧就失败了。)

尝试:

mount | grep noexec

然后检查您的文件系统是否在输出中列出。

如果是,您可以通过使用以下选项重新挂载文件系统来解决此问题exec

mount -o remount,exec filesystem

答案2

bash -x ./filename.filetype应该管用。当我作为根用户的权限被拒绝时,它对我有用。

答案3

我对这个问题的解决方案是使用来源。我正在存储非常重要的数据。该卷以 noexec 方式安装。我有一个简单的 shell 脚本,可以执行但遇到权限问题。

./fixsamplesheet.sh # this guy is executable
-bash: ./fixsamplesheet.sh: Permission denied

source fixsamplesheet.sh # worked fine

只在我的 Ubuntu 上测试过。

答案4

我在 Virtual Box 中的 Debian Buster 副本上安装 Guest Additions 时遇到了完全相同的问题。

作为解决方法,我只是将文件复制VBoxLinuxEditions.run到 Debian 的主目录,然后使用 sudo 运行它。这不是脚本无法运行的解决方案,但至少我能够安装 Guest Additions。

有趣的是,尽管 MX Linux 基于 Debian,但我在 Virtual Box 中安装的 MX Linux 版本上安装 Guest Additions 没有任何问题。

相关内容