Нічого, як я бачу.
Linux людина сторінка UNIX (7) говорить про те , що права доступу до директорії , що містять сокет зазвичай застосовуються (тобто вам потрібно +x
на /foo
підключення до /foo/sock
, і +w
на /foo
створення /foo/sock
) , і що записи управління дозволу при підключенні до самій розетці:
У Linux для підключення до об'єкта socket потоку потрібен дозвіл на запис у цей сокет; надсилання дейтаграми в розетку дейтаграми також вимагає дозволу на запис у цей сокет.
Мабуть, деякі інші системи поводяться інакше:
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
(Я також перевіряв, що дійсно лише w
біт має значення для доступу до сокета на Linux 4.9.0 Debian.)
Можливо, в сокетах, які ви мали на увазі, були видалені всі користувачеві дозволи, або ви мали на увазі x
біт у каталозі?