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

时间:2013-04-18 15:59:18

标签: c linux gcc ubuntu permissions

我使用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时,勾选会出现并快速消失。

2 个答案:

答案 0 :(得分:8)

似乎你已经安装了分区,并设置了no-exec标志。你必须重新安装分区:

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

答案 1 :(得分:3)

我猜你在与Windows共享的 NTFS / FAT分区上做了所有这些。 chmod权限不起作用

您应该将其移至ext4(或等效的Linux)分区,然后执行权限更改。


否则,对于NTFS / FAT分区,在安装时设置权限for the entire partition。 例如,

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

这会在所有目录和文件上给你777(eeeek!),但一旦设置,你就不能修改它们直到你重新安装。