From that article, I realized that:
a UNIX domain socket is bound to a file path.
So, I need to sniff DGRAM Unix socket through the socat
as mentioned here. But when I try to retrieve the path for this purpose, I find that the target application uses a socket without file path.
The ss -apex
command shows results both with and without file paths, e.g.:
u_dgr UNCONN 0 0 /var/lib/samba/private/msg.sock/32222 1345285 * 0 users:(("nmbd",pid=32222,fd=7))
u_dgr UNCONN 0 0 * 8567674 * 0 users:(("gnome-shell",pid=16368,fd=23))
From the ss man page I can't find out, what does it mean e.g. * 8567674
without file path.
So, two questions:
- Why there is no file path to unix socket for some cases?
- How can I sniff unix DGRAM socket through
socat
without having file path?
bind()
wasn't called on them or they were created withsocketpair()
. See definition ofunix_seq_show()
in linux.