SMFによるinetd管理方法

最終更新日:2006年04月17日

はじめに

概要

Solaris 10 ではサービス管理をSMF(Service Management Facility)で行うようになった為、inetd.conf を変更しただけではinetサービスの設定が変わらなくなった。
そこで、SMF配下でのinetサービスの管理方法を整理してみた。

※ SMFに関しては『Solaris 10 のサービス管理方法』参照

SMF配下でのinetサービス管理コマンド

管理コマンド

inetサービスの管理コマンドを以下に示す。
コマンド 役割
inetadm inetサービスの管理を行う。
inetconv テキストのinetd.confをリポジトリ(管理データベース)に登録する。

inetadmコマンドの主なオプション

inetadmコマンドを"-\?"オプションで実行すると以下のヘルプが表示される。
$ inetadm -\?
使用法:
  inetadm
  inetadm -?
  inetadm -p
  inetadm -l {FMRI | パターン}...
  inetadm -e {FMRI | パターン}...
  inetadm -d {FMRI | パターン}...
  inetadm -m {FMRI | パターン}... {name=value}...
  inetadm -M {name=value}...

オプションなしでは inetadm は inetd 管理のすべてのサービスを表示します。

オプション:
  -?    ヘルプを出力します。
  -p    デフォルトの inetd プロパティ値をすべて表示します。
  -l    inet サービスの inetd プロパティ値をすべて表示します。
  -e    inet サービスを有効にします。
  -d    inet サービスを無効にします。
  -m    inet サービスの inetd プロパティ値を変更します。
  -M    デフォルトの inetd プロパティ値を変更します。

inetconvコマンドの主なオプション

inetconvコマンドを"-\?"オプションで実行すると以下のヘルプが表示される。
$ inetconv -\?
使用法: inetconv [-fn] [-i <ソースファイル>] [-o <出力先ディレクトリ>]
       inetconv -e [-n] [-i <ソースファイル>]
-?          この使用法のメッセージを表示します
-e          入力ファイル内で有効になっている smf サービスを
            有効にします
-f          既存のマニフェストを強制的に上書きします
-n          変換されたマニフェストをインポートしないか、あるいは
            有効化されるサービスだけを表示します
-i <ソースファイル>  代替の入力ファイル
-o <出力先ディレクトリ>  マニフェストを格納する代替の出力先ディレクトリ

サービスの確認方法

全inetサービスのリスト表示

書式
inetadm
出力例
$ inetadm
ENABLED   STATE          FMRI
enabled   online         svc:/network/rpc/mdcomm:default
enabled   online         svc:/network/rpc/meta:default
enabled   online         svc:/network/rpc/metamed:default
enabled   online         svc:/network/rpc/metamh:default
enabled   online         svc:/network/rpc/gss:default
disabled  disabled       svc:/network/rpc/rex:default
  .
  .
  .

デフォルトのinetdプロパティ値表示

書式
inetadm -p
出力例
$ inetadm -p
NAME=VALUE
bind_addr=""
bind_fail_max=-1
bind_fail_interval=-1
max_con_rate=-1
max_copies=-1
con_rate_offline=-1
failrate_cnt=40
failrate_interval=60
inherit_env=TRUE
tcp_trace=FALSE
tcp_wrappers=FALSE

指定サービスのプロパティ値表示

書式
inetadm -l FMRI
出力例:ftpサービスのプロパティ値表示
$ inetadm -l ftp
SCOPE    NAME=VALUE
         name="ftp"
         endpoint_type="stream"
         proto="tcp6"
         isrpc=FALSE
         wait=FALSE
         exec="/usr/sbin/in.ftpd -a"
         user="root"
default  bind_addr=""
default  bind_fail_max=-1
default  bind_fail_interval=-1
default  max_con_rate=-1
default  max_copies=-1
default  con_rate_offline=-1
default  failrate_cnt=40
default  failrate_interval=60
default  inherit_env=TRUE
default  tcp_trace=FALSE
default  tcp_wrappers=FALSE
行頭に"default"がある項目は、inetdのデフォルト設定である事を示す。

プロパティ値の変更方法

デフォルトのinetdプロパティ値変更

書式
inetadm -M {name=value}...
実行例:デフォルトの tcp_wrappers を有効(TRUE)に変更
(現設定の確認)
# inetadm -p
NAME=VALUE
bind_addr=""
bind_fail_max=-1
bind_fail_interval=-1
max_con_rate=-1
max_copies=-1
con_rate_offline=-1
failrate_cnt=40
failrate_interval=60
inherit_env=TRUE
tcp_trace=FALSE
tcp_wrappers=FALSE
# 
(tcp_wrappersのデフォルト値をTRUEに変更)
# inetadm -M tcp_wrappers=TRUE
# 
(設定変更後の確認)
# inetadm -p
NAME=VALUE
bind_addr=""
bind_fail_max=-1
bind_fail_interval=-1
max_con_rate=-1
max_copies=-1
con_rate_offline=-1
failrate_cnt=40
failrate_interval=60
inherit_env=TRUE
tcp_trace=FALSE
tcp_wrappers=TRUE

指定サービスのプロパティ値変更−1

書式
inetadm -m FMRI name=value
実行例:telnetサービスの tcp_wrappers を有効(TRUE)に変更
(現設定の確認)
# inetadm -l telnet
SCOPE    NAME=VALUE
         name="telnet"
         endpoint_type="stream"
         proto="tcp6"
         isrpc=FALSE
         wait=FALSE
         exec="/usr/sbin/in.telnetd"
         user="root"
default  bind_addr=""
default  bind_fail_max=-1
default  bind_fail_interval=-1
default  max_con_rate=-1
default  max_copies=-1
default  con_rate_offline=-1
default  failrate_cnt=40
default  failrate_interval=60
default  inherit_env=TRUE
default  tcp_trace=FALSE
default  tcp_wrappers=FALSE
# 
(tcp_wrappersの値をTRUEに変更)
# inetadm -m telnet tcp_wrappers=TRUE
# 
(設定変更後の確認)
# inetadm -l telnet
SCOPE    NAME=VALUE
         name="telnet"
         endpoint_type="stream"
         proto="tcp6"
         isrpc=FALSE
         wait=FALSE
         exec="/usr/sbin/in.telnetd"
         user="root"
default  bind_addr=""
default  bind_fail_max=-1
default  bind_fail_interval=-1
default  max_con_rate=-1
default  max_copies=-1
default  con_rate_offline=-1
default  failrate_cnt=40
default  failrate_interval=60
default  inherit_env=TRUE
default  tcp_trace=FALSE
         tcp_wrappers=TRUE
tcp_wrappersの値がFALSEかたTRUEに変わっており、行頭の"default"が無くなってinetdのデフォルト設定から個別設定に変更されている事が分かる。

個別設定になったプロパティ値をデフォルト(default)に戻す場合は、"value"値を設定しないで実行する。
(設定をデフォルト値に戻す)
# inetadm -m telnet tcp_wrappers=
# 
(設定変更後の確認)
# inetadm -l telnet
SCOPE    NAME=VALUE
         name="telnet"
         endpoint_type="stream"
         proto="tcp6"
         isrpc=FALSE
         wait=FALSE
         exec="/usr/sbin/in.telnetd"
         user="root"
default  bind_addr=""
default  bind_fail_max=-1
default  bind_fail_interval=-1
default  max_con_rate=-1
default  max_copies=-1
default  con_rate_offline=-1
default  failrate_cnt=40
default  failrate_interval=60
default  inherit_env=TRUE
default  tcp_trace=FALSE
default  tcp_wrappers=FALSE
tcp_wrappersの行頭に"default"が付いてinetdのデフォルト値に戻った。

指定サービスのプロパティ値変更−2

書式
inetadm -m FMRI name=value
実行例:ftpサービスの起動オプションを変更
(現設定の確認)
# inetadm -l ftp
SCOPE    NAME=VALUE
         name="ftp"
         endpoint_type="stream"
         proto="tcp6"
         isrpc=FALSE
         wait=FALSE
         exec="/usr/sbin/in.ftpd -a"
         user="root"
default  bind_addr=""
default  bind_fail_max=-1
default  bind_fail_interval=-1
default  max_con_rate=-1
default  max_copies=-1
default  con_rate_offline=-1
default  failrate_cnt=40
default  failrate_interval=60
default  inherit_env=TRUE
default  tcp_trace=FALSE
default  tcp_wrappers=FALSE
# 
(起動オプション変更)
# inetadm -m ftp exec="/usr/sbin/in.ftpd -a -l"
# 
(設定変更後の確認)
# inetadm -l ftp
SCOPE    NAME=VALUE
         name="ftp"
         endpoint_type="stream"
         proto="tcp6"
         isrpc=FALSE
         wait=FALSE
         exec="/usr/sbin/in.ftpd -a -l"
         user="root"
default  bind_addr=""
default  bind_fail_max=-1
default  bind_fail_interval=-1
default  max_con_rate=-1
default  max_copies=-1
default  con_rate_offline=-1
default  failrate_cnt=40
default  failrate_interval=60
default  inherit_env=TRUE
default  tcp_trace=FALSE
default  tcp_wrappers=FALSE
exec行の起動オプションが変更されている。

inetサービスの有効化/無効化方法

サービスの有効化

書式
inetadm -e FMRI
実行例:rexecサービスの有効化
(現設定の確認)
# inetadm | grep rexec
disabled  disabled       svc:/network/rexec:default
# 
(有効化設定)
# inetadm -e rexec
# 
(設定変更後の確認)
# inetadm | grep rexec
enabled   online         svc:/network/rexec:default

サービスの無効化

書式
inetadm -d FMRI
実行例:ftpサービスの無効化
(現設定の確認)
# inetadm | grep ftp
enabled   online         svc:/network/ftp:default
# 
(無効化設定)
# inetadm -d ftp
# 
(設定変更後の確認)
# inetadm | grep ftp
disabled  disabled       svc:/network/ftp:default

サービスの登録方法

inetd.confのインポート

inetd.confの設定をインポートしてリポジトリ(管理データベース)に登録する。

書式
inetconv [-i ファイル名]

(ファイルを指定しない場合は、/etc/inet/inetd.conf が使用される)
実行例:ファイル名無指定で /etc/inet/inetd.conf のインポート
(inetd.conf をインポートしてsgi_famサービスを新規登録)
# inetconv
inetconv: 注意: 100235/1 のサービスマニフェストはすでに /var/svc/manifest/network/rpc/100235_1-rpc_ticotsord.xml として生成されています。スキップします
inetconv: 注意: 100083/1 のサービスマニフェストはすでに /var/svc/manifest/network/rpc/100083_1-rpc_tcp.xml として生成されています。スキップします
inetconv: 注意: 100068/2-5 のサービスマニフェストはすでに /var/svc/manifest/network/rpc/100068_2-5-rpc_udp.xml として生成されています。スキップします
sgi_fam/1-2 -> /var/svc/manifest/network/rpc/sgi_fam_1-2-rpc_tcp.xml
sgi_fam_1-2-rpc_tcp.xml をインポートしています ...完了
# 
(インポート結果の確認)
# inetadm | grep fam
enabled   online         svc:/network/sgi_fam_1-2/rpc_tcp:default
sgi_famサービスがinetdから起動可能になっている。

サービスの削除方法

サービスの削除

書式
svccfg delete -f FMRI
実行例:sgi_famサービスの削除
(現設定の確認)
# inetadm | grep sgi_fam
enabled   online         svc:/network/sgi_fam_1-2/rpc_tcp:default
# 
(サービスの削除)
# svccfg delete -f sgi_fam_1-2/rpc_tcp
# 
(削除結果の確認)
# inetadm | grep sgi_fam
# 
(manifestファイルの削除)
# rm /var/svc/manifest/network/rpc/sgi_fam_1-2-rpc_tcp.xml
#