FreeBSD / BasicSetup


FreeBSD

2. FreeBSD の基本的な設定

2.1 特権ユーザ(root)で作業開始

とりあえず最初は root でログインする。

2.2 一般ユーザアカウントの生成

自分が普段使うアカウントを作る。adduser コマンドを使い、指示に従って設定。

基本的にはデフォルトの設定を受け入れておけばよい。ただし、wheel グループ

に入れておくと、su で root になれるようになるので便利。root 権限を渡して

はいけないユーザを wheel グループに入れてしまわないように注意。

2.3 ports collection の更新

2.3.1 portsnap の実行

この後、基本的には ports collection を使って各種ソフトウェをインストール

していく。ports collection は、日々更新されているので、まずは最新の状態

にする。このために portsnap を用いる。

portsnap は以前は ports/sysutils/portsnap をインストールする必要があったが

現在はベースシステムに入っているので特に下準備はいらない。

以下のコマンドを実行する

# portsnap fetch && portsnap extract && portsnap update

これで、最新の ports tree を取得し、展開してくれる。


2.3.2 定期的な portsnap の実行

portsnap は毎日自動的に実行されるようにしておくと良い。

以下の行を /etc/crontab ファイルに追加する。追加する場所は

最後にしておけば無難。

# Update ports tree
0 3 * * * root portsnap cron && portsnap update && /usr/local/sbin/portversion -vL=

これで、毎晩 午前 3時に portsnap が起動する。

ただし、portsnap は引数に cron が指定された場合 1〜3600秒間

ランダムに sleep したあと更新作業を開始する。従って、マシン

ごとに起動時刻の設定を変える必要は無い。

ここで指定した portversion コマンドは、この時点ではまだシステムに

インストールされていない。2.4 でインストールする

portupgrade に含まれているコマンドである。

なお、更新結果は root 宛てにメイルされる。root 宛のメイルを自分が

読めるようにする設定は後述する。

2.4 portupgrade をインストール

ports collection は make コマンドを使ってインストールするのが基本だが

更新のことなどを考えると portupgrade コマンドを使うほうが便利。

そこで portupgrade コマンドをインストールする。

# cd /usr/ports/sysutils/portupgrade
# make install clean
# rehash

portupgrade の実行に必要な様々なツールも、自動的にインストールされる。

関連するツールも自動的にインストールしてくれるのも ports の便利な

ところの一つ。

make install clean ではなく、make install だけでも良い。

しかし、それだとインストール後に不要なオブジェクトファイルなどが残る。

そこで make clean も実行すると良い。make install と make clean を続けて

実行するため、ここでは make install clean。詳しくは make コマンド

のマニュアルなどを参照してね。

root のログインシェルは csh であるため、最後の rehash を実行しないと、

インストールしたばかりの portupgrade(に含まれる portinstall) を

コマンド実行パスから見つけることができない。これ以降、インストールした

ばかりのコマンドはすぐには使えなくても驚かない。あわてずに rehash を実行する。

なお、これ以降のコマンド実行例では rehash は省略する。

rehash を実行しても実行できない場合、コマンド実行パスがどうなっているかを確認す

る。環境変数 PATH を見ればよい。また pkg_info -L を使って、インストールした

ports がどこに何をインストールしたかを確認してみるのも役に立つ。

2.6 sudo

ここまで root でログインして作業してきている。しかし、これは基本的には危険。で

きるかぎり root ではログインせず、一般ユーザでログインするべき。そして必要なと

きだけ root 権限を取得して作業を行う。

これを容易に実現するためのツールが sudo。

2.6.1 sudo をインストール

# portinstall sudo

/usr/ports/security/sudo で make install clean しても良いが、便利なので ~portupgrade (に含まれている portinstall) を使う。

2.6.2 sudo を設定

sudo では、ユーザ・グループごとに与えることができる特権を制御可能。とりあえず、

お手軽に wheel グループのメンバーは root になれるようにする。

# visudo

これで sudo の設定ファイルが編集可能になる。以下の行をコメントアウト(行頭の #

を消す)する。

%wheel  ALL=(ALL)       ALL

2.7 一般ユーザで作業を継続

ログアウトし、一般ユーザでログインしなおす。id コマンドを実行して、自分が wheel

グループに入っているのを確認すること

% id
uid=1001(toshi) gid=1001(toshi) groups=1001(toshi), 0(wheel)

上記で行頭の % は一般ユーザのプロンプトを示す。以下同様。

2.7.1 wheel グループへの追加

もしも wheel グループに入っていなかったら /etc/group ファイルを編集。この作業に

は root権限が必要なので、いったん一般ユーザからログアウトし、root でログインし

直す必要がある。

以下のように wheel で始まる行を編集する。

wheel:*:0:root,toshi

すでに、ほかのユーザが wheel グループに入っていた場合には注意。消してよいかどう

か良く考えること。インストールした直後に作業しているのであれば、他のユーザが入~っていることはありえない。しかし、後から追加したユーザに権限を付与するときなど

は注意。

2.8 portaudit のインストール

ports collection にセキュリティホールなどが見つかった場合に通知してくれるツール

である portaudit をインストールする。

% sudo portinstall portaudit

早速 sudo を使って portinstall を実行する。ここで入力するパスワードは root のパ

スワードではなく、自分のパスワードであることに注意。

また、portaudit インストール直後に、画面の指示に従って portaudit を実行しておく

と良い。最新の ports collection になった状態で作業しているので、おそらく問題は

ないはず。

portaudit は、インストールされると自動的に、毎日実行されるようになる。

portaudit によって、インストール済みの port にセキュリティホールが見つかった場

合には以下のような表示が出るか、もしくはメイルが来る。これはmysql-server にセ

キュリティホールが見つかったときのものである。

Checking for packages with security vulnerabilities:

Affected package: mysql-server-5.0.21
Type of problem: MySQL -- SQL-injection security vulnerability.
Reference: <http://www.FreeBSD.org/ports/portaudit/7f8cecea-f199-11da-8422-00123ffe8333.html>

1 problem(s) in your installed packages found.

You are advised to update or deinstall the affected package(s) immediately.

この場合、以下のように portupgrade を実行し port の更新を行う。

# portupgrade mysql-server-5.0.21

もちろん、実際に更新をする port は、セキュリティホールが見つかったものにしなけ

ればならない。

2.9 root 宛のメイルの転送

FreeBSD は標準では、午前3時にシステムの状況を監査し、その結果を root 宛てにメ

イルする。そのメイルが自分で受け取れるようにしておく。

% sudo vi /etc/mail/aliases

aliases ファイルには以下のような行を入れる。

root: foo@example.net

実際には foo@example.net のところには、自分のメイルアドレスを書く。

編集後以下のコマンドの実行を忘れない。

% sudo newaliases

正確ではない説明をすると、これによって aliases ファイルをコンパイルし、

sendmail (MTA) が読み込めるようにする。

2.10 時計あわせ

マシンの時計がずれているとなにかと困るのであわせよう。ntp を使うのが王道。ntp

サーバは情報科学部内であれば ntp.is.kyusan-u.ac.jp を使えばよい。学外であれ

ば、インターネットマルチフィードの時刻情報サービスを使うのが良いんじゃないかな。


2.10.1 起動時の時刻あわせ

まずは起動時に ntpdate を使って時刻を使って合わせるようにしておこ

う。/etc/rc.conf に以下を追加。

ntpdate_enable="YES"
ntpdate_hosts="-b ntp.is.kyusan-u.ac.jp"

学外の場合には ntpdate_hosts で指定するホストは、上記の情報等を見て適当にして

いるすること。-b はホスト名より前に指定すること。

2.10.2 ntpd を使った時刻あわせ

起動時以外は ntpd を使って時刻を合わせる。/etc/rc.conf に以下を追加。

ntpd_enable="YES"

さらに、以下のような内容で /etc/ntp.conf を作成。

server ntp.is.kyusan-u.ac.jp

学外の場合には、指定するサーバを変えること。

2.11 おまけツールのインストール

2.11.1 日本語対応 less

FreeBSD 標準の less は日本語が表示できない。さすがにちょっと辛いので日本語対応

の less である jless をインストールする。

% sudo portinstall japanese/less

これで /usr/local/bin/jless が利用可能になる。less の代わりに jless を使うため

に以下のようなコマンドを実行しておくのも悪くない。

% sudo ln -s jless /usr/local/bin/less

コマンド実行パスで /usr/bin よりも前に /usr/local/bin があれば、/usr/bin/less

の代わりに /usr/local/bin/less が実行されるようになる。

2.11.2 zsh

ログインシェルとして zsh を使っている。sh 系の非常に強力なシェルである。お勧め。

% sudo portinstall zsh

その後、ログインシェルを変更する。

% chsh

Shell: の後を /usr/local/bin/zsh にする。


2.11.3 screen

ssh で遠隔ログインしているときに、セッションが切れて悲しい思いをしたり、長時間

かかる作業を始めてしまってログアウトできずになって悲しい思いをすることがある。

このような事態を避けるのに非常に便利なツールが screen。

% sudo portinstall screen

詳しい使い方は自分で調べてね。

2.11.4 jvim3

標準の vi は日本語を取り扱えない。一部のアプリは設定ファイル中に日本語を含むの

で、jvim3 を入れておくと便利。

% sudo portinstall japanese/jvim3

ただし、標準では jvim3 は X Window System 対応のコードが有効になっている。シス

テムに X を未インストールの場合、X のライブラリも同時にインストールされて大

変。この場合以下のようにして X を無効にしてインストールするとよい。

% env WITHOUT_X11=YES sudo portinstall japanese/jvim3

jvim3 インストール後は vi コマンドの代わりに jvim コマンドを実行すると、日本語

対応の vi が起動する。

2.12 ブート時間の短縮

FreeBSD はブート時にブートメニューが10秒間表示される。個人的には、3秒ぐらいで

十分だと思っている。以下の行を /boot/loader.conf に加えればよい。

autoboot_delay="3"

7秒ぐらいしか変わらないので、やらなくても良い

最新の20件

2019-06-01 2019-05-20 2019-05-13 2015-08-29 2009-11-07 2009-06-06 2008-12-20 2006-09-22 2006-06-20 2006-06-19

  • counter: 73
  • today: 1
  • yesterday: 0
  • online: 1