0111 또는 0333과 같은 권한의 목적 암시하지 않는 경우 111

실행 기능이 자동으로 읽기 기능을 암시하지 않는 경우 111 또는 333 (예 : 사용자 는 실행할 있지만 파일을 읽을 수 없음) 과 같은 Linux 권한의 목적은 무엇입니까 ?



답변

나는 그것을 가지고 놀았으며 분명히 exec 권한은 읽기 권한을 의미하지 않습니다. 바이너리는 읽을 수없이 실행 가능할 수 있습니다.

$ echo 'int main(){ puts("hello world"); }' > hw.c
$ make hw
$ ./hw
hello world
$ chmod 111 hw
$ ./hw
hello world
$ cat hw
/bin/cat: hw: Permission denied

읽기 및 실행 권한 비트가 모두 없으면 스크립트를 실행할 수 없습니다.

$ cat > hw.sh
#!/bin/bash
echo hello world from bash
^D
$ chmod +x ./hw.sh
$ ./hw.sh
hello world from bash
$ chmod 111 ./hw.sh
$ ./hw.sh
/bin/bash: ./hw.sh: Permission denied


답변

예를 들어 특정 디렉토리에 (비밀) 실행 파일을 유지 한 다음 사용자가 디렉토리 내용을 보지 않고도 해당 파일을 호출 할 수있게하는 경우와 같이 디렉토리에 적합합니다. 111에 비해 333은 디렉토리의 내용을 보지 않고도 해당 디렉토리에 파일을 쓰거나 삭제할 수 있습니다.


답변

분명히 모든 조합이 그다지 유용하지는 않지만 구체적으로 언급 한 것을 취하십시오 … 문제의 파일이 스크립트 (예 : 셸 스크립트)가 아닌 한 실제로 read파일을 실행할 권한이 필요하지 않습니다 ( 권한 만) execute( .sh), 펄 스크립트 ( .pl) 등). execute권한 만으로 일반 바이너리를 실행할 수 있습니다 . * BSD-systmes에서 여러 실행 파일은 특히 “보안 중요”명령에 대해 execute허용없이 권한을 부여합니다 (예 read🙂 su.

그렇다면 왜 사용자에게 read권한을 부여하지 execute않는가? 사용자가 읽을 수없는 파일을 숨기십시오. 해당 사용자 도 복사 할 수 없습니다 ! read권한을 제거 하면 사용자가 자신의 “개인”실행 파일 사본을 만들 수 없습니다. 나중에 사본을 남용 할 수 있습니다 (예 : get SUID=root on).

write-permission이 없으면 파일이 악의적으로 삭제 되지 않습니다 .

소유자 에게 read-또는- write권한을 부여하지 않는 것은 조금 드문 일이지만 때로는 owner파일을 삭제하는 것 조차 막는 것이 좋습니다 . 물론 owner– 말할 것도없고 root– 수도 항상 우회하기 등의 조치를하지 않을 경우 다른 방법으로, 단순히하여 chmod파일에 대한 권한.


답변