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 に答える