繁体   English   中英

热熔器如何以非root用户身份在套接字上报告?

[英]how does fuser report on sockets as non-root user?

我正在尝试使用定影器来查找我拥有的具有特定TCP端口打开的进程的pid。

在热熔器手册页中说:

...发生此问题的最常见时间是当以非root用户身份运行熔丝器时寻找TCP或UDP套接字。 在这种情况下,定影器将报告无访问权限。 ...

但是,在我的Ubuntu盒子上,fuser确实报告了我拥有的进程的套接字打开,例如:

perl -MIO :: Socket'IO :: Socket :: INET-> new(Listen => 10,LocalPort => 3000)'&

热熔器-n TCP 3000

问题:如何设置才能使这种情况发生? 它是内核配置选项吗?

谢谢!

注意:问题是:如何配置一些Linux发行版,以便在以正常用户身份运行熔凝器时,熔凝器将报告拥有套接字的进程? 如果我拥有一个Ubuntu发行版“ fuser -n tcp 3000”,它将报告一个进程,但是在另一个Linux发行版(我认为是Centos)上,即使我拥有它也不会报告该进程。

fuser遍历/proc文件系统( proc(5) ),遍历/proc/[pid]/fd/目录并检查文件描述符。 您拥有的进程又拥有自己的相应/proc条目。 这使您可以检查自己的过程,但不能检查其他过程。

strace(1)是一个非常有用的工具,它可以查看给定程序的工作方式。 例如,您可以看到系统调用什么,以及用什么参数由fuser完成:

~$ strace fuser -n tcp 3000

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM