假设服务器正在运行并正在监听/var/run/some-socket.sock
。 /var/run/some-socket.sock
拥有所有者root
和群组root
。
不能在B
下运行的程序root
是否可以窃听从程序A
到套接字的写入/读取?如何阻止程序B
窃听来自A
的连接?
答案 0 :(得分:0)
一般来说,没有。
套接字不是文件,.sock
文件不是套接字。套接字是内存中的构造,可以由已建立连接的两个进程访问。每个进程都可以读取和写入套接字构造,就像它是一个文件一样,因此进行通信。这个套接字“文件”只作为内存中的抽象存在;它永远不会写入磁盘。
但是,希望打开另一个程序的套接字的进程需要某种方式与其他程序通信,以便它们可以建立套接字并进行通信。当然,这会带来一些问题。 .sock
个文件是解决此问题的唯一方法。它们代表一个进程(在本例中为A
)正在侦听的地址。如果另一个进程(如B
)尝试打开.sock
文件的套接字,则操作系统会将连接请求传递给A
。如果A
实际上正在侦听该地址并接受连接,则A
和B
可以设置套接字连接并进行通信。
当然,如果套接字表示与外部网络的连接,即互联网连接,则可以窃听通过用于该连接的接口发送的内容。 Wireshark和tcpdump可以做到这一点。