无法运行外部媒体上的程序

无法运行外部媒体上的程序

我的驱动器格式化为 ext3/ext4,所以我知道这不是文件系统可执行权限的问题。

我的一个程序遇到了这个问题,为了测试它,我创建了一个快速 bash 文件,只需打开一个终端并运行即可sudo apt-get update。运行它时,我得到以下框:

“63 GB 卷”包含旨在自动启动的软件。要运行它吗?

如果我单击Run,则会出现另一个框:

糟糕!运行此软件时出现问题。无法找到该程序。

有什么解决方案可以尝试吗(除了将软件放在内置驱动器上)?我正尝试从外部驱动器运行程序,因为我的内置驱动器空间不足。

我还检查了“允许以可执行文件运行”框是否被选中,并且确实如此(事实上,我实际上无法选中它离开


编辑:抱歉没有包含脚本。以下是文件中的内容:

#! /bin/bash

gnome-terminal -e 'bash -c "sudo apt-get update; exec bash"'

我尝试在外部媒体上运行所有软件时都遇到此问题。

以下是输出mount | grep /dev/sd

/dev/sda1 on /var/host/media/removable/SD Card type fuseblk (rw,nosuid,nodev,noexec,relatime,dirsync,user_id=302,group_id=302,allow_other,blksize=4096)

答案1

您的驱动器已使用该noexec选项安装。据我所知,这实际上禁止在卷上执行程序,无论各个文件的设置如何。具体解决方案取决于您最初如何安装卷,但从一般角度来看,您需要安装没有该noexec选项的卷或明确将其替换为该exec选项。以下是 fuse 手册页的摘录:

OPTIONS
       Most of the generic mount options described in mount are supported (ro,
       rw, suid, nosuid, dev,  nodev,  exec,  noexec,  atime,  noatime,  sync,
       async,  dirsync). Filesystems are mounted with nodev,nosuid by default,
       which can only be overridden by a privileged user.

以及 mount 手册页的相关部分:

noexec Do  not  allow  direct  execution of any binaries on the mounted
              filesystem.  (Until recently it was  possible  to  run  binaries
              anyway  using a command like /lib/ld*.so /mnt/binary. This trick
              fails since Linux 2.4.25 / 2.6.0.)

据我所知,fuse 不支持重新安装选项,因此我认为您必须使用 卸载/dev/sda1(在关闭设备上所有打开的文件后)fusermount -u "/var/host/media/removable/SD Card",然后使用您通常需要的选项(noexec 除外)重新安装它mount。请参阅man mount man fuseman fusermount以了解针对您的具体情况的更多详细信息。

相关内容