[FreeBSD] 一般ユーザに root 権限を与え忘れて shutdown できないことに気がついた時にやるべきこと
インストール後 FreeBSD に一般ユーザーでログインした後 shutdown コマンドが実行できないことに気が付きました。しょうがない、では、root になって設定変更するか〜と思ったんですが root になるために su – を実行しても su コマンドを実行する権限がないために root になれないという状況でした。
ということで、
- インストールする時に何かを忘れた
のではないかと思います。また、もし正しくインストールできたのだとしたら、
- インストール後最初に起動した時は root でログインして一般ユーザーに権限を与える
が必要だったのだと思います。
で、いずれにしても、root 権限のない一般ユーザーでログインして shutdown できない状況になったので、仕方なく電源ボタン長押しの強制終了したあと、再度立ち上げて root でログインして以下の設定変更を行いました。
[FreeBSD] 一般ユーザーが su コマンドを実行できるようにする設定方法
上の写真は root でログインしたところです。
/etc の group ファイルを修正する必要があるので、まず cp コマンドでコピってバックアップしておきます。
そして、vi エディタで /etc/group を編集しました。
修正した後に diff コマンドで差分を見てみると wheel の行にユーザー名が追加されていることがわかります。wheel グループにこのユーザーを追加したわけです。これでこのユーザーは su コマンドが実行できるようになりました。
で、もう一回再起動して一般ユーザーでログインした後 su – を実行するとちゃんと root になれました。めでたしめでたし。
しかし、これだけでは足りない。なぜなら root 権限の必要のあるコマンドを実行する時いちいち一旦 root にスイッチユーザーしないといけないというのは結構な手間です。Linux なんかで sudo の操作になれていると sudo も入れたくなるというものです。だからここで sudo も入れておきます。
FreeBSD に sudo をインストールする
ここからは MacBook Air から FreeBSD に ssh でログインしたあと設定していきます。
$ ssh oreore@10.1.0.3
Password for oreore@keyaki:
Last login: Mon Jan 2 14:59:03 2017 from 10.1.0.6
FreeBSD 11.0-RELEASE-p1 (GENERIC) #0 r306420: Thu Sep 29 01:43:23 UTC 2016
Welcome to FreeBSD!
Release Notes, Errata: https://www.FreeBSD.org/releases/
Security Advisories: https://www.FreeBSD.org/security/
FreeBSD Handbook: https://www.FreeBSD.org/handbook/
FreeBSD FAQ: https://www.FreeBSD.org/faq/
Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/
FreeBSD Forums: https://forums.FreeBSD.org/
Documents installed with the system are in the /usr/local/share/doc/freebsd/
directory, or can be installed later with: pkg install en-freebsd-doc
For other languages, replace "en" with a language code like de or fr.
Show the version of FreeBSD installed: freebsd-version ; uname -a
Please include that output and any error messages when posting questions.
Introduction to manual pages: man man
FreeBSD directory layout: man hier
Edit /etc/motd to change this login announcement.
Need to remove all those ^M characters from a DOS file? Try
tr -d \\r < dosfile > newfile
-- Originally by Dru <genesis@istar.ca>
%
ssh で FreeBSD にログインできたら su – で root になります。
% su -
#
root になったら下記コマンドを実行します。
# cd /usr/ports/security/sudo # make clean # make instal
このあと、うじゃうじゃ文字が大量に出力されていきました。そしてその途中でこんな画面で止まりました。
意味があんまりわからなかったのでそのままエンターを押して先に進めました。
ここもまあええかーと思ってエンターを押して先に進めました。で、またぱらぱらとメッセージが表示され続けた後、sudo のインストールが完了しました。
この写真 ↓ は一般ユーザーで sudo date と試しに叩いてみたところなんですが、sudo をインストールするだけではダメで設定が必要です。それを今からやっていきましょう。
で、
FreeBSD の sudo 設定
root になって作業します。
% su -
Password:
#
visudo コマンドを引数なしで実行しますが、このコマンドで変更が加わる実ファイルは /usr/local/etc/sudoers です。visudo 実行前にバックアップをとっておきます。
# cd /usr/local/etc/ # ls -l sudoers -r--r----- 1 root wheel 3560 Jan 2 15:04 sudoers # cp -p sudoers sudoers.org # visudo
visudo コマンドを実行して
- # % wheel ALL=(ALL) ALL
の行についているコメント # を剥がします。diff コマンドで差分を確認します。
# ls -l sudoers* -r--r----- 1 root wheel 3558 Jan 2 15:35 sudoers -r--r----- 1 root wheel 3560 Jan 2 15:04 sudoers.org -r--r----- 1 root wheel 3560 Jan 2 15:04 sudoers.sample sudoers.d: total 1 -rw-r--r-- 1 root wheel 0 Jan 2 15:04 .keep-me # diff sudoers.org sudoers 90c90 < # %wheel ALL=(ALL) ALL --- > %wheel ALL=(ALL) ALL #
sudoers ファイルが修正されました。これで wheel グループに属するユーザーが sudo コマンドを実行できるようになります。一般ユーザーに戻ってもう一度 sudo date と叩いてみます。
# exit logout % sudo date Password: Mon Jan 2 15:41:25 JST 2017 %
できました!ここまでを FreeBSD インストール直後にやっておくと良いでしょう。