O que a permissão x (execute) faz nos soquetes unix?

11

Pela minha experiência, o usuário não privilegiado não pode acessar o soquete unix que ele / ela não possui sem o conjunto de bits x. O que esse bit faz exatamente? obrigado

Владимир Тюхтин
fonte
É a permissão nos soquetes ou no diretório?
Rui F Ribeiro
Em uma tomada. O diretório possui o modo 0755, para que o usuário possa observar o conteúdo. O soquete possui o modo 0644, portanto, logicamente, o usuário (que pertence a "outros" porque não possui soquete e pertence ao soquete proprietário do grupo) deve poder gravar no soquete. Mas o usuário obtém permissão de negação de mensagem, a menos que o modo 0777 seja aplicado ao soquete.
Владимир Тюхтин
2
@ ВладимирТюхтин, 0644significa apenas permissão de leitura para os membros do grupo e "outros", para que apenas o proprietário possa acessar o soquete (já que a permissão de gravação o controla). 0666, ou apenas 0222como a permissão de leitura não é necessária, seria suficiente para dar acesso a todos. Mas, em vez de dar permissões a todos, eu usaria grupos para permitir o acesso.
Ilkkachu

Respostas:

9

Nada, como posso ver.

O Linux página homem unix (7) diz que as permissões do diretório contendo uma tomada aplicam normalmente (ou seja, você precisa +xde /foose conectar a /foo/sock, e +wem /foocriar /foo/sock) e que escreve controles de permissão de conexão ao próprio socket:

No Linux, conectar-se a um objeto de soquete de fluxo requer permissão de gravação nesse soquete; o envio de um datagrama para um soquete de datagrama também requer permissão de gravação nesse soquete.

Aparentemente, alguns outros sistemas se comportam de maneira diferente:

O POSIX não faz nenhuma declaração sobre o efeito das permissões em um arquivo de soquete e, em alguns sistemas (por exemplo, BSDs mais antigos), as permissões de soquete são ignoradas. Programas portáteis não devem contar com esse recurso para segurança.

unix(4)no FreeBSD descreve requisitos semelhantes. A página de manual do Linux não disse se o acesso ao soquete em alguns sistemas também ignora as permissões do diretório .

Remover o xbit do soquete parece ter o efeito de gerar um erro diferente ao tentar executar o soquete, mas isso não é uma diferença prática:

$ 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

(Eu também testei que, de fato, apenas um wpouco parece importar para acessar o soquete no Linux 4.9.0 da Debian.)

Talvez os soquetes que você quis dizer tenham removido todos os bits de permissão do usuário, ou você quis dizer o xpouco no diretório?

ilkkachu
fonte