Rien, comme je peux le voir.
Linux unix page de manuel (7) dit que les permissions du répertoire contenant un socket appliquent normalement (vous devez +x
sur /foo
se connecter à /foo/sock
et +w
sur /foo
la création /foo/sock
) et que écrire des contrôles d'autorisation de connexion à la prise elle - même:
Sous Linux, la connexion à un objet socket de flux nécessite une autorisation d'écriture sur ce socket; l'envoi d'un datagramme à un socket de datagramme nécessite également une autorisation d'écriture sur ce socket.
Apparemment, certains autres systèmes se comportent différemment:
POSIX ne fait aucune déclaration sur l'effet des autorisations sur un fichier socket, et sur certains systèmes (par exemple, les anciens BSD), les autorisations socket sont ignorées. Les programmes portables ne doivent pas compter sur cette fonctionnalité pour des raisons de sécurité.
unix(4)
sur FreeBSD décrit des exigences similaires. La page de manuel Linux ne dit pas si l'accès au socket sur certains systèmes ignore également les autorisations du répertoire .
La suppression du x
bit du socket semble avoir pour effet de donner une erreur différente pour essayer d'exécuter le socket, mais ce n'est pas vraiment une différence pratique:
$ 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
(J'ai également testé qu'en effet, seul le w
bit semblait avoir de l'importance pour accéder au socket sur Debian's Linux 4.9.0.)
Peut-être que les sockets que vous vouliez dire avaient tous les bits d'autorisation supprimés de l'utilisateur, ou vous vouliez dire le x
bit sur le répertoire?