LinuCレベル1合格教本で、勉強を進める。
今回は、『第8章 システム管理』である。
今回は、『第8章 システム管理』である。
8.1 アカウント管理
8.1.1 ユーザーの追加
表8.1 主なユーザー管理コマンド
コマンド | 意味 | コマンド | 意味 |
useradd | ユーザーの追加 | groupadd | グループの追加 |
usermod | ユーザーの編集 | groupmod | グループの編集 |
userdel | ユーザーの削除 | groupdel | グループの削除 |
passwd | パスワードの設定 | id | ユーザーとグループのID情報を表示 |
- useradd [オプション] ユーザー名:ユーザーを追加
-u UID:ユーザーIDを指定
-g グループ名/GID:主グループを指定
-G グループ名/GID:補助グループを指定
-c コメント:コメントを指定
-d ディレクトリ名:ホームディレクトリを指定
-s パス:ログインシェルを指定
-m:ホームディレクトリを作成 - passwd [オプション] [ユーザー名]:パスワードを設定
- ユーザー追加時にホームディレクトリが作成される際、/etc/skel/ディレクトリの内容を参照して中にあるファイルやサブディレクトリをコピーする。
- Debian環境(Ubuntu含む)では、-mオプションを指定せずにuseraddコマンドでユーザーを追加すると、ホームディレクトリを生成しない。
8.1.2 グループとユーザーの管理
- ユーザーはあるグループに対して、主グループ(プライマリグループ)もしくは補助グループ(セカンダリグループ、サブグループ)として所属できる。
- id [オプション] ユーザー名:指定したユーザーのID情報を表示
- ユーザー追加時に主グループを指定していなかった場合、ユーザー名と同じ名前のグループ(プライベートグループ)が生成され、そのグループに所属することになる。
- groupadd [オプション] グループ名:グループを追加
-g GID:グループID(GID)を指定 - usermod [オプション] ユーザー名:ユーザーの設定を変更
-u UID:ユーザーIDを指定
-g グループ名/GID:主グループを指定
-G グループ名/GID:補助グループを指定
-c コメント:コメントを指定
-d ディレクトリ名:ホームディレクトリを指定
-s パス:ログインシェルを指定
-l 新ユーザー名:ユーザー名を指定(新ユーザー名に変更)
-a:-Gを併用し、補助グループを追加 - groupmod [オプション] グループ名:グループの設定を変更
-g GID:グループID(GID)を指定
-n 新グループ名:グループ名を指定(新グループ名に変更)
8.1.3 ユーザーとグループの削除
- userdel [オプション] ユーザー名:ユーザーを削除
-r(--remove):ホームディレクトリも削除
-f(--force):ログイン中のユーザーを削除 - groupdel [オプション] グループ名:グループを削除
- ユーザーが1人でもそのグループを主グループとして所属するよう設定されている場合、そのグループは削除できない。
8.1.4 ユーザーとグループの設定ファイル
- etcディレクトリのpasswd, shadow, groupファイルのそれぞれの列(フィールド)には以下の情報が格納されている。
図8.3 /etc/passwdファイルの内容
/etc/passwd:ユーザー情報を保持
test01:x:1001:2000::/home/test01:/bin/bash
test01:x:1001:2000::/home/test01:/bin/bash
① ② ③ ④ ⑤ ⑥ ⑦
コマンド | 項目 | 説明 |
① | ユーザー | ユーザー名 |
② | パスワード | パスワード欄。現在では/etc/shadowで管理 |
③ | UID | ユーザーに割り当てられているID |
④ | GID | ユーザーが主グループとして所属しているグループのID |
⑤ | コメント | ユーザーの本名などを記憶できる |
⑥ | ホームディレクトリ | ユーザーのホームディレクトリ |
⑦ | ログインシェル | ユーザーが利用するシェル |
- /etc/default/useraddの確認
[root@centos7 ~]# cat /etc/default/useradd # useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes |
- vipw:passwdファイルの編集
図8.4 /etc/shadowファイルの内容
/etc/shadow:パスワード情報を保存。一般ユーザーは参照不可。
test01:$6$HTUBwjdV$w7dlKDg/3KRz7...:17952:0:99999:7:::
test01:$6$HTUBwjdV$w7dlKDg/3KRz7...:17952:0:99999:7:::
① ② ③ ④ ⑤ ⑥⑦⑧⑨
コマンド | 項目 | 説明 |
① | ユーザー | ユーザー名 |
② | パスワード | ハッシュ化されたパスワード |
③ | 最終変更日 | 1970/1/1からの通算日数 |
④ | 変更可能最短日数 | 0だといつでもパスワード変更可能 |
⑤ | パスワード有効期限 | いつまで同じパスワードを使い続けられるか |
⑥ | 警告日 | 有効期限の何日前に警告を表示するか |
⑦ | 使用不可になるまでの日数 | パスワードの有効期限が経過してからアカウントが使用不可になるまでの日数 |
⑧ | アカウント有効期限 | ユーザーアカウントの有効期限 |
⑨ | 予約フィールド | 将来的に使用できるフィールドとして予約 |
図8.5 /etc/groupファイルの内容
/etc/group:グループ情報を保持
sales:x:2000:test02
sales:x:2000:test02
① ② ③ ④
コマンド | 項目 | 説明 |
① | グループ | グループ名 |
② | パスワード | グループに割り当てられているパスワード |
③ | GID | グループに割り当てられているID |
④ | 所属メンバー | サブグループとして所属しているユーザー |
- getent データベース [エントリ]:NSSライブラリのエントリを出力
- データベース:出力したい内容を指定
passwd, shadow, group:それぞれのファイルの内容(第2引数にアカウント名を指定して特定のアカウントの情報を出力するよう指定できる)
hosts:hostsファイルの内容(第2引数にホスト名を指定して、名前解決に利用できる)
- データベース:出力したい内容を指定
8.2 ジョブ管理
8.2.1 cronによるジョブスケジューリング
- Linuxでは、次の2つの仕組みでジョブをスケジュール管理できる。
- cron(anacron):定期的に繰り返すジョブを管理
- at:一度だけ実行するジョブを管理
- crontab オプション:cronジョブの編集
-e:cronジョブの追加、編集
-l:cronジョブの表示
-r:cronジョブの削除
図8.6 crontabファイルの書式
crontabファイル:cronジョブを登録
31 10 * * * touch /root/crontest.txt
31 10 * * * touch /root/crontest.txt
① ②③④⑤ ⑥
コマンド | 項目 | 既定値 |
① | 分 | 0〜59 |
② | 時 | 0〜23 |
③ | 日 | 1〜31 |
④ | 月 | 1〜12/jan〜dec |
⑤ | 曜日 | 0〜7/sun〜sat 0と7は日曜日 |
⑥ | 実行する処理 | 実行するコマンドを1行で設定 実用的にはスクリプトを指定 |
図8.7 crontabで利用できる主な書式
0 23 * * 1-5 /testbin/backup.sh →「-」で連続した値を指定。 この例は月曜日から金曜日の23時ちょうどにスクリプトを実行。 0,15,50 * * * * /testbin/sample.sh →「,」で複数の値を指定。 この例は毎時0分、15分、50分にスクリプトを実行。 0 4 */2 * * /testbin/ntpdate.sh →「*/数字」で、「〜に1度」という値を指定。 この例は2日に1度、4時ちょうどにスクリプトを実行。 |
- /var/spool/cron/rootファイルにもcronジョブの内容が登録される。
- cronジョブを操作するための設定ファイル。
- /var/spool/cron/ユーザー名
- /etc/crontab
- /etc/cron.d/ディレクトリ
表8.2 システムが参照するcronジョブ用のディレクトリ
- etc/cron.hourly/:1時間に1回
- etc/cron.daily/:1日に1回
- etc/cron.weekly/:1週間に1回
- etc/cron.monthly/:1ヶ月に1回
※ 突然、CentOSのrootアカウントに入れなくなった。
色々試行錯誤してたら、以下のコマンドを試すよう言われたので、実行したところ、root権限でログインすることに成功。
その後、passwdでパスワードを設定し直したら、正常に戻った。
- abrt-cli list --since 1602298603
8.2.2 anacronによるジョブスケジューリング
- CentOS環境にも、表8.2のディレクトリは存在するが、/etc/crontabにジョブの実行についての設定は書かれていない。
→その代わりに、/etc/anacrontabというファイルにジョブの実行についての設定が書かれている。
表8.3 cronとanacronの違い
cron | anacron |
例:3時ちょうどに実行されるよう登録されている場合、その時刻に起動していなければならない |
例:起動後、1時間に1度、anacronが実行され、未実行だったジョブを実行 |
8.2.3 atによるジョブスケジューリング
- at [オプション] 時刻:atジョブの編集
- 主なオプション
-f ファイル:指定したファイルの内容を実行
-l:atジョブの一覧表示(=atqと同じ)
-c ジョブ番号:指定したatジョブの内容を表示
-r ジョブ番号:atジョブの削除(=atrmと同じ) - 引数:時刻の書式
23:30:その日の23時30分に実行
4pm + 1 days:翌日の午後4時ちょうどに実行
noon Jul 31:7月31日の正午に実行
- 主なオプション
8.2.4 cronとatのアクセス制御
- cronとatのアクセス制御ファイル
- /etc/cron.allow,/etc/at.allow:ファイル内に記述されたユーザーのみ利用可能
↓ - /etc/cron.deny,/etc/at.deny:ファイル内に記述されていないユーザーのみ利用可能
↓ - どちらのファイルもない:rootユーザーのみ利用可能
- /etc/cron.allow,/etc/at.allow:ファイル内に記述されたユーザーのみ利用可能
8.3 ローカライゼーションと国際化
8.3.1 i18n
- ソフトウェアを様々な言語環境で利用できるようにすることを国際化(internationalization; i18n)という。
8.3.2 ロケール
表8.4 主なロケール関係の変数
変数 | 意味 |
LANG | すべての項目に使用するロケール |
LC_ALL | すべての項目に使用するロケール |
LC_MESSAGES | メッセージに使用するロケール |
LC_TIME | 日時に使用するロケール |
LC_MONETARY | 通貨記号など、金額の表示に使用するロケール |
- locale [オプション]:ロケール情報を確認
-a:設定できる値を全て表示
表8.5 設定可能な主なロケール
変数 | 意味 |
C | Cロケール(POSIX準拠のロケール、英語で表記) |
en_US.utf8 | 言語:英語、地域:アメリカ、文字コード:UTF-8 |
ja_JP.utf8 | 言語:日本語、地域:日本、文字コード:UTF-8 |
- export LANG=C:すべての表示項目がCになる。
- ロケールの設定ファイル
- Red Hat系(CentOSなど):/etc/locale.conf
- Debian系:/etc/default/locale(dpkg-reconfigure localesで編集可能)
8.3.3 文字コードの変換
表8.6 主な文字コード
文字コード | 用途 |
ASCII | アルファベットや数字などの1バイト文字を表現 |
Shift-JIS | 日本語用文字コード。Windows環境などで利用 |
EUC | 日本語用文字コード。古いUNIX環境などで利用 |
UTF-8 | 世界中の文字を表現するためのUnicodeの文字符号化形式の一種。 最近のLinux環境では一般的 |
- iconv [オプション] [ファイル名]:文字コードの変換
-f 文字コード:変換対象となる文字コードを指定(fromの頭文字)
-t 文字コード:変換後の文字コードを指定(toの頭文字)
-l:指定できる文字コードの一覧を表示
演習問題
- A→◯
- C→❌A
- groupadd→◯
- B,D→◯
- A→❌B
- C→◯
- B→❌D
- A→◯
- /etc/cron.allow→◯
- A,C→◯
- locale→◯
- C→◯
9/12=0.75(75%)
もうちょい点は増やせたかな?😅