Как я могу изменить права доступа к файлу сокета Linux? - PullRequest
7 голосов
/ 12 мая 2011

У меня есть программа, которая создает сокет, и затем я хочу изменить права доступа к файлу сокета:

ret_val = chmod(filename, 0777);

, но это не изменится, даже если ret_val будет 0. ЕслиЯ пытаюсь сделать то же самое в обычном файле, он работает.

Есть идеи?

PS: Я запускаю программу от имени пользователя root, поэтому у нее есть все необходимые полномочия.

1 Ответ

19 голосов
/ 12 мая 2011

С man 7 unix:

В реализации Linux сокеты, которые видны в файловой системе соблюдать права доступа к каталогу, в котором они находятся. группа и их разрешения могут быть изменены. Создание нового сокета потерпит неудачу, если у процесса нет разрешения на запись и поиск (выполнение) в каталоге, в котором создан сокет. Подключение к объект сокета требует разрешения на чтение / запись. Это поведение отличается от многих производных от BSD систем, которые игнорируют разрешения для домена UNIX Розетки. Переносимые программы не должны полагаться на эту функцию в целях безопасности.

Поэтому, если вы хотите контролировать разрешения для сокета, для того, чтобы быть переносимым, вы должны вместо этого контролировать права доступа к каталогу, содержащему сокет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...