「Hello、World!」 Cプログラムを「root」以外のユーザーとして実行することはできません。

「Hello、World!」 Cプログラムを「root」以外のユーザーとして実行することはできません。

私は書いた「こんにちは!」myCFile.cDebian 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フラグに関連していますか?

はい、おそらく/homemountでしょうnoexec。これはバイナリを実行できないことを意味します。これは(のホームディレクトリ)/tmp/user/1000とは異なるファイルシステムにあるために機能します。/rootroot

あなたに関する限り、

mount -o remount,exec /persistent

ホームディレクトリにあるファイルを実行できる必要があります。

関連情報