私は書いた「こんにちは!」myCFile.c
Debian OS x86 組み込みボード用の C ファイル。
#include <stdio.h>
int main()
{
printf("hello\n")
}
私はプログラムをコンパイルします:gcc myCFile.c
しかし、
tester@localhost:~/test$ ./a.out
-bash: ./a.out: Permission denied
tester@localhost:~/pravin$ ls -lrt
total 44
-rwxrwxrwx 1 tester test 54 Sep 7 07:33 myCFile.c
-rwxrwxrwx 1 tester test 16608 Sep 7 07:33 a.out
a.out
ただし、にコピーすると/run/user/1000
実行できます。
tester@localhost:/run/user/1000$ ls
a.out bus gnupg systemd
そしてrootユーザーでCファイルをコンパイルして実行させると実行になります。私はそれを実行できる。
root@localhost:~# gcc myCFile.c
root@localhost:~# ./a.out
hello
root@localhost:~#
NOEXEC
国旗と関係がありますか?
私の/etc/fstab
ファイル:
# Begin /etc/fstab
/dev/root / ext4 defaults 0 0 proc
/proc proc nosuid,noexec,nodev 0 0 sysfs /sys sysfs nosuid,noexec,nodev 0 0 devpts
/dev/pts devpts gid=5,mode=620 0 0 tmpfs
/run tmpfs defaults,size=1500M 0 0 devtmpfs
/dev devtmpfs mode=0755,nosuid 0 0
# End /etc/fstab
LABEL=persistent /persistent ext4 defaults,data=journal,noatime,nosuid,nodev,noexec 0 2
/persistent/home /home none defaults,bind 0 0
/persistent/tmp /tmp none defaults,bind 0 0
答え1
NOEXECフラグに関連していますか?
はい、おそらく/home
mountでしょうnoexec
。これはバイナリを実行できないことを意味します。これは(のホームディレクトリ)/tmp/user/1000
とは異なるファイルシステムにあるために機能します。/root
root
あなたに関する限り、
mount -o remount,exec /persistent
ホームディレクトリにあるファイルを実行できる必要があります。