UNIX 소켓에서 x(실행) 권한은 무엇을 합니까?

UNIX 소켓에서 x(실행) 권한은 무엇을 합니까?

내 경험상 x 비트가 설정되지 않으면 권한이 없는 사용자는 자신이 소유하지 않은 Unix 소켓에 액세스할 수 없습니다. 이것이 정확히 무엇을 하는가?

답변1

내가 아는 한 아무것도 없습니다.

리눅스UNIX 매뉴얼 페이지(7)소켓이 포함된 디렉터리를 나타내는 권한은 일반적으로 적용됩니다(즉, 연결하려면 +xon 이 필요 하고 생성하려면 on 필요 )./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디렉토리의 비트를 언급하고 있는 것일 수도 있습니다.

관련 정보