Nada, como puedo ver.
El Linux página del manual de Unix (7) afirma que los permisos del directorio que contiene una toma aplican normalmente (es decir, que necesita +x
de /foo
conectarse a /foo/sock
, y +w
en /foo
la creación /foo/sock
) y que escribir controles de permisos de conexión a la toma de sí mismo:
En Linux, conectarse a un objeto de socket de flujo requiere permiso de escritura en ese socket; enviar un datagrama a un zócalo de datagrama también requiere permiso de escritura en ese zócalo.
Aparentemente, algunos otros sistemas se comportan de manera diferente:
POSIX no hace ninguna declaración sobre el efecto de los permisos en un archivo de socket, y en algunos sistemas (por ejemplo, BSD anteriores), se ignoran los permisos de socket. Los programas portátiles no deben confiar en esta característica por seguridad.
unix(4)
en FreeBSD describe requisitos similares. La página de manual de Linux no dijo si el acceso a socket en algunos sistemas también ignora los permisos de directorio .
Eliminar el x
bit del socket parece tener el efecto de dar un error diferente al intentar ejecutar el socket, pero esa no es una gran diferencia práctica:
$ 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
(También probé que, de hecho, solo w
parece importar el bit para acceder al socket en Debian Linux 4.9.0).
¿Quizás los sockets que quisiste decir tenían todos los bits de permiso eliminados del usuario, o quisiste decir el x
bit en el directorio?