我安装了 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 没有任何问题。