我使用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!),但一旦设置,你不能修改它们,直到你重新安装。