2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

FreeBSD、rc.confの罠(はまりまくたぜぇ~(ーー;))!

FreeBSDのホスト情報及び基本モジュール起動情報は全て/etc/rc.confに入っている。このファイルはいわばFreeBSDの心臓部的な要素もビミョーに含んでいる。
rc.confの設定はデフォルトで起動するシステムモジュールやリモート関係のモジュール、さらにはメール、DHCP、DNS関係までrc.confの設定で自動起動出来る。
FreeBSDでは、このrc.confファイルから更に /etc/rc.i386,/etc/rc.pccard,/etc/rc.network などのスクリ
プトを起動するように拡張されている。こうした起動スクリプトの分離は、アプリケーションを自動的に組み込むために考え出された非常に簡単な方法であり、FreeBSDでは/usr/local/etc/rc.d/と /usr/X11R6/etc/rc.d ディレクトリ下のスクリプトを最後に起動するようになっている。
FreeBSDではこうした起動ファイルの設定を更に簡便に行うために、起動スクリプトの環境変数を別のファイルにまとめている。つまり、起動スクリプトは最初にこの環境変数を定義したファイルを読み込むようになっている訳である。


1.rc.confの中身

では、以下にrc.confの中身を見てみる。

bash-2.05b# more /etc/rc.conf

defaultrouter=”192.168.0.1″
hostname=”hoge”
domainname=”hogehoge.net”

ifconfig_ed0=”inet 192.168.0.44 netmask 255.255.255.0″
kern_securelevel_enable=”NO”
keymap=”jp.106″

inetd_enable=”YES”
inetd_flags=”-wWl”
linux_enable=”YES”
sendmail_enable=”NO”
sshd_enable=”YES”


2.何故、罠なのか?

このような情報になっている。ここで何故、罠なのかをいよいよ説明する。以下を見て欲しい。

inetd_enable=”YES”
inetd_flags=”-wWl”
linux_enable=”YES”
sendmail_enable=”NO”
sshd_enable=”YES”

ここで、sendmail_enable=”NO” になっているが、/etc/rc.confsendmail_enableを”NO”にして再起動してもsendmailは起動された(▼▼メ)ナンダトーォ~おかすぃじゃん(;-_-;)。


3.騙されたぜ!

(^∇^)アハハハハ!これはこういう仕掛けである。
/etc/defaultsの中にもrc.confが有った!アレレレ!?(・_・;?  なんじゃとぉ~ぅ!この中にもsendmailの設定しているセクションがあった。以下参照。

省略

##############################################################
### Mail Transfer Agent (MTA) options ######################
##############################################################

mta_start_script=”/etc/rc.sendmail”
# Script to start your chosen MTA, called by /etc/rc.
# Settings for /etc/rc.sendmail:
sendmail_enable=”NO” # Run the sendmail inbound daemon (YES/NO).
sendmail_flags=”-L sm-mta -bd -q30m” # Flags to sendmail (as a server)
sendmail_submit_enable=”NO” # Start a localhost-only MTA for mail submission
sendmail_submit_flags=”-L sm-mta -bd -q30m -ODaemonPortOptions=Addr=localhost”
# Flags for localhost-only MTA
sendmail_outbound_enable=”NO” # Dequeue stuck mail (YES/NO).
sendmail_outbound_flags=”-L sm-queue -q30m” # Flags to sendmail (outbound only)
sendmail_msp_queue_enable=”NO” # Dequeue stuck clientmqueue mail (YES/NO).
sendmail_msp_queue_flags=”-L sm-msp-queue -Ac -q30m”
# Flags for sendmail_msp_queue daemon.

省略

このようなセクションがあり、上のように“YES”になっていたところを“NO”にして再起動したらsendmailは起動しなくなった(笑)。

結果、つまりこういう事である。
最初に/etc/defaults/rc.conf を読み込み、その後に/etc/rc.confを読み込むようになっている。このことによって、ユーザーが独自に加えた変更/etc/rc.confに書き込むことによって、環境変数が上書きされ、システムに反映される訳で、必要のない(デフォルトのままで良い)設定は何もしなくとも /etc/defaults/rc.confの設定が生きるようになっているようである。さらに、必要なくなった場合は/etc/defaults/rc.conf/etc/rc.conf両方のモジュールセクションの内容を消す“NO”にしなければならない。これは、結構はまったよ(ーー;)。


4.2010年2月現在、このネタの正確な情報

読者から、このネタの正確な情報をいただきました。以下のSendmailのマニュアルに書いてあるように、/etc/rc.confの記述だけで良いようです(情報をいただきありがとうございました)。

man rc.sendmail
http://www.jp.freebsd.org/cgi/mroff.cgi?sect=8&cmd=&lc=1&subdir=man&dir=jpman-5.2.0%2Fman&subdir=man&man=rc.sendmail

この文書書いてあるように、
/etc/rc.confに、

sendmail_enable=“NO”
sendmail_submit_enable=“NO”
sendmail_outbound_enable=“NO”
sendmail_msp_queue_enable=“NO”

とするだけで良いようです。

以上

コメント