"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

그리고 루트 사용자로 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

홈 디렉터리에 있는 파일을 실행할 수 있어야 합니다.

관련 정보