Unix Domain Socket(UDS)在文件系统中表现为类型为“s”的特殊套接字文件,权限位以s开头、大小为0字节,可用find / -xdev -type s定位,但需结合ss -xl或lsof -Ua验证是否被进程实际监听。

Unix Domain Socket(UDS)在文件系统中表现为一种特殊类型的文件,用 find -type s 就能直接定位——它不是普通文件、目录或链接,而是内核创建的“套接字文件”,类型标识为 s。
确认系统中是否存在 UDS 文件
Unix Domain Socket 文件由内核在 bind() 时创建,路径通常是 /tmp/xxx.sock、/run/xxx.sock 或 /var/run/xxx.sock。它们在文件系统中可见,但不能用 cat 或 vim 打开,尝试读写会报错“Operation not supported”或“No such device or address”。
这类文件的特征是:
- 权限位以
s开头(如srwxr-xr-x),表示 socket 类型 - 大小恒为 0 字节(不占用实际磁盘空间)
- 用
ls -l查看时,文件类型显示为socket
用 find -type s 快速扫描全系统
执行以下命令可列出所有已创建的 UDS 文件:
find / -xdev -type s 2>/dev/null
说明:
-
/:从根目录开始搜索 -
-xdev:不跨文件系统(跳过 /proc、/sys、/dev、挂载的 NFS 等,避免报错和误判) -
-type s:只匹配 socket 类型文件 -
2>/dev/null:屏蔽“Permission denied”等无关错误
常见结果示例:
/tmp/myapp.sock<br>/run/docker.sock<br>/var/run/dbus/system_bus_socket<br>/run/systemd/private
聚焦高风险路径,提升排查效率
并非所有 UDS 都异常,重点检查以下三类路径:
-
/tmp/和/var/tmp/:临时目录易被恶意进程创建监听点,尤其名称随机(如/tmp/abc123.sock)或权限宽松(如 world-writable) -
/run/和/var/run/:服务常用路径,但若发现非系统服务名的 socket(如/run/.hidden.sock),需结合lsof -U或ss -xl查归属进程 -
用户家目录(如/home/*/):开发或测试环境可能遗留未清理的 socket,特别是.cache或.local下
例如,快速筛查 tmp 目录下的可疑 socket:
find /tmp -type s -name "*.sock" -ls 2>/dev/null
验证 socket 是否正在被监听
find -type s 只能发现已创建的 socket 文件,不能判断是否活跃。需进一步确认其是否被进程绑定并监听:
- 用
ss -xl | grep sock查看当前监听中的 UDS(-x表示 Unix domain、-l表示 listening) - 用
lsof -Ua | grep sock查看哪些进程打开了该 socket 文件 - 对比两组结果:若
find找到某 socket,但ss -xl中无对应条目,说明该文件已残留(未被 clean up),可能是异常退出的服务遗留
例如,检查 /tmp/malicious.sock 是否活跃:
ss -xl | grep "/tmp/malicious.sock"<br>lsof -Ua | grep "/tmp/malicious.sock"


















