什么是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 $