services - ファイルのフォーマットと規約の説明 - Linux コマンド集 一覧表
- 名前
- 説明
- バグ
- ファイル
- 関連項目
名前
services - インターネット ネットワークサービス リスト
説明
services
は、インターネットサービスの分かりやすい名前と、
それらのサービスに割り当てられたポート番号と
プロトコルの種類の間の対応関係が書かれているテキストファイルである。
ネットワーク上で動作するプログラムはすべて、
そのサービスに対応するポート番号 (とプロトコル) を得るために、
このファイルを調べる必要がある。
C ライブラリ関数である
getservent
(3),
getservbyname
(3),
getservbyport
(3),
setservent
(3),
endservent
(3)を利用することで、プログラムはこのファイルを調べることができる。
ポート番号は、IANA (Internet Assigned Numbers Authority) によって
割り当てられており、現在はポート番号を割り当てる際に
TCP と UDP の両方のプロトコルを割り当てることになっている。
そのため、ほとんどのサービスに対して、
たとえ TCP だけのサービスの場合であっても、対応する項目が二つあることになる。
1024 より小さいポート番号 (いわゆる 'low numbered' ポート) は
管理者 (root) 権限によってのみ使用することができる
(
bind
(2),
tcp
(7),
udp
(7) 参照)。
これは、これらのポートに接続するクライアントに対して、
そのポートで動いているサービスが標準的な実装であり、
その計算機のユーザーが動かしている
不正なサービスではないことを保証するためである。
IANA に明記されているよく使用されるポート番号は、
通常このような管理者だけが使用できる範囲に配置される。
services
ファイルにあるサービスに対する項目があっても、必ずしもそのサービスが現
在その計算機で動いている訳ではない。利用可能なインターネットサービスの設定に
ついては
inetd.conf
(5)に記述されている。ただし、すべてのサービスが
inetd
(8) によって起動されるわけではないので、
inetd.conf
(5)には書かれていないサービスもあることに注意する必要がある。
特に、ネットニュース (NNTP) や メール (SMTP) のサーバーは、システム起動時の
スクリプトから起動されることが多い。
services
ファイルの場所は、
/usr/include/netdb.h
中の
_PATH_SERVICES
によって定義されている。
この値は通常
/etc/services
に設定されている。
1 行につき 1 サービスが記述されており、その形式は以下の通りである。
2service-nameport3/2protocol1[2aliases ...1]
-
-
service-name
-
-
サービスを表す分かりやすい名前であり、検索の際にも使用される。
大文字と小文字は区別される。
クライアントプログラムは
service-name
にちなんで名付けられることが多い。
-
port
-
サービスに対して使用されるポート番号。10 進数で指定する。
-
protocol
-
使用されるプロトコルの種類。この欄は、
protocols
(5) ファイルの中の項目と一致している必要がある。
通常使用される値は、
tcp
と
udp
である。
-
aliases
-
サービスに対する別名のリスト (区切はスペースまたはタブ) で、この欄は
必要にならば書くことができる
(但し、下記のバグのセクションを参照のこと)。また、別名は
大文字と小文字は区別される。
それぞれの欄の区切りには、スペースまたはタブが使用される。
コメントはシャープ (#) で始まり、その行の終わりまでがコメントとみなされる。
空行は飛ばされる。
行の始めのスペースは無視されないので、
service-name
は、行頭から書かなければならない。
service-names
は、スペースとタブ以外の印字可能な文字なら何でもよいが、しかしながら
プログラムの実行時の問題を少なくするような文字を選択すべきである。
例えば、a-z 、0-9 、ハイフォン (-) を使用するのが無難と思われる。
指定された形式に合わない行はあってはならない (現在は、そのような行は
getservent
(3),
getservbyname
(3),
getservbyport
(3)によって無視される。しかし、その場合の挙動は信頼できない)。
古いバージョンとの整合性の問題から、実際には
port
番号と
protocol
の間のスラッシュ (/) は、スラッシュかコンマ (,) のどちらでも構わない。
しかしながら、今なおコンマを使用するのは望ましいことではない。
このファイルは、Yellow Pages/NIS や BIND/Hesiod のようなネットワーク上の名前
サービスを用いて、ネットワークを通じて配布される可能性もある。
services
ファイルの見本を以下に示す。
netstat 15/tcp
qotd 17/tcp quote
msp 18/tcp # message send protocol
msp 18/udp # message send protocol
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp 21/tcp
# 22 - unassigned
telnet 23/tcp
バグ
getservent
(3) のコードの書き方の問題で、35 個までしか別名を付けることができない。
BUFSIZ
(現在は 1024) 文字より長い行は、
getservent
(3),
getservbyname
(3),
getservbyport
(3)により無視される。さらに、このことは次の行が正しく解釈されない原因となる。
ファイル
-
/etc/services
-
インターネット ネットワークサービスのリスト
-
/usr/include/netdb.h
-
_PATH_SERVICES
の定義
関連項目
listen
(2),
endservent
(3),
getservbyname
(3),
getservbyport
(3),
getservent
(3),
setservent
(3),
inetd.conf
(5),
protocols
(5),
inetd
(8)
ポート番号の割り当てを定めている RFC (最新版は RFC1700、別名 STD0002)
Yellow Pages Service / NIS のドキュメント
BIND/Hesiod Service のドキュメント
- Linux Tips 関連記事
- Linux Tips(目次)
- Linux ディストリビューション一覧
- rpm のファイル名にあるi386とかi686とは
- 自分のマシンの情報を調べる
- cron の設定
- ssh の root ログインを禁止する
- ssh を、ユーザ、IPでアクセス制限
- 鍵交換方式によるssh接続
- 鍵交換方式によるssh接続( windowsから )
- 複数ファイル内の文字列を置換して上書き保存する
- あるグループをイニシャルグループとするユーザー一覧出力
- 複数ファイルのファイル名を一括変換する
- 連番ファイルをコマンド一発で作成する
- 中身がランダムなファイルを任意のサイズで作成する
- Linux ユーザーアカウントをロック・アンロックする