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
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
Windowsのデスクトップ画面をそのまま配信するための下準備
WindowsでGPUの状態を確認するには(ASUS系監視ソフトの自動起動を停止する)
CORESERVER v1プランからさくらインターネットスタンダートプランへ引っ越しメモ
さくらインターネットでPython MecabをCGIから使う
さくらインターネットのPHPでAnalytics-G4 APIを使う
インクルードパスの調べ方
【Git】特定ファイルを除外する.gitignore
【Ubuntu/Debian】NVIDIA関係のドライバを自動アップデートさせない
【Python】Spacyを使用して文章から出発地と目的地を抜き出す
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
【Apache】サーバーに同時接続可能なクライアント数を調整する
GitLabにHTTPS経由でリポジトリをクローン&読み書きを行う
Windows版Google Driveが使用中と言われアンインストールできない場合
【Linux】iconv/libiconvをソースコードからインストール
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
【PHP】Mail/mimeDecodeを使ってメールの中身を解析(準備編)
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合