※この記事は専門学校の講義用に作成されたものです
WindowsやmacOSと同様にLinuxでも複数のユーザーで利用することができます。今回は新しくユーザーを作成し切り替えるところまでを学習します。
これまでのお話
前回からの続きになります。各ページの内容を理解した上でご覧ください。
ユーザーの種類
Linuxのユーザーは大きく「スーパーユーザー」「一般ユーザー」の2種類に分けられます。
スーパーユーザー
管理者ユーザーのことをスーパーユーザー、またはアカウント名からrootユーザーなどと呼びます。基本的にスーパーユーザーはOS上に1人だけです。
スーパーユーザーは言わばOS上では神様のような存在で例えば以下のようなことを行うことができます。
- OSそのものの設定を自由に変更
- アプリケーションのインストール、アンインストール
- 一般ユーザーを作成、変更、削除
- すべてのファイルやディレクトリの閲覧、操作
逆に言えば何でも出来てしまう強力な力を持ったユーザーです。もしパスワードが悪意のある人に漏れてしまうと大変なことになってしまうため、厳重に管理を行う必要があります。
一般ユーザー
できることを絞ったユーザーを一般ユーザーと呼びます。一般ユーザーは必要な数だけ作成することができます。
一般ユーザーで行えるのは次のような操作です。OS全体に影響するような操作は行うことができません。
- OSへログイン
- インストール済みアプリケーションの利用
- 自分自身の設定変更
- 許可された、または自分で作成したファイルやディレクトリの閲覧や操作
他のユーザーが作成したファイルやディレクトリは、許可が無い場合は操作することが出来ない場合もあります。
人間である以上は必ずミスをします。スーパーユーザーでうっかり消してはならないファイルを消してしまった、間違えて設定を変更してしまった…といった類の事故は後を絶ちません。もちろんうっかりミスは無くすよう努力すべきですが、そもそも間違えた時に被害を最小限にするためにも、日常的な作業は一般ユーザーで行うことが推奨されます。
スーパーユーザー
スーパーユーザーになる
すでに一般ユーザーでログインしている場合には次のコマンドでスーパーユーザーになれます。ただしスーパーユーザーのパスワードを知っていることが条件になります。スーパーユーザーになるとこれまで$
だった箇所が#
に変更になり、neecがrootになっているのがわかりますね。
[neec@localhost ~]$ su - [root@localhost ~]#
現在のカレントディレクトリを表示してみましょう。rootは/home
の下ではなく/root
がホームディレクトリになります。
[root@localhost ~]# pwd /root
OSの設定を変更してみる
特定の時間になったら処理を行う、ある時間を堺にしてデータを切り替えるなどOSにおける時間は非常に重要な情報です。これを変更してみましょう。(インターネットに接続されていればしばらくすると自動的に正しい時間に戻ります)
[root@localhost ~]# date -s "12/02 12:00 2020"
なお一般ユーザーで同じコマンドを実行しようとしても怒られてしまいます。
[neec@localhost ~]$ date -s "12/02 12:00 2020" date: 日時を設定できません: 許可されていない操作です 2020年 12月 2日 水曜日 12:00:00 JST
ユーザーの新規作成
次のコマンドでユーザーを新しく作成することができます。「bob」の部分がユーザー名になります。ここは半角英数字で自由に指定することができます。
[root@localhost ~]# useradd bob
先ほど作成したユーザーのホームディレクトリも作成されていますね。
[root@localhost ~]# ls /home bob neec
ユーザーの作成について詳細が知りたい場合は以下のページを参照してください。 blog.katsubemakito.net
パスワードを設定する
作成した直後はパスワードが空ですので、もしパスワードも設定する場合にはpasswd
コマンドで設定することができます。
[root@localhost ~]# passwd bob
パスワードの作成について詳細が知りたい場合は以下のページを参照してください。 blog.katsubemakito.net
ユーザーの削除
作成済みのユーザーを削除するにはuserdel
コマンドを実行します。-r
を付けて実行するとホームディレクトリ毎削除することができます。
[root@localhost ~]# userdel -r bob
ユーザーの削除について詳細が知りたい場合は以下のページを参照してください。 blog.katsubemakito.net
一般ユーザーに戻る
exit
コマンドを実行するともとの一般ユーザーに戻れます。
[root@localhost ~]# exit [neec@localhost ~]$
一般ユーザー
ユーザーの切り替え
su
コマンドはスーパーユーザーになるだけではなく、ユーザーの切り替えにも使えます。ただし変更したいユーザーのパスワードをあらかじめ知っている必要があります。
[neec@localhost ~]$ su - bob パスワード: 最終ログイン: 2020/11/01 (日) 20:50:43 JST日時 pts/1 [bob@localhost ~]$
もとのユーザーに戻るためにはexit
コマンドを実行します。
[bob@localhost ~]$ exit [neec@localhost ~]$
他人のホームディレクトリは覗けない
ホームディレクトリは通常は他のユーザーから覗けません。覗こうとすると許可が無いと怒られてしまいます。
[neec@localhost ~]$ ls /home bob neec [neec@localhost ~]$ ls /home/bob ls: ディレクトリ /home/bob を開くことが出来ません: 許可がありません
ファイルやディレクトリにはすべて所有者が設定されています。ls -l /home
コマンドを実行してみましょう。一番右側にあるのがディレクトリ名です。その左側にあるのが所有者にあたります。
[neec@localhost ~]$ ls -l /home 合計 4 drwx------ 3 bob bob 99 11月 1 20:53 bob drwx------. 23 neec neec 4096 11月 1 20:55 neec
他人のファイルは許可が無いとさわれない
一般ユーザー同士では、他人のファイルを自由に変更できなくなっています。実験してみましょう。
適当なファイルを作成し/var/tmp
の下に置きます。
[neec@localhost ~]$ cp hello.txt /var/tmp
他のユーザーになり先ほどのファイルを書き換えようとしてください。すると許可がないと怒られてしまいます。
[neec@localhost ~]$ su - bob パスワード: 最終ログイン: 2020/11/01 (日) 20:50:43 JST日時 pts/1 [bob@localhost ~]$ date > /var/tmp/hello.txt -bash: /var/tmp/hello.txt: 許可がありません
このように一般ユーザー同士のファイルやディレクトリはうっかりミスで削除したり、書き換えたりといった事故が置きないような安全装置が付いています。
OSを破壊する禁断のコマンドを実行する
これからOS上のすべてのファイルやを削除するコマンドを実行します。rootでうっかりミスをするとどうなるか体感してみましょう。
VirtualBoxでスナップショットを取る
全部消えてしまうと復旧が大変なのでVirtualBoxの機能を使ってバックアップを取っておきます。
VirtualBoxのメニューから「仮想マシン」→「スナップショット」とたどります。
保存内容を聞いてきますので「OK」ボタンをクリックししばらく待ちます。必要があれば自分で後からわかるように名前や説明文を入力します。
これで準備完了です。
ファイルをすべて削除する
では先ほどと同様の手順でスーパーユーザーになります。
[neec@localhost ~]$ su - [root@localhost ~]#
では、覚悟が決まったら次のコマンドを実行します。
[root@localhost ~]# rm -rf --no-preserve-root /
無事に?OSが異常終了したでしょうか。
VirtualBoxで復元する
ではいったんCentOSは強制終了し、次の手順で復旧します。
「仮想マシン」→「ツール」→「スナップショット」とたどります。
「CentOS7」を選択し、復元したいスナップショットを選びます。上部にある「復元」ボタンを押せばあっという間に元の状態に戻ってくれます。「現在のマシンの状態のスナップショットを作成」は今回は不要なのでチェックボックスは外しておいてください。
このように事前にスナップショットを作成すると簡単に元に戻せるので、OSに大きな変更を加える時などは必ずスナップショットを取っておきましょう。