Không có gì, như tôi có thể thấy.
Linux man page unix (7) nói rằng các điều khoản của thư mục có chứa một ổ cắm áp dụng bình thường (tức là bạn cần +x
vào /foo
để kết nối với /foo/sock
, và +w
trên /foo
để tạo ra /foo/sock
) và ghi điều khiển cho phép kết nối với ổ cắm riêng của mình:
Trên Linux, việc kết nối với một đối tượng ổ cắm luồng yêu cầu quyền ghi trên ổ cắm đó; gửi một datagram đến một socket datagram tương tự đòi hỏi phải có quyền ghi trên socket đó.
Rõ ràng một số hệ thống khác hoạt động khác nhau:
POSIX không đưa ra bất kỳ tuyên bố nào về tác dụng của các quyền đối với tệp ổ cắm và trên một số hệ thống (ví dụ: BSD cũ), các quyền của ổ cắm bị bỏ qua. Các chương trình di động không nên dựa vào tính năng này để bảo mật.
unix(4)
trên FreeBSD mô tả các yêu cầu tương tự. Trang người dùng Linux không nói nếu truy cập ổ cắm trên một số hệ thống cũng bỏ qua các quyền của thư mục .
Việc loại bỏ x
bit khỏi ổ cắm dường như có tác dụng gây ra một lỗi khác khi thử thực thi ổ cắm, nhưng đó không phải là một sự khác biệt thực tế:
$ 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
(Tôi cũng đã kiểm tra rằng thực sự chỉ có một w
chút vấn đề khi truy cập vào ổ cắm trên Linux của Linux 4.9.0.)
Có lẽ các socket mà bạn muốn nói đã loại bỏ tất cả các bit cho phép khỏi người dùng, hoặc bạn có nghĩa là x
bit trên thư mục?