アプリケーション開発ポータルサイト
ServerNote.NET
カテゴリー【FreeBSD
【FreeBSD初期設定】Keymap,SSH,.profile,.cshrc,vipw,vigr,Ports,Packages,Kernel Update,sudo
POSTED BY
2023-10-05

VMWare用仮想HDDファイルFreeBSD-12.0-RELEASE-amd64.vmdk.xzから起動した直後の状態。基本、何もない。
rootでパスワード無しコンソールログインからスタート。

まずキーボードがUSなのでJPに変更する。

kbdmap

下にスクロールしてJapanese JP 106を見つけて選択。
これでその場でキーボードが切り替わる。rc.confにどう書くかも教えてくれる。

/etc/rc.conf

keymap="jp.kbd"

パスワード変更

passwd

コンソールは大変なのでSSHログインできるようにする。

あくまで一時的にroot+passwordログイン可能とする

/etc/ssh/sshd_config

#PermitRootLogin no
PermitRootLogin yes
#PasswordAuthentication no
PasswordAuthentication yes
#PermitEmptyPasswords no

/etc/rc.conf

sshd_enable="YES"

service sshd start

で、rootでsshログインできるようになる。
が、すぐさま一般ユーザ+sudo環境を作って甘いsshの設定は戻すべきである。

ログインファイル.profile,.cshrcを変更
デフォルトだと
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:~/bin
ってなっているけど、これ、真逆ではないか??
これだとportsやpackageで/usr/localに入れた最新のコマンドがあっても/usr/sbinとかのほうが優先されてしまう。
(/usr/local/sbin/pkg コマンドを入れても /usr/sbin/pkg が優先される(パスを省略した場合)

mkdir defaults
cp -p .profile .cshrc defaults

# .profile 変更点

PATH=~/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# .cshrc 変更点

set path = ($HOME/bin /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin)
setenv  LANG ja_JP.UTF-8
        set history = 1000
        set savehist = (1000000 merge)

if ( -f $HOME/.csh_secures ) then
  source  $HOME/.csh_secures
endif

vipw 末尾に一般ユーザ追加(パスワード* : コンソールログイン不可)

hogeuser:*:1000:1000:hogeuser:/home/hogeuser:/bin/csh

vigr 一般グループ追加、およびhogeuserをwheelグループに加える

wheel:*:0:root,hogeuser
hogegroup:*:1000:

Debianと異なり自動でshadowが更新されるので、vipw -s,vigr -sは無し、不要。

mkdir -p /home/hogeuser

# さきほど変更したrootの.profile,.cshrcを新ユーザにもコピー

cp -p .profile .cshrc /home/hogeuser

# 新ユーザ用 SSH鍵ファイルを作成(既存のものがあればコピーペーストでOK)

mkdir /home/hogeuser/.ssh

ssh_keygen

# ~root/.sshができてしまったらまずいのですぐさま移動

mv .ssh/id_rsa.pub /home/hogeuser/.ssh/authorized_keys
mv .ssh/id_rsa /home/hogeuser/.ssh

rm -Rf .ssh # ~rootにあるなら消す

# まとめて権限変更

cd /home/hogeuser
chmod -R go-rwx .ssh
cd /home
chown -Rh hogeuser:hogegroup hogeuser

これでhogeuserはSSHの公開鍵認証でのみログイン可能となる。

Ports,Packages のセットアップ

https://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/ports-using.html

に従い、まずPortsのセットアップ

portsnap fetch
portsnap extract
portsnap fetch update

Portはコンパイルするとき/usr/libより/usr/local/libを優先するので、/usr/libにあるものを/usr/local/libにも新しいバージョンを入れる場合早くしておかないと、のちのちライブラリの競合が起きてmake reinstallの必要が出てくる。その代表的なものはOpenSSL。なので最初に入れておく。

Debianでいうapt searchがわからないのでとりあえずサイトから探す。

https://www.freebsd.org/ja/ports/searching.html

/usr/ports/security にあるようだ。

cd /usr/ports/security/openssl111
make install

以降は、/etc/make.confを作成し、日本のミラーを指定する。

vi /etc/make.conf

MASTER_SITE_BACKUP ?=  ftp://ftp.jp.freebsd.org/pub/FreeBSD/distfiles/
MASTER_SITE_OVERRIDE ?= ftp://ftp.jp.freebsd.org/pub/FreeBSD/distfiles/
DEFAULT_VERSIONS += ssl=openssl111

最後の一行は今openssl111を入れたので、以降sslはそっちを使ってくれと指定。

次に今すぐ必要であるsudoを入れてみる。

cd /usr/ports/security/sudo
make install

依存ソフトのコンパイルが行われ最後sudoのコンパイルが行われ…/usr/local/binに入る。
コマンド1つに大げさだが流れは把握できた。

アンインストールする場合
make deinstall

再インストールする場合
make reinstall

次に、バイナリパッケージをセットアップ

https://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/pkgng-intro.html

pkgというコマンドで行うようだが、さきほどPortsからsudo入れたとき、依存で/usr/local/sbin/pkgが入った。
cshrcで優先パスの順番を変更しているので、この新しい/usr/local/sbin/pkgが起動するはず。
念のため確認。

which pkg
/usr/local/sbin/pkg

このコマンドはDebianでいうaptっぽい。

pkg update -f # 検索ツリーのアップデート
pkg upgrade # パッケージ群のアップグレード
pkg autoremove # 使われてないパッケージの削除
pkg info # インストール済みパッケージ表示
pkg search <name> # 検索
pkg install <name> # インストール
pkg delete <name> # アンインストール
</name></name></name>

updateに-fをつける理由はこちら
Debianとの違いは、PortsもPackagesも/usr/local/に入るという点。/,/usr直下に上書きはしない。
しかしこっちのほうがすごく便利なのにpkgには日本のミラーが無いらしくめちゃちゃダウンロードが遅い。
Portsは日本のミラーを指定できるがコンパイルに時間かかるし…。多分現時点で最もLinux系に劣る点ではないだろうか。

システム(カーネル)のアップデート・アップグレード

https://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/updating-upgrading-freebsdupdate.html

アップデート

freebsd-update fetch
freebsd-update install

バージョン全体のアップグレード(例:12.1にアップグレード)

freebsd-update -r 12.1-RELEASE upgrade

ただしこれは他のOS同様、整数部がアップすると入れたパッケージも全リコンパイル、動作確認が厄介。

話をsudoの設定の戻す。

visudo (/usr/local/etc/sudoersが対象)

Defaults env_keep += "PATH EDITOR"
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults mail_badpass

%wheel ALL=(ALL) NOPASSWD: ALL

これでhogeuserはsudo -sも出来るようになったので、晴れてsshの設定を元のセキュアなものに戻す。

/etc/ssh/sshd_config

#PermitRootLogin no
#PasswordAuthentication no
#PermitEmptyPasswords no

service sshd restart

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

【キーワード検索】