संक्षिप्त उत्तर है:root
सभी बाइंडिंग देखने के लिए आपका होना आवश्यक है ।
थोड़ा समय और:
नेटस्टैट का मैनपेज एक संकेत देता है जो सभी मामलों में आवश्यक नहीं है:
PID / प्रोग्राम का नाम
स्लैश-अलग-अलग जोड़ी प्रक्रिया आईडी (PID) और प्रक्रिया का नाम जो सॉकेट का मालिक है। --program
इस कॉलम को शामिल करने का कारण बनता है। आपके पास जो सॉकेट नहीं हैं, इस जानकारी को देखने के लिए आपको सुपरसुसर विशेषाधिकारों की भी आवश्यकता होगी।
इसलिए, एक सामान्य उपयोगकर्ता के रूप में, आप केवल यह देखते हैं कि कौन सी प्रक्रिया किसी पोर्ट की सुनती है, यदि आप इसे अपनाते हैं:
$ netcat -l -p 1234 &
$ netstat -tulpn
[...]
tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 8044/netcat
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
[...]
आप "अपने" नेटसैट प्रक्रिया को देखते हैं, लेकिन उदाहरण के लिए पोर्ट 22 को कौन नहीं सुन रहा है।
मुझे लगता है, इसका कारण यह है कि आप /proc/[PID]/fd
स्वामित्व वाली प्रक्रियाओं के लिए कोई शुल्क नहीं ले सकते । वहाँ आपको लगता है कि फाइल डिस्क्रिप्टर प्रक्रिया [PID]
वर्तमान में खुल गई है और Un * x (लगभग) में सब कुछ एक फाइल है ... और इसलिए सॉकेट हैं।
मेरे उदाहरण में sshd
, pid 3934, 22 को सुनता है (आश्चर्य-आश्चर्य):
$ whoami
user
$ ls -l /proc/3934/fd
/bin/ls: cannot open directory /proc/3934/fd: Permission denied
$ sudo ls -l /proc/3934/fd
total 0
lrwx------ 1 root root 64 Apr 24 16:33 0 -> /dev/null
lrwx------ 1 root root 64 Apr 24 16:33 1 -> /dev/null
lrwx------ 1 root root 64 Apr 24 16:33 2 -> /dev/null
lrwx------ 1 root root 64 Apr 24 16:33 3 -> socket:[10481]
lrwx------ 1 root root 64 Apr 24 16:33 4 -> socket:[10483]
(दूसरा सॉकेट IPv6 एड्रेस के लिए बंधन है जिसे मैंने अपने नेटस्टैट आउटपुट में छोड़ दिया है।)