我使用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
时,勾选会出现并快速消失。
答案 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!),但一旦设置,你就不能修改它们直到你重新安装。