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

wro*_*ame 5 permissions chmod executable

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

bash: program_filename: Permission denied
Run Code Online (Sandbox Code Playgroud)

正在做

cp program_filename ~/program_filename
Run Code Online (Sandbox Code Playgroud)

但是,从我的主目录运行它可以正常工作。

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

有没有简单的解决方法?

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

Ada*_*man 16

确保您的挂载选项允许执行权限位。

可以使用挂载选项来限制挂载文件系统中文件的权限:generalnoexec阻止所有文件可执行,特定于 FAT 的选项showexec仅将权限授予扩展名为.exe,.com.bat. 另请注意noexecuser和暗示了这一点users

如果您使用userorusers您仍然可以通过execuserorusers选项之后使用明确指定的挂载选项进行挂载来获得执行权限位。

有关详细信息,请参阅挂载联机帮助页


enz*_*tib 5

挂载 FAT 或 NTFS 分区时,权限在挂载时由umaskfmaskdmask选项确定。第一个是通用的,另外两个是特定于文件和目录的。

此外,您可能对在分区上建立所有文件和目录的所有者和组感兴趣uidgid选择。

一个例子:

mount -t ntfs-3g -o uid=500,gid=500,umask=0022 /dev/sda1 /mnt/win
Run Code Online (Sandbox Code Playgroud)