실행 가능한 파일을 읽을 수 있습니까? 사용자 및 그룹 사용자 가

파일에 권한이 -rwx-wx-wx있는 경우 다른 사용자 및 그룹 사용자 가 파일을 읽거나 실행할 수만 있습니까? 실행 파일을 실행하여 읽을 수있는 방법이 있습니까?



답변

-rwx-wx-wx권한이 있는 파일 에는 소유자에 대한 읽기 / 쓰기 / 실행 권한이 있으며 다른 모든 사람에 대한 쓰기 / 실행 (읽기는 안 됨) 권한이 있습니다.

스크립트 (보통 #!첫 번째 줄에 텍스트 파일이있는 ) 인 경우 스크립트를 실행하면 실제로 인터프리터가 실행되므로 스크립트를 읽을 수 있어야하기 때문에 다른 사람이 실행할 수 없습니다 . (인터프리터는 다른 스크립트가 아닌 바이너리 여야합니다.) (실제로 모든 시스템에 해당되는 것은 아닙니다. 3.2.0 Linux 커널을 사용하는 Ubuntu는 인터프리터 자체가 해석 된 스크립트가 될 수 있습니다. 이 질문과 관련이없는 것으로 보입니다.)

이 바이너리 실행 파일이 있다면, 그것은 수 있습니다 직접 실행할 수 있지만, 그 내용은 읽을 수 없습니다. 예를 들어, 소유자 이외의 사람이 명령으로 명령을 실행할 수 있지만 실행 파일의 사본을 가져올 수는 없습니다.

물론 실행에는 읽기가 필요하지만 사용자가 아니라 커널에서 읽습니다. 실행중인 프로세스의 메모리를 검사하여 실행 파일의 내용에 대한 정보를 얻을 수는 있지만 바이너리 실행 파일을 재구성 할 수는 없을 것입니다. 실행 파일이 setuid이면 프로세스의 메모리를 검사 할 수 없습니다 (실행중인 계정에 액세스 할 수없는 경우).

덧붙여 말하자면, -rwx-wx-wx매우 이상한 권한 집합입니다. 소유자 이외의 다른 사람이 파일을 읽지 못하도록 보호하지만 누구나 수정할 수 있습니다. 나는 그것이 의미가있는 경우를 생각할 수 없다.


답변

이러한 권한이 있으면 파일 소유자 만 파일을 실행할 수 있습니다.

다른 사용자는 쓸 수는 있지만 실행할 수는 없지만 (이 경우에는 읽을 수 있음을 의미하므로) 일종의 블랙 박스로 쓸 수 있습니다.

user1:~$ cd /tmp
user1:/tmp$ echo "hostname" > testfile.sh
user1:/tmp$ chmod +x testfile.sh
user1:/tmp$ ./testfile.sh
server.example.com

user1:/tmp$ chmod 733 testfile.sh
user1:/tmp$ ls -l testfile.sh
-rwx-wx-wx 1 user1 user1 9 Jan 19 21:09 testfile.sh

user1:/tmp$ sudo su - user2
user2:~$ cd /tmp
user2:/tmp$ ./testfile.sh
./testfile.sh: Permission denied
user2:/tmp$ cat testfile.sh
cat: testfile.sh: Permission denied

user2:/tmp$ echo 'echo hello' >> testfile.sh
user2:/tmp$ ./testfile.sh
./testfile.sh: Permission denied

user2:/tmp$ logout

user1:/tmp$ ./testfile.sh
server.example.com
hello

답변

간단한 대답은 아니오입니다 . execsyscall 만이 읽기 액세스 를 요구하지 않고 파일을 읽을 수 있습니다 ( 실행 액세스는 필수이지만 ). openO_RDONLY또는 O_RDWR실패 할 것이다.


답변

물론 모든 파일은 루트 사용자가 읽을 수 있습니다.

또한 시스템 로더, 메모리 관리, 스왑 퍼 등은 ‘x’권한이있는 파일을 읽습니다. 그렇지 않으면 실행할 수 없습니다.

실행 가능한 내용을 공개하는 데 가능한 구멍은 프로세스의 / proc 파일, 코어 파일 또는 디버거를 사용하는 것일 수 있습니다.