什麼是Linux / Unix中的/ etc / services?

Linux服務文件存儲眾所周知的端口

UNIX 操作系統在/ etc / services存儲所謂的服務文件 。 它存儲有關客戶端應用程序可能在計算機上使用的眾多服務的信息。 文件內是服務名稱, 端口號和協議以及任何適用的別名。

端口號映射到特定服務,就像Windows計算機上的主機文件將主機名映射到IP地址一樣 。 但是,UNIX操作系統的服務文件不包括IP地址,而是諸如服務是TCP還是UDP以及可能通過的常用名稱等信息。

一個簡單的文本編輯器可以用來編輯/ etc / services文件,例如Vim或Kate。

UNIX服務文件的示例

在UNIX上,配置文件/ etc / services的關鍵角色是程序可以在其代碼中執行getportbyname()套接字調用,以便了解它們應該使用的端口。 例如,POP3電子郵件守護程序將執行getportbyname(POP3)以檢索POP3運行的編號110。

這個想法是,如果所有的POP3守護進程都使用getportbyname(),那麼無論你運行什麼POP3守護進程,都可以通過編輯/ etc / services來重新配置它的端口號。

注意:使用服務文件來確定端口號碼的含義是不可靠的。 如果你想知道哪些端口程序正在使用,你應該使用lsof程序來確定哪些端口被綁定到哪些進程。 如果運行lsof不合適,那麼你應該研究一個更通用的參考端口。

所有的服務文件都遵循相同的語法

名稱端口/協議別名註釋

但是,每個數據庫條目的別名和註釋並不是必需的,正如您在此示例服務文件中看到的那樣:

$ cat / etc / services##版權所有2008 Sun Microsystems,Inc.保留所有權利。 #使用受制於許可條款。 ##“”@(#)服務1.34 08/11/19 SMI“##網絡服務,Internet風格#tcpmux 1 / tcp echo 7 / tcp echo 7 / udp丟棄9 / tcp sink null丟棄9 / udp sink null systat 11 / tcp users daytime 13 / tcp daytime 13 / udp netstat 15 / tcp chargen 19 / tcp ttytst source chargen 19 / udp ttytst source ftp-data 20 / tcp ftp 21 / tcp ssh 22 / tcp#Secure Shell telnet 23 / tcp smtp 25 / tcp郵件時間37 / tcp timserver時間37 / udp timserver名稱42 / udp nameserver whois 43 / tcp nicname#通常為sri-nic swat 901 / tcp#Samba Web Adm.Tool servicetag 6481 / udp servicetag 6481 / tcp snmpd 161 / udp snmp#SMA snmp daemon $