2024 年度 OSS リテラシ 3 : Debian の基本セットアップ

はじめに

本演習では仮想化サーバ (Linux + KVM) 上で立ち上げた Linux の仮想マシン(vm)を 1 人 1 台使ってもらうことにする.仮想マシン(vm) の IP は講義中に連絡する.

なお,標準的な Linux コマンドの解説は, 例えば LPI-Japan「Linux 標準教科書」 を参照のこと.

仮想マシンの基本設定

自分の担当する仮想マシンに SSH で接続してもらいたい.演習室の Windows からは,putty や Windows Terminal で仮想マシンにアクセスできる.

一般ユーザから管理者への切り替え

putty などから仮想マシンにアクセスするのは一般ユーザ (学生番号) 権限となるが, 設定作業をする場合は管理者権限に移行することが必要となる.

  • 管理者 (root) が 1 人のみで,root のパスワードを把握している場合は,su コマンドを使って一般ユーザから管理者への切り替えができる.
  • 管理者が複数いる場合は,sudo コマンドを使って管理者権限へ切り替える.管理者パスワードを複数人で共有してはいけない.

本演習では,まずは su コマンドで管理者権限への切り替えを行い,その後に sudo コマンドの設定を行いうことにする.sudo コマンドの設定以降は su コマンドを利用せず,sudo を使って管理者権限への切り替えを行うことにする.

$  su

  Password:    <-- root のパスワードを入力. パスワードを入れてもコンソールには何も表示されないことに注意

# 

なお,一般ユーザと管理者ではコマンドプロンプトが異なり,一般ユーザは "$", 管理者は "#" である.

ユーザの追加

adduser コマンドで自分のユーザアカウントを作ることにする.以下の例はアカウント名を hogehoge として作成する例である.hogehoge を適宜自分のユーザ名に読み替えること.

# /sbin/adduser hogehoge

  ユーザ `hogehoge' を追加しています...
  新しいグループ `hogehoge' (1002) を追加しています...
  新しいユーザ `hogehoge' (1002) をグループ `hogehoge' として追加しています...
  ホームディレクトリ `/home/hogehoge' を作成しています...
  `/etc/skel' からファイルをコピーしています...
  hogehoge のユーザ情報を変更中
  新しい値を入力してください。標準設定値を使うならリターンを押してください
      フルネーム []: SUGIYAMA Ko-ichiro
      部屋番号 []: 
      職場電話番号 []: 
      自宅電話番号 []: 
      その他 []: 
  以上で正しいですか? [Y/n] Y    <-- 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 (自分のアカウントに読み替えること) をグループ sudo に加える.

# /sbin/usermod -aG sudo hogehoge

確認として, /etc/group の中身を確認する.

# grep sudo /etc/group

  sudo:x:27:hogehoge,sugiyama

デフォルトユーザのパスワードロック

デフォルトのユーザはもう使わないのでパスワードロックしてログインできなくしておく.

# passwd -l <初期ユーザ名>

  passwd: パスワード期限切れ情報を変更しました

root のパスワードを変更

管理者のパスワードを自分のものに必ず変更しておく.

# passwd root

  新しい パスワード:
  新しい パスワードを再入力してください:
  passwd: パスワードは正しく更新されました

再起動と sudo の確認

# /sbin/reboot

再起動後は, ユーザ hogehoge (自分の学生番号に読み替え) でログインすること.

ログインしなおしたら,管理者権限を使えるか確認する. sudo -s コマンドを実行し,プロンプトが $ から # へ変わることを確認する.

$ whoami

  hogehoge   (現在は hogehoge であることがわかる)

$ sudo -s    (hogehoge から管理者に移行) 

    [sudo] hogehoge のパスワード:      <-- 「自分」のパスワードを入力. 

#                (管理者権限となったのでプロンプトが # に変わる)

# exit     (一般権限に戻るのは exit )

$

パスワードの保管方法の確認

登録されたユーザ情報は, /etc/passwd と /etc/shadow に登録される. /etc/shadow に暗号化されたパスワードが, それ以外の情報は /etc/passwd に 書かれる.

これらのファイルを確認してみよう. grep コマンドを使うことで, 第一引数に 与えた文字列が含まれている行だけを抜き出すことができる.

なお,ユーザ名 hogehoge は自分のアカウント名 (学生番号) に読み替えること.

$ sudo -s 

# less /etc/passwd

  ...(略)...

# grep hogehoge /etc/passwd

  hogehoge:x:1001:1001:SUGIYAMA Ko-ichiro,,,:/home/hogehoge:/bin/bash

# less /etc/shadow

  ...(略)...

# grep hogehoge /etc/shadow

  hogehoge:$6$AAAAAA$XXXXXXXXXXXXXXXXXXXXXXXXX:17439:0:99999:7:::

# less /etc/group

  ...(略)...

# grep hogehoge /etc/group

  hogehoge:x:1001:

/etc/shadow はパスワード情報が含まれているので, 一般ユーザには読めない ファイルパーミッションになっている. /etc/passwd や /etc/group は一般ユー ザでも読める.

# ls -l /etc/passwd /etc/group /etc/shadow

  -rw-r--r-- 1 root root    814 10月 19 09:33 /etc/group
  -rw-r--r-- 1 root root   1718 10月 19 09:34 /etc/passwd
  -rw-r----- 1 root shadow 1097 10月 19 09:33 /etc/shadow