Encontrei um soquete Unix sendo usado na saída do lsof
comando:
COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME
screen 110970 username 4u unix 0xffff91fe3134c400 0t0 19075659 socket
A coluna "DEVICE" contém o que parece ser um endereço de memória. De acordo com a página man lsof:
DEVICE contains the device numbers, separated by commas, for a character special, block special, regular, directory or NFS file;
or ``memory'' for a memory file system node under Tru64 UNIX;
or the address of the private data area of a Solaris socket stream;
or a kernel reference address that identifies the file (The kernel reference address may be used for FIFO's, for example.);
or the base address or device name of a Linux AX.25 socket device.
Usually only the lower thirty two bits of Tru64 UNIX kernel addresses are displayed.
Minha pergunta é, qual desses eu estou olhando com o valor 0xffff91fe3134c400
?
Além disso, como posso interagir com ele? Eu sei que posso usar netcat
para conectar a um soquete de domínio Unix, mas lendo exemplos on-line, parece que você precisa especificar um arquivo.
Não sei responder sua primeira segunda pergunta, mas em relação à primeira, você pode usar o
+E
sinalizador forlsof
para mostrar o endpoint do socket. Das páginas man:Por exemplo, aqui está um exemplo de uma pergunta que alguém teve onde ele estava tentando descobrir o ponto final de fd 6 de um
top
processo:O
-U
sinalizador paralsof
mostra apenas arquivos de soquete Unix.Observe que você verá apenas o nome do arquivo de soquete para os processos de escuta . O outro processo não mostrará o nome do arquivo de soquete unix, mas com
+E
lsof mostrará o inode do arquivo de soquete de escuta e também adicionará uma linha para o processo de escuta neste soquete (junto com o nome do arquivo de soquete).Neste exemplo, observe que pedimos apenas
lsof
para mostrar os descritores de arquivo detop
comando, maslsof
adicionamos outra linha paradbus-daem
- que é o processo de escuta, e o arquivo de soquete que ele escuta é/var/run/dbus/system_bus_socket
.type=STREAM ->INO=366381191 874,dbus-daem,12u
)/var/run/dbus/system_bus_socket type=STREAM ->INO=366379599 25127,top,6u
), e lá você pode ver que o nome do arquivo do socket é/var/run/dbus/system_bus_socket
.