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