유닉스 소켓에서 x (실행) 권한은 무엇입니까?


11

내 경험에 따르면 권한이없는 사용자는 x 비트를 설정하지 않으면 소유하지 않은 유닉스 소켓에 액세스 할 수 없습니다. 이 비트는 정확히 무엇을합니까? 감사


소켓이나 디렉토리에 대한 권한입니까?
Rui F Ribeiro

소켓에. 디렉토리에는 모드 0755가 있으므로 내용을 볼 수 있습니다. 소켓에는 모드 0644가 있으므로 논리적으로 사용자 (소켓을 소유하지 않기 때문에 "기타"에 속함)는 그룹 소유 소켓에 속함) 소켓에 쓸 수 있어야합니다. 그러나 모드 0777이 소켓에 적용되지 않으면 사용자에게 권한 거부 메시지가 표시됩니다.
Владимир Тюхтин

2
@ ВладимирТюхтин 0644는 그룹 구성원 및 "기타"에 대한 읽기 권한을 의미하므로 소유자 만 소켓에 액세스 할 수 있습니다 (쓰기 권한이 제어하기 때문에). 0666, 아니면 그냥 0222읽기 권한이 필요하지 않는 한, 모든 사람에게 액세스 권한을 부여하기에 충분하다. 그러나 모든 사람에게 권한을 부여하는 대신 그룹을 사용하여 액세스를 허용하려고합니다.
ilkkachu

답변:


9

내가 볼 수 있듯이 아무것도.

리눅스 man 페이지 유닉스 (7) 소켓을 포함하고있는 디렉토리의 권한 (즉, 당신이 필요로 일반적으로 적용된다는 것을 말한다 +x/foo에 연결하는 /foo/sock, 그리고 +w/foo생성 /foo/sock)하고 쓰기 소켓 자체에 연결하는 권한 제어 :

Linux에서 스트림 소켓 오브젝트에 연결하려면 해당 소켓에 대한 쓰기 권한이 필요합니다. 마찬가지로 데이터 그램을 데이터 그램 소켓에 전송하려면 해당 소켓에 대한 쓰기 권한이 필요합니다.

분명히 일부 다른 시스템은 다르게 작동합니다.

POSIX는 소켓 파일 및 일부 시스템 (예 : 이전 BSD)에 대한 권한의 영향에 대해 언급하지 않으며 소켓 권한은 무시됩니다. 휴대용 프로그램은 보안을 위해이 기능에 의존해서는 안됩니다.

unix(4)FreeBSD에서 비슷한 요구 사항을 설명합니다. 일부 시스템의 소켓 액세스가 디렉토리 권한도 무시하는지 Linux 매뉴얼 페이지에 표시되지 않았습니다 .

x소켓 에서 비트를 제거하면 소켓을 실행하려고 할 때 다른 오류가 발생하는 것처럼 보이지만 실제로는 큰 차이가 없습니다.

$ ls -l test.sock
srwxr-xr-x 1 user user 0 Jun 28 16:24 test.sock=
$ nc -U ./test.sock
Hello
$ ./test.sock
bash: ./test.sock: No such device or address
$ chmod a-x test.sock
$ nc -U ./test.sock
Hello
$ ./test.sock
bash: ./test.sock: Permission denied

(또한 wDebian의 Linux 4.9.0에서 소켓에 액세스하는 데 실제로 비트 만 중요 하다는 것을 테스트했습니다 .)

아마도 소켓이 사용자로부터 모든 권한 비트를 제거했거나 x디렉토리 의 비트 를 의미 했습니까?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.