LFCS — Linux Foundation認定システム管理者
ユーザとグループを作りポリシーを掛ける
目標
実際にユーザーとグループを作成し、パスワードポリシーを設定して、アカウントデータベースの3つのファイルから値を直接読み取って確認します。
なぜ重要なのか
アカウント管理は、LFCSで配点が確実な領域であり、実務では元に戻すのが最も難しい作業でもあります。usermod -Gで追加のオプションを1つ書き漏らすと、ユーザーの補助グループがすべて消え、そのユーザーが管理者だったなら、復旧の経路そのものがなくなります。そのため、このラボは、毎回idとgetentで結果を確認する習慣を作ることに焦点を当てています。パスワードポリシーも同じです。/etc/shadowの有効期限のフィールドは、日付ではなく1970年からの日数なので、値を目で見て「これで合っているか」を判断するには、その規則を知っている必要があります。最後のステップで作る孤立したホームディレクトリは、実際のサーバーでUIDが再利用されたときに、他人のファイルを読めてしまう事故の種です。
ステップ
- GIDが4200のグループ
lfcsopsと、GIDを指定しないグループlfcsdevを作成してください。 - ユーザー
lfcsadmを、UID 4201、プライマリグループlfcsops、ホームディレクトリ/home/lfcsadm(実際に作成)、ログインシェル/bin/bashで作成してください。 - ユーザー
lfcsdev1を、プライマリグループlfcsdevで作成し、補助グループとしてlfcsopsを与えてください。そして、lfcsadmのプライマリグループはそのままにして、補助グループにlfcsdevを追加してください。 - サービスアカウント
lfcssvcを、UID 1000未満(システムアカウントの範囲)、ログインできないシェル、ホームディレクトリなしで作成してください。 lfcsdev1のパスワードポリシーを、最小使用日数7、最大使用日数90、期限切れ警告14日、アカウント有効期限2027-12-31に設定してください。lfcsdev1にパスワードを設定したあと、そのパスワードをロックしてください。/etc/shadowの2番目のフィールドが感嘆符で始まり、その後ろにハッシュが残っている必要があります。/root/lfcs-users/report.txtに、uid=<lfcsadm 의 UID>、gid=<lfcsops 의 GID>、shadow_max=<lfcsdev1 의 최대 사용 일수>の3行を書いてください(プレースホルダーは順に、lfcsadmのUID、lfcsopsのGID、lfcsdev1の最大使用日数です)。- ホームディレクトリのある一時アカウント
lfcstmpを作成したあと、ホームは残してアカウントだけを削除してください。/home/lfcstmpは残っていて、その所有UIDに対応するアカウントはない必要があります。
参考
useraddは、ディストリビューションによっては、ホームディレクトリを自動では作成しません。getent passwdにパスが表示されていても、ディレクトリはないことがあります。- パスワードは、対話入力なしで
chpasswdで設定できます。 /etc/shadowの3番目と8番目のフィールドは、日付ではなく1970-01-01からの日数です。- よくある間違い: 補助グループを追加するときに追加のオプションを書き漏らすと、既存の補助グループがすべて置き換わります。
グループを2つ作成する
GIDが4200のグループlfcsopsと、GIDを指定しないグループlfcsdevを作成してください。
グループ作成コマンドには、GIDを直接指定するオプションがあります。1つは指定し、1つはシステムに選ばせてください。
UID・ホーム・シェルを指定したユーザー
ユーザーlfcsadmを、UID 4201、プライマリグループlfcsops、ホームディレクトリ/home/lfcsadm(実際に作成)、ログインシェル/bin/bashで作成してください。
useraddは、UID、プライマリグループ、ホームのパス、ログインシェルを、それぞれ別のオプションで受け取ります。ホームディレクトリを実際に作成してくれるオプションが別にある点に、注意してください。
補助グループを付ける
ユーザーlfcsdev1を、プライマリグループlfcsdevで作成し、補助グループとしてlfcsopsを与えてください。そして、lfcsadmのプライマリグループはそのままにして、補助グループにlfcsdevを追加してください。
既存の補助グループを維持したまま追加するには、追加のオプションが必要です。それを書き漏らすと、一覧が丸ごと置き換わります。結果はidで確認してください。
ログインできないサービスアカウント
サービスアカウントlfcssvcを、UID 1000未満(システムアカウントの範囲)、ログインできないシェル、ホームディレクトリなしで作成してください。
システムアカウントとして作成するオプションと、ホームを作成しないオプションが、別にあります。シェルは、ログインを拒否するパスを指定してください。
パスワードの有効期限ポリシー
lfcsdev1のパスワードポリシーを、最小使用日数7、最大使用日数90、期限切れ警告14日、アカウント有効期限2027-12-31に設定してください。
最小・最大・警告・アカウントの有効期限は、それぞれ別のオプションです。有効期限は、人が読める日付で指定すれば、ツールが内部の形式に変換してくれます。
パスワードの設定後にロックする
lfcsdev1にパスワードを設定したあと、そのパスワードをロックしてください。/etc/shadowの2番目のフィールドが感嘆符で始まり、その後ろにハッシュが残っている必要があります。
対話入力なしでパスワードを設定するツールがあります。ロックは、ハッシュを消すのではなく、先頭に印を付けるものなので、ロックする前にパスワードがあって初めて意味が生まれます。
アカウントデータベースから値を読み取る
/root/lfcs-users/report.txtに、uid=<lfcsadm 의 UID>、gid=<lfcsops 의 GID>、shadow_max=<lfcsdev1 의 최대 사용 일수>の3行を書いてください(プレースホルダーは順に、lfcsadmのUID、lfcsopsのGID、lfcsdev1の最大使用日数です)。
3つの値は、それぞれ別のファイルの別のフィールドにあります。コロンで区切られているので、フィールド番号を数えて取り出してください。
アカウントだけを削除してホームは残す
ホームディレクトリのある一時アカウントlfcstmpを作成したあと、ホームは残してアカウントだけを削除してください。/home/lfcstmpは残っていて、その所有UIDに対応するアカウントはない必要があります。
削除コマンドには、ホームまで一緒に削除するオプションがあります。今回は、それを使ってはいけません。残ったディレクトリの所有者を確認してみてください。