c语言 - 无法运行已编译的文件 - bash: ./a.out: 权限被拒绝。(我试过chmod)



我已经使用cc test.c编译了我的C源代码,它确实生成了a.out文件。

然而,当我运行它时,我得到这个错误-

bash: ./a.out: Permission denied

我的源代码不在主目录中,它在不同的FAT-32分区上,所以我使用以下命令挂载了代码所在的驱动器—

$ udisks --mount /dev/sda7 --mount-options umask=022
Mounted /org/freedesktop/UDisks/devices/sda7 at /media/48E9-FD53
$ cd /media/48E9-FD53/C

然后使用cc

编译代码

我也试过gcc。但是我仍然得到相同的错误。

然后我做了- chmod +x a.out,仍然是同样的问题。还有(chmod 755 a.out)和chmod u+x a.out .

我也试过用sudo编译和执行程序。

我也试过- sudo chown sannidhya:sannidhya a.out .

我已经尝试了所有我在谷歌上找到的东西,仍然不能让它工作。

如何运行.out文件(不移动到主目录)?

注意 -我使用的是Ubuntu 12.04 LTS。

但是一个奇怪的事情是,即使在运行chmod +x a.out之后,在运行- ls -l a.out时,我得到-

-rw-r--r-- 1

也当我检查a.out的属性时,在权限选项卡下,当我检查Allow executing file as program时,标记出现并迅速消失。

似乎您已经安装了设置了no-exec标志的分区。您必须重新挂载分区:

sudo mount -o remount -o exec /dev/sda7

我猜您是在可能与windows共享的NTFS/FAT分区上完成所有这些操作的。chmod权限不起作用

您应该将其移动到ext4(或同等的linux)分区,然后执行权限更改。


否则,对于NTFS/FAT分区,在挂载时为整个分区设置权限。例如,

sudo umount /mnt/my_partition
sudo mount -t vfat -o rw,auto,user,fmask=0000,dmask=0000 /dev/sda7 /mnt/my_partition

这将使您在所有目录和文件上获得777(太棒了!),但是一旦设置,您就不能修改它们,直到重新挂载。

这是使用fstab的另一种方法

cat /etc/fstab
LABEL=cloudimg-rootfs   /        ext4   defaults        0 1
D:      /mnt/d  drvfs   defaults,user,metadata,exec     0       0 

最新更新