自分用 FreeBSD 4.4 メモ
4.4BSDを基本としているので注意。
・"/etc/shells"ファイル
→chshコマンドで指定出来るシェルプログラムのリスト。
また、ftpのログインチェックではユーザのshellがこのファイルに記載されているかチェックされる。
このファイルに記載されていないプログラムをシェルに指定するには、vipwコマンドで直接編集する。
・"/usr/share/skel/"ディレクトリ
→ユーザを新規作成する時に、そのユーザの$HOMEにコピーされるスケルトンファイル群。
"."始まりのファイルの場合は、スケルトンファイル名が"dot.~"になっている。
adduser(8)参照。
・(t)csh系の、.profileや.cshrcファイルのロード
→ログイン時、ログアウト時、非ログインシェルで異なる。
1. login時は次の順でロード。
2. logout時は次の順でロード・実行
3. 非ログインシェルの時は "~/.cshrc" だけ。
・csh系は、PATH環境変数の中のプログラムが増減したら、"rehash"シェルコマンドを実行する。
→実行しないと、補完用の内部データが更新されない。
・"man hier"
→FreeBSDのファイル階層のmanページ。
・Quota(クォータ)はGENERICカーネルではOFFになっている。
→"options QUOTA"を指定してカーネルの再構築が必要。
quota(1)参照。
・shutdownコマンド豆知識
→ユーザー締めだし:
shutdown -k now
→シングルモードへ移行:
shutdown now
※これを実行すると、ttyもtty0だけになるので注意。
・suできるのはwheelグループだけ。
→FreeBSD独特。Linuxから移ってきた時は注意。
・telnet/SSHによるrootからの直接ログイン禁止
→"/etc/ttys"でターミナル(tty)の設定が書かれている。"ttyp"で始まるのがネットワーク経由の疑似ターミナルの設定になる。
ttypXX経由でのroot直接ログインを許可するには、"ttypXX"の各行(沢山用意されてる)に"secure"を追加しておく。
・singleモードに移行する時、rootパスワードを入力させるには
→"/etc/ttys"の"console"設定を"insecure"にする。
例:
# name getty type status comments console none unknown off insecure
・"/etc/master.passwd" : 4.4BSDの場合、これが原本。(Linuxと違い、/etc/shadowが無い)
→もし"/etc/master.passwd"を直接編集したら、編集後に "pwd_mkdb -p" を実行する。これにより実際のプログラムが使用する専用のデータベースファイルが生成・同期される。
/etc/passwd : master.passwdの平文 /etc/pwd.b : /etc/passwdのデータベースファイル /etc/spwd.db : master.passwdのデータベースファイル
※FreeBSDの場合は"/etc/passwd"ファイルは実際には使われていない。過去の遺産として存在しているだけ。
・Ctrl+Alt+Deleteによる再起動を防ぐには
options SC_DISABLE_REBOOT
オプションを有効にしてカーネル再構築すること。GENERICでは有効化されていない。
→4.4BSDの場合はインストール後、必ず1度はカーネル再構築が必要とゆーことwww
・"rcほげほげ"の考え方
→システム系は "/etc/defaults/rc.conf" を "/etc/rc.conf" で上書きした上で、"/etc/rc.XXXX"を実行。
→ "/usr/local/etc/rc.d/*.sh" を"start"引数付で自動実行していく。
基本的に"OSを構成するプログラム群"の設定が /etc/rc.xxxx で制御される。
"/usr/local/"以下は、packageやportsを使って後からインストールするアプリ用、と割り切っている。
Linuxとは大分趣が違い、どちらかというとWindowsのような「調和の取れたプログラム群」として最低限度を備えたシステム、という印象が強い。
・cron周り:Linuxでも使われているvixie-cronを使っている。
→ただし、ファイルやディレクトリ配置がBSD流儀になっているので注意。
→"man crontab", "man at" 参照。
なお4.4BSDでは、daily/weekly/monthlyの各実行スクリプト群を "periodic" というプログラムにより一段、ラップしている。periodic(8)参照。
・packageを追加する時の"dry-run"オプション:
pkg_add -nv パッケージ(ファイル)名
なお、4.4BSDなど古いパッケージのFTPサーバは "ftpX.jp..."から、"ftp-archives.freebsd.org"に移動しているので注意。
・ports関連:
"/ports-mgmt/portupgrade" → 4.4BSD:/sysutil/に入ってる。 "/ports-mgmt/portcheckout" → 4.4BSD:/devel/に入ってる。
portsを展開するには:
・BINDはシステムに含まれている。
→ named(8), ndc(8) 参照。設定ファイルは "/etc/namedb/"以下。
ndcコマンドでBINDの制御を行える。
なお127.0.0.1の逆引きファイルを作る為に、4.4BSDの場合は "/etc/namedb/make-localhost"が用意されてる。shで実行すると"localhost.rev"が生成される。便利。
・ftpサーバ:
→基本はinetd経由。stand-aloneで動かす場合は手動でスクリプト用意したりする。リリースによって揺れ動いている?
4.4BSDの場合、anonymousはsysinstallから設定すると良い(chroot使うので色々裏で処理してる)。一旦anonymousを使えるようにした後で、禁止したくなった場合は"/etc/ftpusers"ファイルのリストに追加すればOK。
システムに入っているftpについては、"man ftp" 参照。ユーザー用などはchrootできるようになっていたり、一応一通りは揃ってる。
ports/ftp に色々入っているので、好きなftpサーバを入れて動かしてもOK。
・Apacheはpackageで用意されてる。
→"apachectl"が "/usr/local/sbin/" に入ってくる。"/usr/local/etc/rc.d/"の下にも、起動・停止用のshファイルが入ってくるので、好きな方を使う。
後はいつも通り設定できる。
・MTAのデフォルトはsendmail
→それなりにmcファイルが多少は分かりやすく構成されてる。VirtualHost対応も比較的簡単にできるようになってる。
ただし、Relay周りやPOP before SMTP, Submission Port対応となると厳しいかも・・・。(最近はサーバ構築もしてないので、特にSubmission Port対応とか全然分からない・・・)
packageやportsで、postfixやqmailも用意されてるので、そっち使っても良い。"/etc/mail/mailer.conf"に、sendmail互換プログラムを指定することで、システムとして互換性を保って動くようになってる。
"/usr/sbin/sendmail"は実際はmailwrapper(8)へのシンボリックリンクになっており、mailwrapperは"/etc/mail/mailer.conf"を見ることで実際に起動するプログラムを選択する仕掛け。
・POPやIMAPサーバはシステムには入ってないので、packageやportsからインストールする。
→qpopperやcourier-imap, imap-wuなどが用意されている。基本inetd経由になる。inetd.confに雛形の設定行が用意されてるので、適当に併せて設定した後 "killall -HUP inetd" して動作確認。POP, IMAPについてはHandBookの方もあまり充実していないので注意。
・パスワードの脆弱性のチェックには、portsから"security/crack"をインストール出来る。
→実行方法は少し特殊。"/usr/local/crack"へcdしたのち、"./Crack"や"./Reporter"のように実行する。
・パスワードの有効期限や最小文字数などを設定するには
→ "/etc/login.conf" を編集する。"man 5 login.conf"参照。編集後は "cap_mkdb"コマンドを実行。
・tcpdumpは最初から入ってる。
→rootで動かす。
・カーネルセキュリティ(securelevel)について
→"man securelevel", init(8)参照。"/etc/rc.conf"にて、"kern_securelevel"で調整出来る。
・Firewallについて:
→歴史と共に、何種類か実現手段がある。HandBook参照。
・ファイルの改ざん検出:portsに"security/tripwire"があるので使ってみると良いかも。
・"hosts.allow, hosts.deny"のmanページってどこ?
→"man 5 hosts_access", "man 5 hosts_options"参照。
・NTP、時刻合わせ:
→xntpの実装がシステムに組み込まれてるので、それを使えばOK。
Desktop系:Power-ON時に一度時刻合わせすればOKタイプ:
→ "ntpdate <server名 or ip>"でOKだが、"/etc/rc.conf"で "ntpdate_enable=YES", "ntpdate_flags=サーバ名orIP"を指定することで、rcの処理時に自動でntpdateコマンドを実行してくれるようになる。
Server系:Daemon化してちょっとずつ時刻合わせしたり、他のマシンに対してNTPサーバになったりするタイプ:
→"/etc/rc.conf"で、"xntpd_enable", "xntpd_flags"を調整する。"/etc/ntp.conf"も適宜調整。("x"はつかないかも)
他、"man ntdpate", "man ntpd", "man ntp.conf" 参照。
・カーネル再構築の手順
1. カーネルをバックアップする。
→ 4.4BSDの場合は"/"直下にカーネルイメージが"kernel"というファイル名で通常は置かれる。インストールする毎に"kernel"→"kernel.old"とドンドンバックアップも上書きされていく。またカーネルのモジュールは"/modules"に置かれ、これも"/modules.old"にバックアップされるが、インストールする毎に上書きされていく。
→なので、正常動作するバージョンを一旦backupしておくとよい。
2. "sys/i386/conf/"以下で適当な設定ファイルを作成する。
→既にGENERICというGENERICカーネル用の設定ファイルがあるので、コピーするのが早い。
3. コンパイルする。
→ソースツリーのtopへcdし、
# make buildkernel KERNCONF=XXXXX(2.で作成した設定ファイル名)
※"KERNCONF"オプションを指定しない場合は、デフォルトとしてGENERICが使われる。
4. インストールする。
→カーネルのセキュリティレベル(sysctl kern.securelevel)によっては、実行中のカーネルイメージを置き換えるのを禁止している場合がある。
# make installkernel KERNCONF=XXXXX(2.で作成した設定ファイル名)
が基本だが、もしsecurelevelの設定で置き換えが禁止されている場合は、一旦シングルモードで再起動した後、"make installkernel"すれば良い。
※"KERNCONF"オプションを指定しない場合は、デフォルトとしてGENERICが使われる。
5. デバイスノードの作成(4.xBSD系のみ)
# cd /dev # ./MAKEDEV
→これにより、カーネルの使うデバイスノードが作成される。
※書籍によっては、設定ファイル編集後の手順が
# config XXXXX(設定ファイル名) # cd ../../compile/ # make depend && make all install
としているものもある。"make buildkernel"を使えばこれらをまとめてやってくれるので、buildkernel → installkernelの手順で問題ない。
・システムの再構築
→HandBookにも詳しく書かれてる。
基本は次の手順。
※シングルモードで再起動した後は、"mount -a"で一旦全てのパーティションを通常通りマウントする。
※"mergemaster -p"については、"-p"オプションが無かった時代の書籍では省かれている場合もあるので注意。