如何从 FAT USB 驱动器执行文件?

Der*_*ern 15 usb-drive usb executable

我正在尝试在我的 USB 驱动器上安装一个便携式应用程序,以便它与 Ubuntu 和 Windows(特别是一个名为 eToys 的程序)兼容。应用程序中已经内置了对两种操作系统的支持 - 有etoys.sh适用于 Ubuntu 和etoys.exeWindows。我决定安装到 FAT 驱动器上,因为它可以从两个系统中读取。这适用于 Windows,但由于某种原因,我无法在 Ubuntu 上执行 etoys.sh。

问题不在于文件 - 当整个文件夹复制到本地硬盘时,该应用程序在 Ubuntu 中运行良好。但是当我尝试从 USB 执行它时,它会在文本编辑器中打开文件。

然后我尝试从终端运行它,但我收到消息权限被拒绝。

我对其他可执行文件也有同样的问题。

有没有一种简单的方法可以从 USB 记忆棒中执行操作?

小智 22

由于 FA32 文件系统的限制,您不能这样做。

现在,你可以作弊:

  1. 无论是打电话sh etoys.sh,而不是./etoys.sh
  2. 如果需要,您甚至可以创建另一个脚本(例如,位于您的硬盘驱动器上),只需调用 USB 驱动器上的脚本:

    #!/bin/bash
    sh /media/USB/etoys.sh
    
    Run Code Online (Sandbox Code Playgroud)


小智 8

安装设备-o mode=<value>应该可以

mode=value
Run Code Online (Sandbox Code Playgroud)

将所有文件的模式设置为 value &0777忽略原始权限。为具有读取权限的目录添加搜索权限。该值以八进制给出。


Der*_*ern 6

我实际上在http://ubuntuforums.org/showthread.php?t=1665289上找到了一个很好的解决方案来解决这个问题。

基本上,它说要运行命令

sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks/udisks-daemon
Run Code Online (Sandbox Code Playgroud)

这将阻止使用 showexec 选项自动挂载磁盘。

我不喜欢回答我自己的问题,但这对我有用,我希望它也能帮助其他人。

对于 Ubuntu 18.04:

sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks2/udisksd
Run Code Online (Sandbox Code Playgroud)