6

我已经使用 编译了我的 C 源代码cc test.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,勾号出现并迅速消失。

4

3 回答 3

10

似乎您已经安装了带有 no-exec 标志的分区。您必须重新安装分区:

sudo mount -o remount -o exec /dev/sda7
于 2013-04-18T16:01:38.323 回答
4

我猜您是在可能与 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提供所有目录和文件(eeeek!),但一旦设置,您无法修改它们,直到您重新安装。

于 2013-04-18T16:03:09.720 回答
0

这是另一种使用方法fstab

cat /etc/fstab
LABEL=cloudimg-rootfs   /        ext4   defaults        0 1
D:      /mnt/d  drvfs   defaults,user,metadata,exec     0       0 
于 2022-01-27T00:13:47.510 回答