ユーザー アカウントの管理

はじめに

第30章はじめに

このビデオでは、この章で説明するトピックの概要を簡単に説明しています。


学習目標
この章の終わりまでに、次のことができるようになります。

個々のユーザー アカウントの目的を説明し、その主な属性をリストできます。
新しいユーザー アカウントを作成し、既存のアカウント プロパティを変更し、アカウントを削除またはロックできます。
ユーザーのパスワードの設定、暗号化、保存の方法、およびセキュリティの目的で時間が経過したパスワードの変更を要求する方法を理解できます。
制限付きシェルと制限付きアカウントの仕組みを説明できます。
rootアカウントの役割と、それをいつ使用するかを理解できます。
Secure Shell（ssh）を使用して、ログインとコマンドを削除できます。


ユーザー アカウントの管理

ユーザー アカウント
Linuxシステムでは、複数人で共有して同時にシステムを利用することができるマルチ ユーザー環境を提供します。

個別のユーザー アカウントを持つ目的は次のとおりです。

各ユーザーに、個別の個人用プライベート領域を提供します
特定の目的のためのユーザー アカウントを作成します
ユーザー間の特権を区別します。

特別なユーザー アカウントの1つとして、システムで何でもできるrootユーザーがあります。被害の大きい間違いが起きることを避けるため、さらにセキュリティ上の理由から、rootアカウントは必要がある場合にだけに限って使用するようにしてください。

一般ユーザーのアカウントは、システムで作業する人向けです。root以外のユーザーがプロセスを実行できるようにする目的で、いくつかのユーザー アカウント（daemonアカウントなど）が存在します。

システム上のユーザーのサブセットが、共通の目的に従ってファイルや特権などを共有できるグループ管理については、次の章で紹介します。


ユーザー アカウントの属性
 /etc/passwdファイルには、システムの各ユーザーの基本的なアカウント属性が1行1ユーザーで記述されています。（パスワードと、このファイルについては後で説明します）。例えば、

....
beav:x:1000:1000:Theodore Cleaver:/home/beav:/bin/bash
warden:x:1001:1001:Ward Cleaver:/home/warden:/bin/bash
dobie:x:1002:1002:Dobie Gillis:/home/dobie:/bin/bash
....

クリックして各カードを反転し、ユーザー アカウントの7つの属性について学習しましょう。

ユーザー名
各ユーザーに割り当てられた一意の名前。

ユーザーのパスワード
各ユーザーに割り当てられたパスワード。

ユーザー識別番号（UID）
ユーザー アカウントに割り当てられた一意の番号。UIDは、ユーザーの特権の決定やアクティビティの追跡など、さまざまな目的でシステムによって使用されます。

グループ識別番号（GID）
ユーザーのグループが、プライマリ グループ、プリンシパル グループ、またはデフォルト グループのいずれであるかを示します。

コメントまたはGECOS情報
連絡先情報（氏名、電子メール、オフィス、連絡先番号）のために使用されるコメント フィールドです。（GECOSの意味について意識する必要はありません。これは非常に古い用語です。）

ホーム ディレクトリ
ほとんどのユーザーにおいて、そのユーザーの実行領域を提供する一意のディレクトリです。通常、このディレクトリはユーザーが所有します。rootユーザー以外はシステム上の /home の下にあります。

ログイン シェル
通常、これは/bin/bashや/bin/cshなどのシェル プログラムです。ただし、特別な場合には、代替プログラムがここで参照される場合があります。一般に、本フィールドには任意の実行可能ファイルを指定できます。


useraddを使用したユーザー アカウントの作成
以下のコマンドを実行します。

$ sudo useradd dexter

これは、ユーザーIDとグループID、ホーム ディレクトリ、シェルの選択を割り当てるデフォルトのアルゴリズムを使用して、ユーザーdexterのアカウントを作成します。

具体的には、上記のuseraddコマンドにより、次の手順が実行されます。

デフォルトで、UID_MIN（/etc/login.defsで指定）よりも大きい次の利用可能なUIDが、dexterのUIDとして割り当てられます。
GID=UIDを持つdexterというグループも作成され、dexterのプライマリ グループとして割り当てられます。
ホーム ディレクトリ/home/dexterが作成され、dexterが所有者となります。
dexterのログイン シェルは /bin/bashになります。
/etc/skelの内容が/home/dexterにコピーされます。デフォルトでは、/etc/skelにはbashとX Windowシステムの起動ファイルが含まれています。
　　dexterのエントリの/etc/shadowファイルのパスワード フィールドには !! もしくは ! のどちらかが設定されるため、管理者はアカウントを使用できるようにパスワードを割り当てる必要があります。

次のように、useraddのオプションを使用すると、デフォルトを簡単に上書きできます。

$ sudo useradd -s /bin/csh -m -k /etc/skel -c "Bullwinkle J Moose" bmoose

これは、ユーザー属性の一部にデフォルト以外の明示的な値を与える場合に使います。


ユーザー アカウントの変更と削除
rootユーザーは、userdelを使用してユーザー アカウントを削除できます。

$ sudo userdel morgan

ユーザーmorganのすべての情報が、/etc/passwd、/etc/shadow、/etc/groupから消去されます。

これによりアカウントは削除されますが、後でアカウントが再設定される可能性に備えて、ホーム ディレクトリ（通常は/home/morgan）は削除されません。-rオプションをuserdelで指定すると、ホーム ディレクトリも消去されます。ただし、削除されたユーザーが所有するシステム上の他のすべてのファイルは残ったままです。

usermodは、グループ メンバシップ、ホーム ディレクトリ、ログイン名、パスワード、デフォルト シェル、ユーザーID など、ユーザー アカウントの属性を変更するために使用できます。たとえば、

$ sudo usermod -L dexter

このコマンドはdexterのアカウントをロックするので、このユーザー名ではログインできなくなります。

使い方はとても簡単です。usermodは、必要に応じて/etcディレクトリ内のファイルの変更を行うことに注意してください。

usermodの使用例


ロックされたアカウント
Linuxには、ロックされたシステム アカウント（bin、daemon、sysなど）があります。つまり、プログラムは実行しますが、システムにログインできず、有効なパスワードもありません。たとえば、/etc/passwdには次のようなエントリがあります。

bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

ロックされたユーザーがシステムにログインしようとすると、nologinシェルは次を返します。

このアカウントは現在利用できません。

または/etc/nologin.txtに保存されているメッセージを、それが何であれ表示します。

このようなロックされたアカウントは、システム サービスまたはアプリケーションによって特別な目的で作成されます。 nologinシェルを使用してユーザーの/etc/passwdを見ると、システム上にどのユーザーがいるかを確認できます。

次のように、特定のユーザーのアカウントをロックすることもできます。

$ sudo usermod -L dexter

これにより、これらのアカウントはシステムに残りますが、ログインできなくなります。ロック解除は、-Uオプションを使用して実行できます。

慣例として、ユーザーが組織を離れるとき、または長期の休職中は、ユーザーのアカウントをロックしますので、そのような時に使います。

アカウントをロックするもう1つの方法は、chageを使用して、アカウントの有効期限を過去の日付に変更することです。

$ sudo chage -E 2014-09-11 morgan

指定する日付が過去の日付の場合、有効期限は無効になります。


ユーザーIDと/etc/passwd
システム上の各ユーザーに対して、/etc/passwdの1レコード（1行）に以下のような情報が含まれていることを既に見てきました。

beav:x:1000:1000:Theodore Cleaver:/home/beav:/bin/bash
rsquirrel:x:1001:1001:Rocket J Squirrel:/home/rsquirrel:/bin/bash

そして、そのフィールドについてもすでに説明しました。各レコードは、コロン（:）で区切られたいくつかのフィールドで構成されています。

username - ユーザーの一意の名前
password - ハッシュされたパスワード（/etc/shadowが使用されていない場合）またはプレースホルダ（/etc/shadowが使用されている場合は「x」）
UID - ユーザー識別番号
GID - ユーザーのプライマリ グループ識別番号
comment - コメント領域、通常はユーザーの本名
home - ユーザーのホーム ディレクトリのディレクトリ パス名
shell - ログイン時に呼び出すシェルの絶対パス名

/etc/shadowを使用しない場合、パスワード フィールドにはハッシュされたパスワードが設定されます。使用する場合、プレースホルダ（「x」）が設定されます。

ほとんどのLinuxディストリビューションでは、1000未満の値のユーザーIDを持つアカウントは特別であり、システムに属するとみなされます。通常のユーザー アカウントは1000から始まります。実際の値は（1000という実値ではなく）UID_MINとして定義され、/etc/login.defs内に定義されます。

歴史的にみると、Red Hatから派生したディストリビューションは1000ではなくUID_MIN=500を使用していましたが、RHEL 7以降、より一般的な値である1000が採用されました。

useraddの使用時にユーザーIDが指定されていない場合、システムはUID_MINから始まり1ずつ増やしながらUIDに割り当てます。

さらに、各ユーザーは、デフォルトでUIDと同じ番号であるプライマリ グループIDを取得します。これらは、ユーザー プライベート グループ（UPG）と呼ばれることもあります。

/etc/passwd、/etc/group、または/etc/shadowを直接編集することは避けてください。usermodなどの適切なユーティリティを使用してください。


/etc/shadowを使用する理由
/etc/shadowを使用すると、ユーザーごとにパスワードの有効期限の設定・確認（後で説明します）ができます。同時に、ハッシュされたパスワードのセキュリティを強化することもできます。

/etc/passwdのデフォルトのパーミッションは644（-rw-r--r--）で、誰でもこのファイルを読むことができます。システム プログラムとユーザー アプリケーションは、実行のためにこのファイルの情報を読み取る必要があるため、残念ながらこのパーミッションにする必要があります。これらのシステム プログラムを実行するのは、rootユーザーではないからです。ただし、この ファイルを変更できるのはrootのみです。

しかし、懸念されるのは、ハッシュされたパスワード自体です。それらが/etc/passwdにある場合、誰でもハッシュ化されたパスワードのコピーを作成できます。CrackやJohn the Ripperなどのユーティリティを使用すれば、ハッシュ化されたパスワードから元のテキスト パスワードを推測することができます。これはセキュリティ上のリスクとなります！

/etc/shadowのパーミッションの設定は400（-r --------）です。つまり、このファイルにアクセスできるのはrootのみです。これにより、誰かがハッシュされたパスワードを収集することは難しくなります。

説得力のある正当な理由がない限り、/etc/shadowファイルを使用すべきです。


etc/shadow
ファイル/etc/shadowには、次のようにユーザーごとに1つのレコード（1行）があります。

daemon:*:16141:0:99999:7:::
.....
beav:$6$iCZyCnBJH9rmq7P.$RYNm10Jg3wrhAtUnahBZ/mTMg.RzQE6iBXyqaXHvxxbKTYqj.d 9wpoQFuRp7fPEE3hMK3W2gcIYhiXa9MIA9w1:16316:0:99999:7:::

コロンで区切られたフィールドは次のとおりです。

username：一意のユーザー名
password：ハッシュ化された（sha512）パスワードの値
lastchange：パスワードが最後に変更された、1970年1月1日からの経過日数
mindays：パスワードを変更できるまでの最小日数
maxdays：パスワードを変更するまでの最大日数
warn：パスワードの有効期限が切れる前の、ユーザーに警告するまでの日数
grace：パスワードが期限切れになってからアカウントが無効になるまでの日数
expire：アカウントが無効になる／無効になるであろう日付
reserved：予約フィールド

各レコードのユーザー名は、/etc/passwdで見つかったユーザー名と完全に一致する必要があり、同じ順序で表示される必要があります。

すべての日付は、1970年1月1日（エポック日付）からの日数として保存されます。

パスワード ハッシュは、文字列「$6$」の後に8文字のソルト値が続き、その後に$と88文字（sha512）のパスワード ハッシュが続きます。


パスワード管理
パスワードはpasswdコマンドで変更できます。一般のユーザーは自分のパスワードのみを変更できますが、rootはどのユーザーのパスワードも変更できます。パスワードを入力しても表示されません。画面へのエコー バックが抑制されているためです。

デフォルトでは、選択されたパスワードがpam_pwquality.soでポリシーに合っているか検査され、より良いパスワードの選択ができるようになっています。

一般ユーザーが自分のパスワードを変更する場合は、以下のように行います。

$ passwd
Changing password for clyde
(current) UNIX password: <clyde's password>
New UNIX password: <clyde's-new-password>
Retype new UNIX password: <clyde's-new-password>
passwd: all authentication tokens updated successfully

また、rootが一般ユーザーのパスワードを変更する場合、rootは現在のパスワードの入力を求められないことに留意してください。

$ sudo passwd kevin
New UNIX password: <kevin's-new-password>
Retype new UNIX password: <kevin's-new-password>
passwd: all authentication tokens updated successfully

💡
一般ユーザーは、短すぎるパスワードや辞書の単語に基づいたパスワードなど、不適切なパスワードを設定することは許されません。ただし、rootには許可されています。


パスワードの有効期限の設定・確認（chage）
一般的に、パスワードを定期的に変更することが重要であると考えられています。これにより、破られたパスワードを侵入者が使う時間を制限できます。また、これは未使用のアカウントをロックすることにも使用できます。しかし、欠点もあります。ユーザーがこのポリシーを煩わしく思い、絶えず変化するパスワードを忘れないように書き留めてしまい、それによって盗みやすくなることです。

パスワードを管理するユーティリティはchageです。

chage [-m mindays] [-M maxdays] [-d lastday] [-I inactive] [-E expiredate] [-W warndays] user

例えば以下のように使います。

$ sudo chage -l dexter
$ sudo chage -m 14 -M 30 kevlin
$ sudo chage -E 2012-4-1 morgan
$ sudo chage -d 0 clyde

rootユーザーのみがchageを使用できます。ただし例外が1つあります。このページのスクリーンショットのように、chage -lを実行すれば、すべてのユーザーが有効期限を確認できます。

ユーザーに、次回ログイン時にパスワードを強制的に変更させるには、次のようにします。

$ sudo chage -d 0 USERNAME

chageの使用例


制限付きシェル
Linuxでは、制限付きシェルを使用できます。これは次のように起動できます。

$ bash -r

一部のディストリビューションでは、rbashコマンドを同じ効果をもたらすように定義しています。

制限されたシェルは、標準のシェルよりも厳密に制御された環境で機能しますが、それ以外は普通に機能します。特に制限されるのは以下です。

ユーザーがcdを使用してディレクトリを変更できないようにします。
ユーザーが環境変数SHELL、ENV、PATHを再定義できないようにします。
/で始まる絶対パスまたは実行可能なコマンド名をユーザーが指定することを許可しません。
ユーザーが入力や出力をリダイレクトできないようにします。

💡
他の制限もあります。それらをすべて表示したい場合は、man bashを実行して、RESTRICTED SHELLを検索してください。

制限付きシェルは$HOME/.bash_profileを制限なしで実行するので、ユーザーは/homeディレクトリに対する書き込み権限も実行権限も持つ必要はありません。

/bin/rbashという名前で/bin/bashへのシンボリックリンクを作成し、/etc/passwdで使用することにより、制限付きアカウントを有効にすることもできます。制限付きアカウントについては、次で説明します。

🚩
rbashは安全ではありません！ 制限を回避することは実際には非常に簡単であるため、SELinuxの使用などの最新の技術の方がはるかに堅牢です。ここで示す方法に遭遇した時に備えて、説明します。

制限付きシェルの使用を無効にする方法の例があります。そのハッカー ガイドとして、「Escaping Restricted Shell rbash」と「Linux Restricted Shell Bypass」があります。

制限付きシェルを使用すると、誤った安心感を与える可能性があります。


制限付きアカウント
ユーザーにアクセスを許可する必要がある場合でも、その範囲を限定すべき場合があります。その時には、制限付きユーザー アカウントを設定すると役立ちます。制限付きアカウントは、次のことを行います。

制限付きシェルを使用します。
利用可能なシステム プログラムとユーザー アプリケーションを制限します。
システム リソースを制限します。
アクセス時間を制限します。
アクセス場所を制限します。

コマンド ラインまたはスクリプトから/bin/bash -rを使用して、制限付きシェルを呼び出すことができます。ただし、/etc/passwdファイルのシェル フィールドには/bin/bash -rと記述できない場合があります。この問題を回避する簡単な方法は、次のいずれかを実行することです。

$ cd /bin ; sudo ln -s bash rbash
$ cd /bin ; sudo ln bash rbash
$ cd /bin ; sudo cp bash rbash

そして、/bin/rbash を /etc/passwd のシェルとして使用します。

このようなアカウントを設定するときは、システム ディレクトリを誤ってPATH環境変数に追加しないでください。追加すると、制限されたユーザーが、制限のないシェルなど他のシステム プログラムを実行できてしまいます。

制限付き（Restricted）アカウントは、 limitedアカウントとも呼ばれます。


rootアカウント
rootアカウントは、絶対に必要な場合にのみ管理目的で使用し、通常のアカウントとしては使用しないでください。このアカウントでミスすると、整合性と安定性の両方にとって、そしてシステム セキュリティの面でも、大きな犠牲を払うことになる可能性があります。

セキュリティ上の理由から、デフォルトではネットワークを介したrootログインは禁止されています。ただし、sshを使えばSecure Shellログインが許可されます。sshは/etc/ssh/sshd_configとPAM（Pluggable Authentication Modules）で設定されます。PAMは、pam_securetty.soモジュールと関連する/etc/securettyファイルを使います。PAMについては後で説明します。rootログインは、/etc/securettyにリストされているデバイスからのみ許されます。

通常、すべてのrootアクセスはsuまたはsudoを使って行うことをお勧めします（sudoを使うとすべてのrootアクセスを追跡調査できます）。一部のディストリビューション（Ubuntuなど）は、デフォルトでは、rootアカウントで直接ログインすることが禁止されています。

PAMを使用して、suでrootになることができるユーザーを制限することもできます。また、rootとして実行されたすべてのコマンドのログを記録するように、auditdを設定することも重要です。


SSH
同じユーザー名または別のユーザー名を使用して、ネットワーク経由でリモート システムにログインする必要がよくあります。または、リモート マシンとの間でファイルを転送する必要があります。いずれの場合でも、傍受されない安全な方法でこれを行う必要があります。

SSH（Secure SHell）はこの目的を実現するためのものです。SSHは強力なアルゴリズムに基づく暗号化を使用します。適切なsshパッケージがシステムにインストールされているのであれば、sshを使うためにこれ以上セットアップする必要はありません。

使い方の例を示します。リモート システムにサイン オンする場合：

$ whoami
student

$ ssh farflung.com
student@farflung.com's password: (type here)$

farflung.comに学生アカウントがあると仮定しています。別のユーザーとしてログインする場合：

$ ssh root@farflung.com
root@farflung.com's password: (type here)

または

$ ssh -l root farflung.com
root@farflung.com's password: (type here)

あるシステムから別のシステムにファイルをコピーする場合：

$ scp file.txt farflung.com:/tmp
$ scp file.tex student@farflung.com/home/student
$ scp -r some_dir farflung.com:/tmp/some_dir

（スペースの省略のため、パスワード要求のやり取りは省略しました。この後で説明しますが、暗号化キーを使用して適切に設定した場合、パスワードを入力する必要はありません。）

複数のマシンで同時にコマンドを実行する場合：

$for machines in node1 node2 node3
do
      (ssh $machines some_command &)
done


SSH設定ファイル
SSHをいろいろ設定して、その使用をさらに進化させることができます。特に、パスワードなしでログインすることができます。ユーザー固有の設定ファイルは、非表示の.sshディレクトリの各ユーザーのホーム ディレクトリの下に作成されます。

$ ls -l ~/.ssh
total 20
-rw-r--r-- 1 hilda hilda 1172 Sep 27 2014 authorized_keys
-rw------- 1 hilda hilda 207 Aug 9 2011 config
-rw------- 1 hilda hilda 1675 Dec 8 2010 id_rsa
-rw-r--r-- 1 hilda hilda 393 Dec 8 2010 id_rsa.pub
-rw-r--r-- 1 hilda hilda 1980 Apr 28 07:36 known_hosts

このファイルには次の情報が含まれます。

id_rsa：ユーザーの秘密暗号化キー
id_rsa.pub：ユーザーの公開暗号化キー
authorized_keys：ログインが許可されている公開鍵のリスト
known_hosts：過去にログインが許可されたホストのリスト
config：さまざまなオプションを指定するための設定ファイル

まず、ユーザーはssh-keygenを使用して秘密および公開暗号化キーを生成する必要があります。

$ ssh-keygen

Generating public/private rsa key pair.
Enter file in which to save the key (/home/hilda/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hilda/.ssh/id_rsa
Your public key has been saved in /home/hilda/.ssh/id_rsa.pub
The key fingerprint is:76:da:d3:51:1e:c8:2d:3b:34:28:46:b2:2b:db:d1:c4 hilda@c7
The key's randomart image is:
+--[ RSA 2048]----+
|      . .        |
|       =   o o   |
|      . E . * +  |
|       = . . * . |
|    . o S . + .  |
|     + o + . o   |
|    . . . o .    |
|           .     |
|                 |
+-----------------+

これにより、公開キー~/.ssh/id_rsa.pubも生成されます。

秘密鍵は誰とも共有してはいけません！

公開鍵は、パスワードなしのアクセスの許可をどのマシンにも与えることができます。他のユーザーがあなたのマシンにアカウントを持っていて、彼らのアカウントにパスワードなしでアクセスを許可したい場合、彼らのすべての公開鍵をauthorized_keysファイルに追加する必要があります。

known_hostsファイルは、sshアクセスがあるたびに徐々に蓄積されます。システムは、sshを介してログインしようとしているユーザーの変化を検出すると、警告を表示し、アクセスを拒否します。authorized_keysファイルには、ユーザーとマシンに関する情報が含まれていることに留意してください。

$ cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQ
...0000aSd...hilda@sbc

known_hostsにはコンピュータ ノードに関する情報のみが含まれます。

$ cat known_hosts
192.30.252.129 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSw
....BK6Tb...==

man ssh_configページを見れば、ssh設定ファイルに入力できるオプションの種類がわかります。


リモートからのグラフィカル ログイン
グラフィカル デスクトップからリモート マシンにログインします。大抵の場合、VNC（Virtual Network Computing）を使用してシステムに接続します。一般的な実装はtigervncです。

これをテストするには、まず、vncパッケージがインストールされていることを確認してください。

$ which vncserver vncviewer

/usr/bin/vncserver
/usr/bin/vncviewer

これらのプログラムが見つからない場合は、次のようにしてインストールする必要があります。

$ sudo [dnf|yum|zypper|apt-get] install tigervnc*

適切なパッケージ管理システムを利用してください。（パッケージ名はLinuxディストリビューションによってまちまちです。そのため個々では特定の名前をあげていません、結果的に必要以上のものをインストールすることになるかもしれませんが、パッケーのの数は多くはありません）

以下により、一般のユーザーとしてサーバーを起動します。

$ vncserver

テストします。

$ vncviewer localhost:2

ただし、現在実行しているものやマシンの構成方法によっては、1、3、4 ...など、2以外の数字を指定する必要があるかもしれません。

リモート マシンから表示するには、少し変える必要があります。

$ vncviewer -via student@some_machine localhost:2

「color profile」のために認証する必要があるという奇妙なメッセージが表示され、パスワードが機能しない場合は、次のようにサーバー マシンのcolordデーモンを強制終了する必要があります。

$ sudo systemctl stop colord

これはバグであり（機能ではありません）、一部のディストリビューションおよび一部のシステムでのみ、よくわからない理由で表示されます。

デモ：新しいユーザー アカウントの作成、変更、削除

このビデオでは、Ubuntu 17.04システムで新しいユーザー アカウントを作成、変更、削除する方法を示します。


演習

課題 30.1: ユーザー アカウントの処理

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

【【これ以降は橋本さんの訳を挿入】】

1.  Examine /etc/passwd and /etc/shadow,  comparing the fields in each file,  especially for the normal user account.
What is the same and what is different?

2.  Create auser1account usinguseradd.

3.  Login asuser1usingssh. You can just do this with:
$ ssh user1@localhost
It should fail because you need a password foruser1; it was never established.

4.  Set the password foruser1touser1pwand then try to login again asuser1.

5.  Look at the new records which were created in the /etc/passwd, /etc/group and the /etc/shadow files

.6.  Look at the /etc/default/useradd file and see what the current defaults are set to. Also look at the /etc/login.defs file.

7.  Create a user account for user2 which will use the Korn shell (ksh) as its default shell.  (if you do not have /bin/ksh install it or use the Cshell at /bin/csh.) Set the password to user2pw.

8.  Look at /etc/shadow. What is the current expiration date for the user1 account?

9.  Use chag eto set the account expiration date of user1 to December 1, 2013.
Look at /etc/shadow to see what the new expiration date is.

10.  Use usermod to lock the user1 account.
Look at /etc/shadow and see what has changed about user1’s password.   Reset the password to userp1 on the account to complete this exercise.

Solution 30.1

1.$ sudo grep student /etc/passwd /etc/shadow
/etc/passwd:student:x:1000:100:LF Student:/home/student:/bin/bash
/etc/shadow:student:$6$jtoFVPICHhba$iGFFUU8ctrtOGoistJ4/30DrNLi1FS66qnn0VbS6Mvm
luKI08SgbzT5.IcOHo5j/SOdCagZmF2RgzTvzLb11H0:16028:0:99999:7:::
(You can use any normal user name in the place ofstudent.) About the only thing that matches is the user name field.

2.$ sudo useradd user1

3.$ ssh user1@localhost
user1@localhost's password:
Note you may have to first start up the sshd service as in:
$ sudo service sshd restart
または
$ sudo systemctl restart sshd.service

4.$ sudo passwd user1
Changing password for user user1.
New password:

5.$ sudo grep user1 /etc/passwd /etc/shadow
/etc/passwd:user1:x:1001:100::/home/user1:/bin/bash
/etc/shadow:user1:$6$OBE1mPMw$CIc7urbQ9ZSnyiniVOeJxKqLFu8fz4whfEexVem2
TFpucuwRN1CCHZ19XGhj4qVujslRIS.P4aCXd/y1U4utv.:16372:0:99999:7:::

6.  On either RHEL or openSUSE systems for example:
$ cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
$ cat /etc/login.defs
....
We don’t reproduce the second file as it is rather longer, but examine it on your system.

7.$ sudo useradd -s /bin/ksh user2
$ sudo passwd user2
Changing password for user user2.
New password:

8.$ sudo grep user1 /etc/shadow
user1:$6$OBE1mPMw$CIc7urbQ9ZSnyiniVOeJxKqLFu8fz4whfEexVem2TFpucuwRN1CCHZ
19XGhj4qVujslRIS.P4aCXd/y1U4utv.:16372:0:99999:7:::
There should be no expiration date.

9.$ sudo chage -E 2013-12-1 user1
$ sudo grep user1 /etc/shadow
user1:$6$OBE1mPMw$CIc7urbQ9ZSnyiniVOeJxKqLFu8fz4whfEexVem2TFpucuwRN1CCHZ
19XGhj4qVujslRIS.P4aCXd/y1U4utv.:16372:0:99999:7::16040:

10.$ sudo usermod -L user1
$ sudo passwd user1


課題 30.2: 制限付きシェルとアカウント

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

Exercise 30.2: Restricted Shells and Accounts

1.  Start a restricted still in your current window with:
$ bash -r
Try elementary options such as resetting the path or changing directories.
2.  Set up a restricted account and verify its restricted nature, then clean up.

Please Note
。On RedHat-based distributions, the above correct behaviour is observed.
•  As noted earlier, the use of restricted shells is deprecated as they are really not secure and there are better methods available. However, you may run into them which is why we discuss this facility.

Solution 30.2

1.c7:/tmp>rbash -r
c7:/tmp>cd $HOME
rbash: cd: restricted

c7:/tmp>PATH=$PATH:/tmp
rbash: PATH: readonly variable

c7:/tmp>exit
exit

2.c7:/home/coop>sudo ln /bin/bash /bin/rbash
c7:/home/coop>sudo useradd -s /bin/rbash fool
c7:/home/coop>sudo passwd fool

Changing password for user fool.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.

c7:/home/coop>sudo su - fool

Last failed login: Tue Oct 25 14:15:54 CDT 2016 on pts/1
There was 1 failed login attempt since the last successful login.
Attempting to create directory /home/fool/perl5

[fool@c7  ̃]$ cd /tmp
-rbash: cd: restricted
[fool@c7  ̃]$ PATH=$PATH:/tmp
-rbash: PATH: readonly variable


知識チェック

「第30章 - ユーザー アカウントの管理」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。

クイズ開始

問題 30.1
ユーザーごとにパスワードの有効期限の設定・確認が可能なシステムの場合、ユーザー アカウントをロックする有効な方法は次のうちどれですか？ 当てはまるものをすべて選択してください。

A. システムからユーザーのファイルをすべて削除します
B. ユーザーのパスワードを、管理者だけが知っている暗号に変更します
C. エディタを使用して、ユーザーIDの行を/etc/passwdから削除します
D. chageツールを使用してパスワードを期限切れにします
E. passwdツールを使用してパスワードをロックします

問題 30.2
どのコマンドが、ユーザーthaliaとしてシステムmenningerにログインできますか？ 当てはまるものをすべて選択してください。

A. ssh -l thalia menninger
B. ssh thalia meninger
C. ssh thalia@menninger
D. ssh -l thalia@meninger





