主題1.08:システム管理
1.08.1 アカウント管理(重要度5)
useraddコマンド
書式
useradd【オプション】ユーザー名
概要
ユーザーを追加
主なオプション
-u UID
→ユーザーID(UID)を指定
-g グループ名/GID
→主グループを指定
-G グループ名/GID
→補助グループを指定
-c コメント
→コメントを指定
-d ディレクトリ名
→ホームディレクトリを指定
-s パス
→ログインシェルを指定
-m
→ホームディレクトリを作成(存在しない場合)
-D
→アカウントのデフォルト値を表示または設定
引数
・ユーザー名:追加するユーザー名を指定
使用例
useradd -g tempgroup test03
→test03ユーザーを追加。tempgroupを主グループとして指定
useradd -G tempgroup test04
→test04ユーザーを追加。tempgroupを補助グループとして指定
関連ファイル
/etc/default/useradd
→useraddコマンドでオプションを指定せずにユーザーを作成する際、使用されるデフォルトの値が格納されているファイル
/etc/skel
→useraddコマンドでユーザーを新規作成する際、ホームディレクトリに自動的に作成するファイルを置くディレクトリ
usermodコマンド
書式
usermod【オプション】ユーザー名
概要
ユーザーの設定を変更
主なオプション
-u UID
→ユーザーIDを指定
-g グループ名/GID
→主グループを指定
-G グループ名/GID
→補助グループを指定
-c コメント
→コメントを指定
-d ディレクトリ名
→ホームディレクトリを指定
-s パス
→ログインシェルを指定
-l 新ユーザー名
→ユーザー名を指定(新ユーザー名に変更)
-a
→-Gを併用し、補助グループを追加
-L
→パスワードをロックする
-U
→パスワードをアンロック(解除)する
-p 暗号化済みのパスワード
→暗号化済みのパスワードを設定する
引数
・ユーザー名:追加するユーザー名を指定
使用例
usermod -g sales test01
→test01ユーザーの主グループをsalesに変更
usermod -d /home/hogehoge testuser
→ユーザー「testuser」のホームディレクトリを「/home/hogehoge」に変更
usermod -s /bin/false hoge2
→対話的ログインを禁止する
chsh -s /sbin/nologin hoge2
→対話的ログインを禁止する
userdelコマンド
書式
userdel【オプション】ユーザー名
概要
ユーザーを削除
主なオプション
-r(ーーremove)
→ホームディレクトリも削除
-f(ーーforce)
→ログイン中のユーザーを削除
引数
・ユーザー名:削除するユーザー名を指定
使用例
userdel -r -f test05
→-fオプションを指定してログイン中のユーザーを削除
groupaddコマンド
書式
groupadd【オプション】グループ名
概要
グループを追加
主なオプション
-g GID
→グループID(GID)を指定
引数
・グループ名:追加するグループ名
使用例
groupadd -g 2000 sales
→GIDを指定し、salesグループを追加
ユーザーの所属するグループの名前を確認できるコマンド
groups
groupmodコマンド
書式
groupmod【オプション】グループ名
概要
グループの設定を変更
主なオプション
-g GID
→グループID(GID)を指定
-n 新グループ名
→グループ名を指定(新グループ名に変更)
引数
・グループ名:設定を変更するグループ名を指定
使用例
groupmod -g 600 ProjectA
→既に存在するグループアカウント「ProjectA」のGID(グループID)を600へ変更
groupmod -n ProjectB ProjectA
→既に存在するグループアカウント「ProjectA」のグループ名を「ProjectB」へ変更
groupdelコマンド
書式
groupdel グループ名
概要
グループを削除
引数
・グループ名:削除するグループ名を指定
passwdコマンド
書式
passwd【オプション】【ユーザー名】
概要
パスワードを設定
主なオプション
-l
→パスワードをロックする
-u
→パスワードをアンロック(解除)する
引数
・ユーザー名:設定するユーザー名を指定。ユーザー名を省略すると、ログイン中(自分自身)のパスワードを再設定。ユーザー名を指定してパスワードを設定できるのはrootユーザーのみ
使用例
passwd
→引数がないと実行したユーザー自身のパスワードを変更
passwd test01
→test01ユーザーのパスワードを変更
グループのパスワードやメンバーを設定できるコマンド
gpasswd
idコマンド
書式
id【オプション】ユーザー名
概要
指定したユーザーのID情報を表示
主なオプション
-u
→UID(ユーザーID)を表示
-g
→ユーザーのプライマリグループのGID(グループID)を表示
-G
→所属するすべてのグループのGIDを表示
引数
・ユーザー名:対象となるユーザー名を指定
使用例
id -u test
→ユーザー「test」のUIDを確認
id -G test
→ユーザー「test」の所属するすべてのグループのGIDを確認
vipwコマンド
書式
vipw
概要
passwdファイルの編集
/etc/passwdファイル
格納されている情報
・ユーザ:ユーザ名
・パスワード:パスワード欄。xとある場合、/etc/shadowに暗号化されて格納されている
・UID:ユーザに割り当てられているID
・GID:ユーザが主グループとして所属しているグループのID
・コメント:ユーザの本名などを記載できる
・ホームディレクトリ:ユーザのホームディレクトリ
・ログインシェル:ユーザが利用するシェル
パーミッション
644
/etc/shadowファイル
格納されている情報
・ユーザ:ユーザ名
・パスワード:ハッシュ化されたパスワード
・最終変更日:1970/1/1からの通算日数
・変更可能最短日数:0だといつでもパスワード変更可能
・パスワード有効期限:いつまで同じパスワードを使い続けられるか
・警告日:有効期限の何日前に警告を表示するか
・使用不可になるまでの日数:パスワードの有効期限が経過してからアカウントが使用不可になるまでの日数
・アカウント有効期限:ユーザアカウントの有効期限
・予約フィールド:将来的に利用できるフィールドとして予約
パーミッション
000
400
600
/etc/groupファイル
格納されている情報
・グループ:グループ名
・パスワード:グループに割り当てられているパスワード
・GID:グループに割り当てられているID
・所属メンバー:サブグループとして所属しているユーザ(記載されていない場合がある)
getentコマンド
書式
getent データベース【エントリ】
概要
NSSライブラリのエントリを出力
引数
・データベース:出力したい内容を指定
passwd/shadow/group
→それぞれのファイルの内容(第2引数にアカウント名を指定して、特定のアカウントの情報を出力するよう指定できる)
hosts
→hostsファイルの内容(第2引数にホスト名を指定して、名前解決に利用できる)
使用例
getent passwd
→passwdファイルの内容を出力
getent passwd testuser
→第2引数に指定したアカウントの情報を出力
1.08.2 ジョブスケジューリング(重要度4)
crontabコマンド
書式
crontab オプション
概要
cronジョブの編集
主なオプション
-e
→cronジョブの追加、編集
-l
→cronジョブの表示
-r
→cronジョブの削除
crontabファイルの書式
31 10 23 6 5 touch /root/crontest.txt
①31 ②10 ③23 ④6 ⑤5 ⑥touch /root/crontest.txt
列:項目:規定値
①:分:0~59
②:時:0~23
③:日:1~31
④:月:1~12/jan~dec
⑤:曜日:0~7/sun~sat(0と7は日曜日、1は月曜日、2は火曜日と指定)
⑥:実行する処理:実行するコマンドを1行で指定(実用する場合はスクリプトを指定するのが一般的)
crontabで利用できる主な書式
0 23 * * 1-5 /testbin/backup.sh
→『-』で連続した値を指定。この例は月曜日から金曜日の23時ちょうどにスクリプトを実行
0,15,50 * * * * /testbin/sample.sh
→『,』で複数の値を指定。この例は毎時0分、15分、50分にスクリプトを実行
0 4 */2 * * /testbin/ntpdate.sh
→『*/数字』で『〜に一度』という値を指定。この例は2日に一度、4時ちょうどにスクリプトを実行
使用例
crontab -e →テキストエディタを起動
45 23 26 4 2 touch /root/crontest.txt →4月26日23時45分火曜日にコマンドを実行
atコマンド
書式
at【オプション】時刻
概要
atジョブの編集
主なオプション
-f ファイル
→指定したファイルの内容を実行。-fオプションを指定しなかった場合は、専用のプロンプトが表示され、入力した内容を実行する
-l
→atジョブの一覧表示(=atqと同じ)
-c ジョブ番号
→指定したatジョブの内容を表示
-d ジョブ番号
→atジョブの削除(=atrmと同じ)
引数
・時刻:ジョブを実行する時刻。以下の書式で指定
23:30 →その日の23時30分に実行
4pm + 1 days →翌日の午後4時ちょうどに実行
noon Jul 31 →7月31日の正午(午後0時)に実行
使用例
at 11:30 →その日の11:30に下記で入力するジョブを実行
at> touch /root/attest.txt →touch /root/attest.txtと入力してEnter
at> <EOT> →Ctrl + d キーを押すと<EOT>と入力され、入力完了。ジョブを追加
システム負荷の少ないタイミングで1回だけコマンドを自動実行するコマンド
batchコマンド
cronとat関連のディレクトリ・ファイル
crontabファイル
/var/spool/cron/ユーザー名:ユーザー用の設定ファイル
/etc/crontab:システム用の設定ファイル。以下の4つのディレクトリに置かれたスクリプトを実行
/etc/cron.hourly/:毎時実行するスクリプトを置く
/etc/cron.daily/:毎日実行するスクリプトを置く
/etc/cron.weekly/:毎週実行するスクリプトを置く
/etc/cron.monthly/:毎月実行するスクリプトを置く
/etc/cron.d/:サービス個別のジョブ実行を定義した設定ファイルを置く
cronとatのアクセス制御ファイル
/etc/cron.allow、/etc/at.allowがある→ファイル内に記述されたユーザのみ利用可能
/etc/cron.deny、/etc/at.denyがある→ファイル内に記述されていないユーザのみ利用可能
どちらのファイルもない→rootユーザのみ利用可能
anacronジョブ
概要
anacronはcronによるジョブスケジューリングを補完するツール
実行定義ファイル
/etc/anacrontab
ジョブ定義において、全ジョブの実行時に追加されるランダムな待機時間を指定
RANDOM_DELAY=30
ジョブを実行する時間帯をシステムの利用率の低い深夜に設定
START_HOURS_RANGE=0-4
anacronの特徴
・日単位でジョブを実行する
・実行履歴を管理しており、未実行のジョブを検出できる
・デーモン化(バックグラウンド実行)しないため、定期的に実行する必要がある。主にcrondによって実行
1.08.3 ローカライゼーションと国際化(重要度3)
localeコマンド
書式
locale【オプション】
概要
ロケール情報を確認
主なオプション
-a
→設定できる値をすべて表示
使用例
locale
→現在のロケールの設定を確認
locale -a
→現在のシステムで使用できるロケールを確認
ロケールの設定
主なロケール関係の変数
LANG:すべての項目に使用するロケール(カテゴリ毎に個別の設定ができる)
LC_ALL:すべての項目に使用するロケール(カテゴリ毎に個別の設定ができない)
LC_MESSAGES:メッセージに使用するロケール
LC_ TIME:日時に使用するロケール
LC_MONETARY:通貨記号など、金額の表示に使用するロケール
LC_NUMERIC:数値の書式
LC_CTYPE:文字の分類、文字の種類の規定
設定可能な主なロケール
C:Cロケール(POSIX準拠のロケール、英語で表記)
en_US.utf-8:言語→英語、地域→アメリカ、文字コード→UTF-8
ja_JP.utf-8:言語→日本語、地域→日本、文字コード→UTF-8
設定例
export LC_MESSAGES=C
→メッセージのみCロケールに設定
export LANG=C
→LANGの設定をすると他のLC_〜変数もすべてCロケールに設定
systemdが動作するシステムでのロケール設定ファイルの説明
・システム全体のロケール設定ファイルは「/etc/locale.conf」
・システム全体のロケール設定ファイルにLC_ALLを設定できるが、設定することは推奨されない
・「LANG=C」を設定すると、ロケールが異なる環境でも英語で共通の出力が得られる
i18n
ソフトウェア利用者の多様な地域や多言語に対応できるように考慮する国際化のこと
ローカライゼーション(L10n)
ソフトウェアで表示される言語やフォント、日付や通貨などの書式を利用者の言語に翻訳したりして合わせること
iconvコマンド
書式
iconv【オプション】【ファイル名】
概要
文字コードの変換
主なオプション
-f 文字コード
→変換対象となる文字コードを指定(fromの頭文字)
-t 文字コード
→変換後の文字コードを指定(toの頭文字)
-l
→指定できる文字コードの一覧を表示
引数
・ファイル名:変換対象とするファイルを指定
主な文字コード
ASCII:7ビットの文字コードで、128種類の文字を表現
ISO-8859:ASCIIを8ビットに拡張したもの。256種類の文字を表現
ISO-2022-JP:日本語でのメール送信に主に使用されていた日本語文字コード
Shift-JIS:日本語用文字コード、Windows環境などで利用
EUC:日本語用文字コード、古いUNIX環境などで利用
UTF-8:世界中の文字を表現するためのUnicodeの文字符号化形式の一種。最近のLinux環境では一般的
使用例
iconv -f shift-jis -t utf-8 win3.txt > win4.txt
→テキストファイルの日本語部分をShift-JISからUTF-8に変換