为什么我无法在 Linux 的另一个分区上运行程序?

为什么我无法在 Linux 的另一个分区上运行程序?

因此,为了方便起见,我将所有数据存储在 Windows 分区上,以便我可以从 Linux 和 Windows 轻松访问我的数据。但是,我尝试使用 g++ 编译 C++ 程序,发现我无法使用 运行该程序./program_filename,因为它告诉我

bash: program_filename: Permission denied

正在做

cp program_filename ~/program_filename

但是,从我的主目录运行它效果很好。

所以我尝试了chmod +rwx program_filename,但ls -l显示权限仍然设置为-rw-------.目录中的所有文件。当我以 root 身份执行此操作时,也没有任何变化。

有一个简单的解决办法吗?

(如果它有用,我正在运行 Fedora 16 x64)

答案1

确保您的安装选项允许执行权限位。

有一些挂载选项可用于限制已挂载文件系统中文件的权限:常规noexec阻止所有文件可执行,特定于 FAT 的选项仅向扩展名为、和 的showexec文件授予权限。另请注意和所暗示的。.exe.com.batnoexecuserusers

如果您使用useror ,您仍然可以通过在or选项之后使用显式指定的挂载选项users进行挂载来获取执行权限位。execuserusers

参见安装联机帮助页了解详情。

答案2

umask当您安装 FAT 或 NTFS 分区时,权限由、fmask和选项在安装时确定dmask。第一个是通用的,另外两个是特定于文件和目录的。

您可能还对建立分区上所有文件和目录的所有者和组感兴趣uid并选择。gid

一个例子:

mount -t ntfs-3g -o uid=500,gid=500,umask=0022 /dev/sda1 /mnt/win

答案3

在 Puppy Linux 中,默认情况下您可以在 NTFS 或 FAT 分区上执行脚本:http://murga-linux.com/puppy/viewtopic.php?t=95174

相关内容