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