"실행 전용" 파일 권한에 대한 유효한 사용 사례는 무엇입니까?

"실행 전용" 파일 권한에 대한 유효한 사용 사례는 무엇입니까?

나는 chmod와 그 내용에 대해 읽고 있습니다.옥탈 모드. 나는 그것이 1단지 처형이라는 것을 안다 . 실행 전용 권한의 유효한 사용 사례는 무엇입니까? 파일을 실행하려면 일반적으로 읽기 및 실행 권한이 필요합니다.

$ echo 'echo foo' > say_foo
$ chmod 100 ./say_foo
$ ./say_foo
bash: ./say_foo: Permission denied
$ chmod 500 ./say_foo
$ ./say_foo
foo

답변1

쉘 스크립트실행하려면 읽기 권한이 필요하지만바이너리 파일원하지 않는 것:

$ cat hello.cpp
#include<iostream>

int main() {
    std::cout << "Hello, world!" << std::endl;
    return 0;
}
$ g++ -o hello hello.cpp
$ chmod 100 hello
$ ./hello
Hello, world!
$ file hello
hello: executable, regular file, no read permission

파일의 내용을 표시하는 것과 실행하는 것은 서로 다릅니다. 쉘 스크립트의 경우 이러한 사항은 단순화를 용서할 경우 새 쉘(또는 현재 쉘)로 "읽어"서 "실행"되기 때문에 관련이 있습니다. 그렇기 때문에 읽을 수 있어야합니다. 바이너리는 이 메커니즘을 사용하지 않습니다.

실행 권한은 디렉터리마다 약간 다릅니다. 이는 파일에 대해 특정 작업을 수행할 수 있음을 의미합니다.이내에디렉토리(예: 읽기 또는 실행) /tools사람들이 이해할 수 있는 경우에만 사용할 수 있는 도구 세트가 있다고 가정해 보겠습니다 . chmod 711 /tools. 그러면 실행 가능한 항목이 /tools명시적으로 실행될 수 있지만(예 /tools/mytool: ) ls /tools/거부됩니다. 마찬가지로, /private-docs파일 이름을 알고 있는 경우에만 읽을 수 있는 문서를 저장할 수 있습니다.

답변2

젠투에서 setuid(호출자가 아닌 소유자의 권한으로 실행되도록 설정된) 실행 파일은 읽기 액세스가 거부됩니다(모드 4711). 이는 권한 상승을 돕기 위해 악용되는 버그에 대한 보호 계층을 추가하는 것입니다.

권한이 없는 공격자가 setuid 파일을 읽을 수 있고 허용하는 것을 알고 있는 경우libc 스타일 공격을 반환합니다., 파일의 내용을 사용하여 프로그램이 호출될 때 유용한 기능이나 라이브러리가 메모리의 어디에 배치될 수 있는지 예측할 수 있습니다.

최신 시스템에는 종종 보다 효과적인 추가 보호 기능이 포함됩니다.ASLR, 그러나 32비트 플랫폼의 제한으로 인해 악용하기가 더 쉬워질 수 있습니다.

답변3

"실행 전용" 값은 파일에 그다지 유용해 보이지는 않지만 사람들이 디렉토리의 내용을 읽지 못하게 하는 데 사용할 수 있습니다.

$ mkdir foo
$ touch foo/bar
$ ls foo/
bar
$ chmod 100 foo
$ ls foo/
ls: cannot open directory foo/: Permission denied

답변4

스크립트를 실행하려면 읽기 및 실행 권한이 필요합니다. 스크립트를 실행하려면 스크립트의 내용을 읽어야 하므로 이를 수행할 수 있어야 합니다 read and execute. 그렇지 않으면 스크립트가 없으면 스크립트를 실행할 수 없습니다.

실행 전용 권한의 유효한 사용 사례는 무엇입니까?

안전. 어떤 사람들은 자신의 파일을 보호하고 다른 사람이 해당 파일을 실행하거나 사용하는 것을 방지하기를 원할 수 있습니다.

관련 정보