无法运行编译的文件 – 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

我尝试了Googlesearch后发现的所有内容,但仍无法使其正常工作。

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

– 我正在使用Ubuntu 12.04 LTS。

但是奇怪的是,即使在运行chmod +x a.out ,运行ls -l a.out

 -rw-r--r-- 1 

当我检查a.out的属性时,在权限选项卡下,当我选中Allow executing file as program ,打勾出现并很快消失。

似乎你已经挂载了没有exec标志的分区。 你将不得不重新安装分区:

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

我猜你正在做一个NTFS / FAT分区 ,你可能与Windows共享。 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的所有目录和文件(eeeek!),但一旦设置,你不能修改它们,直到你重新安装。