簡體   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