尝试将文件在USB上设置为可执行,但权限无法“保持”。

可能重复:
如何在NTFS(或FAT32)分区上进行'chmod'操作? 我使用LastPass作为我的密码管理器,并且我使用Sesame进行多因素身份验证。在Windows上没有问题,但我在Windows和Linux计算机之间切换,所以我需要在这两种情况下都能使用Sesame。
在我的笔记本电脑上,我正在运行Ubuntu 10.10,并下载了32位的LastPass Sesame(Ubuntu 10.04 LTS),并将文件(一个可执行文件和一个.bin文件)移动到我的USB设备上。按照指示,我尝试对可执行文件(名为sesame)运行chmod +x sesame命令。
我尝试从终端窗口执行此操作,但在之后执行ls -la时,我注意到文件的权限没有改变。我尝试在开头添加sudo来执行相同的操作,但结果并没有任何区别(也没有收到任何错误消息)。我还尝试了以“图形”方式进行操作,通过在Nautilus中右键单击可执行文件,选择“属性”>“权限”,然后尝试勾选“允许将文件作为程序执行”的复选框 - 但是复选标记在一秒钟后又消失了。
如果我将相同的可执行文件移动到我的硬盘上,它可以很好地被设置为可执行文件(并执行)。
我对Linux并不是很熟悉,所以我怀疑我可能忽略了一些显而易见的东西。这可能与USB设备使用fat32格式有关吗(但我认为fat32分区上的文件默认应该是可执行的),如果是这样的话,我有哪些选择?
顺便说一下:使用Wine运行Sesame的Windows版本非常好用,但有点麻烦(至少在没有预先安装Wine的情况下需要它的地方)。
2个回答

你无法对FAT32文件进行chmod操作... 只有Linux文件系统“接受”Linux权限。

最简单的方法是从你的主文件夹执行它,例如... 将它复制到那里并进行chmod操作,然后在新位置执行它,就像你之前尝试的那样。

此外,你还可以查看这个链接:当CD中的可执行位未设置时,我如何运行一个可执行文件?。基本上,它讨论了如何判断文件是真正的二进制文件还是具有.bin扩展名的文本脚本。如果是这种情况,你可以使用bash、python、ruby或其他方式来执行它。


1我有点怀疑,但是那么我如何从USB设备中执行该文件呢? - Julian
我修改了答案...希望有所帮助。 - luri
好的,我猜我可以通过Wine来使用Windows版本,效果应该差不多。谢谢。 - Julian
1顺便问一下,我很好奇:为什么当我尝试在USB驱动器上运行chmod +x sesame命令时,没有任何错误信息出现呢?这样的错误信息会立即澄清问题的。 - Julian
110年后,仍然在思考同样的问题。为什么没有错误信息? - Zach

这个答案。当挂载设备时,你基本上可以定义权限。在你的情况下,你可以这样做:
sudo mount -t vfat -o rw,user,umask=000 /path/to/device /path/to/mount/dir

要进行永久更改,您可以将以下内容添加到您的/etc/fstab文件中:
找到您的设备的UUID(全局唯一标识符),使用sudo blkid命令。 将挂载行添加到/etc/fstab文件中: UUID=your-uuid /path/to/mount/dir vfat rw,auto,user,umask=000 0 0

谢谢,这是另一个可能的选择。然而,Sesame多因素身份验证的USB驱动器的关键在于它应该快速且容易地插入任何随机计算机。我只想把它插进去(Ubuntu会自动挂载),点击可执行文件并获取我的一次性密钥,所以相比之下这有点麻烦。但我会记下来以备不时之需 :) - Julian
@Nailuj 如果你可以重新格式化你的闪存驱动器,我认为使用ext4格式(可能禁用日志记录)应该可以允许你更改权限。不过请注意,这将阻止你在Windows机器上使用闪存驱动器。 - starbeamrainbowlabs