2020 年度 OSS リテラシ 3 : Debian の基本セットアップ
はじめに
本演習ではサーバとして VMware 上の仮想マシンを用いる. 仮想マシンは既に Debian GNU/Linux 10 の基本インストールが終了している.
配布される VM は基本インストールが終わっており, ユーザ jxxxx が sudo コマンドを用いて管理者権限を使えるように設定されている.
仮想マシンへのログイン
演習で周知された IP, ユーザ名 (jxxxx), パスワードを用いて仮想マシンへログインせよ. 演習室の Windows の putty を用いること.
再起動後に再度 VM へ ssh でログインする. その際に使う IP アドレスは /etc/network/interfaces に設定した IP アドレス (10.176.0.1xx, xx は自分の機材の番号) にすること.
パッケージのアップデート
Debian ではソフトウェアは「パッケージ」という単位で管理される. パッケージを最新版に更新するためには, apt-get update で最新パッケージ情報を取得し, apt-get upgrade で更新されたパッケージのみをダウンロード・インストールする.
まずは sudo コマンドで管理者権限を使う方法を確認する.
$ sudo -s (jxxxx から管理者に移行) あなたはシステム管理者から通常の講習を受けたはずです。 これは通常、以下の3点に要約されます: #1) 他人のプライバシーを尊重すること。 #2) タイプする前に考えること。 #3) 大いなる力には大いなる責任が伴うこと。 [sudo] jxxxx のパスワード: (jxxxx のパスワードを入力する) # (管理者権限となったのでプロンプトが # に変わる) # exit (管理者から hogehoge へ移行) $
apt-get update でパッケージ情報を更新する.
$ sudo -s # apt-get update 無視:1 http://www.gfd-dennou.org/debian stretch InRelease ヒット:2 http://www.gfd-dennou.org/debian stretch-updates InRelease ヒット:3 http://www.gfd-dennou.org/debian stretch Release ヒット:5 http://security.debian.org/debian-security stretch/updates InRelease パッケージリストを読み込んでいます... 完了
パッケージを更新する.
# apt-get upgrade パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 アップグレードパッケージを検出しています... 完了 以下のパッケージは保留されます: linux-image-amd64 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 1 個。 # exit $
ユーザ管理
ここでは自分自身と教員のユーザアカウントを作成し, 両名を sudo コマンドで管理者権限を使えるように設定する. Linux では管理者権限を用いる場合に sudo コマンドを使うのが一般的である. 複数人でシステムを管理するのが普通であり, root のパスワードを皆で共有することは推奨されない.
以下の例では自分自身のアカウント名を hogehoge としているが, 適宜希望アカウント名で置き換えること.
なお標準的な Linux コマンドの解説は, 例えば LPI-Japan「Linux 標準教科書」 を参照のこと.
自分のユーザアカウントの作成
現在のアカウント名を確認してみよう. 現在のユーザが jxxxx であることが確認できる.
$ whoami jxxxx
sudo コマンドで管理者になる.
$ sudo -s
自分のユーザアカウントを adduser コマンドで作成する. 以下ではアカウント名を hogehoge としているが, 各自の好きな文字列で置き換えること (学籍番号は使わない). ターミナルを起動し, adduser コマンドでユーザを作成する. 途中で名前や部屋番号など 聞かれるが, フルネームのみ真面目に入力すれば良い.
# adduser hogehoge (hogehoge の部分は適宜変更すること) ユーザ `hogehoge' を追加しています... 新しいグループ `hogehoge' (1001) を追加しています... 新しいユーザ `hogehoge' (1001) をグループ `hogehoge' として追加しています... ホームディレクトリ `/home/hogehoge' を作成しています... `/etc/skel' からファイルをコピーしています... 新しい UNIX パスワードを入力してください: 新しい UNIX パスワードを再入力してください: passwd: パスワードは正しく更新されました hogehoge のユーザ情報を変更中 新しい値を入力してください。標準設定値を使うならリターンを押してください フルネーム []: SUGIYAMA Ko-ichiro (自分の名前を入れる) 部屋番号 []: 職場電話番号 []: 自宅電話番号 []: その他 []: 以上で正しいですか? [Y/n]
教員のユーザアカウントの作成
教員のユーザアカウント (sugiyama) を作成する. ここではパスワードを設定しないので, --disabled-password オプションを付けて adduser コマンドを実行する. フルネームには SUGIYAMA Ko-ichiro と入れること.
# adduser --disabled-password sugiyama ユーザ `sugiyama' を追加しています... 新しいグループ `sugiyama' (1002) を追加しています... 新しいユーザ `sugiyama' (1002) をグループ `sugiyama' として追加しています... ホームディレクトリ `/home/sugiyama' を作成しています... `/etc/skel' からファイルをコピーしています... sugiyama のユーザ情報を変更中 新しい値を入力してください。標準設定値を使うならリターンを押してください フルネーム []: SUGIYAMA Ko-ichiro 部屋番号 []: 職場電話番号 []: 自宅電話番号 []: その他 []: 以上で正しいですか? [Y/n] Y
管理者権限の設定 (sudo)
Linux で管理者権限を用いる時は, root でログインするのではなく, sudo コマンドを用いるのが一般的である. 今回は新たに作成した自分のアカウントと教員のユーザアカウントについて sudo の設定を行う.
sudo コマンドの設定ファイル (/etc/sudoers) を確認すると, sudo グループに属するユーザは管理者権限を行使できるようになっていることがわかる. 先頭の "%" はグループを意味するので, 以下の例の "%sudo" は "sudo グループに属するユーザ" という意味である. すなわち, デフォルトで sudo グループに属するユーザは管理者権限を使えるようになっている.
# cat /etc/sudoers (...中略...) # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL (...後略...)
そこで, 新規作成したユーザ hogehoge と sugiyama をグループ sudo に加える.
# usermod -G sudo hogehoge # usermod -G sudo sugiyama
確認として, /etc/group の中身を確認する.
# grep sudo /etc/group sudo:x:27:jxxxx,sugiyama,hogehoge
ユーザ hogehoge で sudo できることを確認する. まずはユーザの切り替えをする.
# whoami root (現在は root であることがわかる) # exit $ whoami jxxxx (現在は jxxxx であることがわかる) $ su hogehoge $ whoami hogehoge (新しく作成したユーザ hogehoge であることがわかる) $ cd (ホームディレクトリに移動)
管理者権限を使う場合は sudo -s コマンドを実行する. プロンプトが $ から # へ変わることを確認する. sudo コマンドを初めて実行するときは, 管理者権限を使う心得が表示されるので, 心に刻むこと.
$ sudo -s (hogehoge から管理者に移行) あなたはシステム管理者から通常の講習を受けたはずです。 これは通常、以下の3点に要約されます: #1) 他人のプライバシーを尊重すること。 #2) タイプする前に考えること。 #3) 大いなる力には大いなる責任が伴うこと。 [sudo] hogehoge のパスワード: # (管理者権限となったのでプロンプトが # に変わる) # exit (管理者から hogehoge へ移行) $
再起動
$ sudo -s # reboot
再起動後は, ユーザ jxxxx ではなく, 新たに作成したユーザ hogehoge を使うこと (hogehoge は適宜自分のアカウントに読み替えること).
教員アカウントでログイン可能とするための設定
再起動後は演習室の Windows からユーザ hogehoge でログインすること.
教員が各 VM にログインできるようにするために, 公開鍵をしかるべき場所に設定する. ファイル/ディレクトリの所有者とパーミッションを適切に設定すること.
$ sudo -s # cd /home/sugiyama # mkdir .ssh # chmod 700 .ssh/ (パーミッション変更) # chown sugiyama.sugiyama .ssh/ (所有者・所有グループ変更) # ls -ld .ssh/ (確認) drwx------ 2 sugiyama sugiyama 4096 11月 1 00:23 .ssh/ # vi .ssh/authorized_keys wbt 上に置かれている教員の公開鍵をコピペする. # chmod 600 .ssh/authorized_keys # chown sugiyama.sugiyama .ssh/authorized_keys # ls -l .ssh/authorized_keys -rw------- 1 sugiyama sugiyama 394 12月 4 10:09 .ssh/authorized_keys
教員がパスワードなしで sudo -s できるための設定.
教員が管理のために VM で管理者権限を使えるようにする. 以下のように /etc/sudoers.d 以下にファイルを置き, その中で "NOPASSWD: ALL" としておくと, パスワードなしで sudo -s ができるようになる.
# vi /etc/sudoers.d/010_sugiyama sugiyama ALL=(ALL) NOPASSWD: ALL