Linux / Unixの/ etc / servicesとは何ですか?

Linuxサービスファイルはよく知られているポートを格納しています

UNIX オペレーティングシステムは、サービスファイルと呼ばれるものを/ etc / servicesに格納します。 クライアントアプリケーションがコンピュータ上で使用する多数のサービスに関する情報を格納します。 ファイル内には、サービス名、使用するポート番号とプロトコル、および適用可能なエイリアスがあります。

ポート番号は、Windowsコンピュータ上のhostsファイルがホスト名をIPアドレスにマップするのと同じように、特定のサービスにマップされます 。 ただし、UNIXオペレーティングシステムのサービスファイルには、IPアドレスは含まれず、サービスがTCPかUDPかなどの情報と、どのような一般名が使用されているかなどの情報が含まれています。

単純なテキストエディタを使って、VimやKateのような/ etc / servicesファイルを編集することができます。

UNIXサービスファイルの例

UNIXでは、設定ファイル/ etc / servicesの重要な役割は、プログラムがどのポートを使用すべきかを理解するためにコードでgetportbyname()ソケット呼び出しを行うことができるようにすることです。 たとえば、POP3電子メールデーモンは、POP3が実行されている番号110を取得するためにgetportbyname(POP3)を実行します。

考えられるのは、すべてのPOP3デーモンがgetportbyname()を使用する場合、どのPOP3デーモンを実行しても、/ etc / servicesを編集することによっていつでもポート番号を再設定できます。

注:ポート番号の意味を理解するためにservicesファイルを使用することは信頼できません。 プログラムが使用しているポートを調べたい場合は、代わりにプログラムlsofを使用して、どのポートがどのプロセスにバインドされているかを正確に調べる必要があります。 lsofが適切でない場合は、より一般的な参照でポートを調べる必要があります。

すべてのサービスファイルは、次の同じ構文に従います

名前ポート/プロトコルエイリアスのコメント

ただし、この例のservicesファイルに示すように、各データベースエントリのエイリアスとコメントは必要ありません。

$ cat / etc / services##Copyright 2008 Sun Microsystems、Inc.すべての権利を保有します。 #使用はライセンス条項の対象です。 #tecpmux 1 / tcpエコー7 / tcpエコー7 / udp廃棄9 / tcpシンクnull破棄9 / udpシンクnull systat 11 / tcpユーザ昼間13 / tcp昼間13 / udp netstat 15 / tcp chargen 19 / tcp ttytstソース19 / udp ttytstソースftp-data 20 / tcp ftp 21 / tcp ssh 22 / tcp#セキュアシェルtelnet 23 / tcp smtp 25 / tcpメール時刻37 / tcp timserver time 37 / udp timserver name 42 / udpネームサーバー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デーモン$