나는 썼다"안녕하세요!"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
그리고 루트 사용자로 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
홈 디렉터리에 있는 파일을 실행할 수 있어야 합니다.