コンテンツにスキップ

10. アカウント管理と管理タスク

10.1. ユーザとグループの管理

10.1.1. ユーザアカウント

Linuxは複数のユーザが同時にログインし利用できるシステムとなっている。 またユーザアカウント情報は/etc/passwdファイルに保存される。

/etc/passwdファイル

/etc/passwdファイルは以下のような構成となり、一般ユーザでも読み取り可能。

<ユーザ名>:<暗号化されたパスワード>:<UID>:<GID>:<GECOS(コメント)>:<ホームディレクトリ>:<デフォルトシェル>

デフォルトシェルはログインを想定しない場合/bin/false/sbin/nologinとなる。

/bin/false /sbin/noloin
Telnet接続 x x
SSH接続 x x
FTP接続 x o
SFTP接続 x x
シェルの実行 x x

/etc/shadowファイル

シャドウパスワードが書かれたファイルで、パスワード本体が暗号化されたものが保存されている。 root(とshadowグループ所属者)しか読み取りできない。

10.1.2. グループアカウント

/etc/groupファイル

/etc/groupファイルは以下のような構成となり、グループアカウント情報が保存される。 一般ユーザでも読み取り可能。

<グループ名>:<暗号化されたグループパスワード>:<GID>:<グループメンバー>

ユーザーにとって基本となるグループをプライマリグループと呼ばれる。 プライマリグループ以外に参加しているグループはサブグループと呼ばれる。

なおプライマリーグループは/etc/passwdのGIDフィールドで確認できる。

10.1.3. ユーザーとグループの管理のコマンド

useraddコマンド

useraddコマンドはユーザアカウントを作成するコマンド。

useradd <オプション> ユーザー名
オプション 説明
-c コメント ユーザー情報を表すコメントの指定
-d ディレクトリ名 ホームディレクトリの指定
-g グループ名 or GID プライマリグループの指定
-G グループ名 or GID プライマリグループ以外に所属するグループの指定
-s ログインシェル ログインシェルの指定
-u UID UIDの指定
-m ホームディレクトリの自動的な作成

なお作成するホームディレクトリに作成したいファイルのひな形は/etc/skelディレクトリに置くことでホームディレクトリに自動的にコピーされる。

usermodコマンド

既存のユーザアカウント情報を変更できるコマンド。 またユーザーアカウントをロックすることもできる。 ロックは-Lオプション、ロック解除は-Uオプションで可能。

usermod <オプション> <ユーザー名>

userdelコマンド

ユーザアカウントを削除できるコマンド。 -rオプションでホームディレクトリも削除できる。

userdel <ユーザ名>

passwdコマンド

パスワード変更するコマンド。 一般ユーザは自身のパスワードを変更でき、rootユーザは全てのユーザーのパスワードを変更することができる。 またユーザーアカウントをロックすることもできる。

passwd <ユーザ名>
オプション 説明
-l 指定したユーザーアカウントのロック
-u 指定したユーザーアカウントのロックを解除

groupaddコマンド

グループを作るコマンド。

groupadd <グループ名>
オプション 説明
-g グループID グループIDの指定

groupmodコマンド

グループ情報変更するコマンド。

groupmod <グループ名>
オプション 説明
-g グループID 指定したグループIDへ変更
-n グループ名 指定したグループ名へ変更

groupdelコマンド

作成済みのグループアカウントを削除するコマンド。 なお削除対象のグループをプライマリグループとするユーザーがいる場合は削除できない。

groupdel <グループ名>

idコマンド

ユーザがどのグループに所属しているのか調べられるコマンド。 UID,GUID,サブグループGUIDがわかる。

id <ユーザ名>

getentコマンド

ユーザーやグループの一覧を表示するコマンド。 データベースとキーを引数に渡すと管理データベースからエントリを取得できる。

getent <データベース/キー>

10.2. ジョブスケジューリング

10.2.1. cron

cronは定期的なジョブを実行するために使用できる仕組みでスケジュールを定義したコマンドを定期的に実行することが可能。 デーモンとも呼ばれる。

cronの構成

cronの仕組みはcrondデーモンとcrontabコマンドで構成される。 内部的にはcrondが1分ごとにcrontabファイル内容を調べることで実現している。

crontab

ユーザのcrontabは/var/spool/cron/ディレクトリに配置されるが、そのファイルを直接エディタで編集してはならない。 編集にはcrontabコマンドを用いる。

システムのcrontabは/etc/crontabファイルに保存される。 システムのcronで定期的に実行するジョブを格納するディレクトリは以下の通り。

ディレクトリ名 説明
/etc/cron.hourly 毎時定期的に実行するジョブのスクリプトを格納
/etc/cron.daily 毎日定期的に実行するジョブのスクリプトを格納
/etc/cron.monthly 毎月定期的に実行するジョブのスクリプトを格納
/etc/cron.weekly 毎週定期的に実行するジョブのスクリプトを格納
/etc/cron.d 上記以外のジョブのスクリプトを格納

cron/atのアクセス制限

cron/atはユーザー単位で利用制限を実施できる。 制限は/etc/cron.allow,/etc/cron.denyファイルの設定で可能。

10.2.2. cronに関するコマンド

at/atrm/atqコマンド

atコマンドは1回限りのジョブ予約を行えるコマンド。

at 
オプション 説明
-d atrmのエイリアス
-r atrmのエイリアス
-l atqのエイリアス
-f ファイルパス STDINではなくファイルからジョブ指定

atrmコマンドは予約中のジョブをジョブ番号で指定して削除できるコマンド。 atqコマンドは予約中のジョブを表示するコマンド

crontabコマンド

cronを設定するコマンド。

crontab <オプション>
オプション 説明
-e viエディタなどを使用して、crontabファイルを編集
-l crontabファイルの内容を表示
-r crontabファイルの削除
-i crontabファイル削除時の確認
-u ユーザー ユーザーを指定しcrontabファイルの編集 ( rootユーザーのみ使用可能 )

記述例は以下のように行う。

30 22 * * * /usr/local/bin/backup.sh # 毎日22:30に実行
0 12 * * 1,2 /usr/local/bin/backup.sh # 毎週月曜日、火曜日の12:00に実行

10.2.3. systemdによるスケジューリング

systemdでスケジューリングを行う場合タイマーUnitを使用する。 タイマーUnitには以下のような種類がある。

種類 使用例
モノトニックタイマ システム起動10分後に実行、以降1週間ごとに実施
リアルタイムタイマ 毎日午前4時に実行

/etc/systemd/system/以下に拡張子.timerでファイルを作成することで設定を行う。 ファイルの記述書式はman 7 systemd.timeで確認可能。

スケジュールの確認

systemctl list-timers

スケジュールの削除

systemctl stop hogehoge.timer

サービスの実行ログの確認

journalctl -u apt-daily.service

10.3. ローカライゼーションと国際化

10.3.1. ローカライゼーションと国際化

ローカライゼーションはソフトウェアのメニューやメッセージを利用者の地域や国に合わせることi18nとも呼ばれる、具体的には言語や日付、通貨単位などを合わせる。

国際化はソフトウェアを最初から多言語・他地域対応するように作ることを言う。

10.3.2. ロケール

ロケールは利用者の地域情報を表す。 これらのカテゴリは個々に設定することが可能。

ロケールの設定はlocaleコマンドで確認可能。(-aでロケールを全表示可能) またカテゴリーは以下のようなものがある。

環境変数 説明
LC_CTYPE 文字の種類やその比較・分類の規定
LC_COLLATE 文字の照合や整列に関する規定
LC_MESSAGES メッセージ表示に使用する言語
LC_MONETARY 通貨に関する規定
LC_NUMERIC 数値の書式に関する規定
LC_TIME 日付や時刻の書式に関する規定
LANGUAGE 複数一括設定(:区切り)、最高優先度
LC_ALL 一括設定、高優先度
LANG 一括設定、低優先度

ロケール名は以下のようなものがある。

ロケール名 説明
C, POSIX 英語
ja_JP.utf8(ja_JP.UTF-8) 日本語/Unicode
ja_JP.eucJP 日本語/EUC-JP
ja_JP.shiftJIS 日本語/シフトJIS
en_US.utf8 英語(米)/Unicode

10.3.3. 文字コード

文字コードはコンピュータ上で文字を利用するために各文字に割り当てたバイトコードを指す。

iconvコマンド

文字コードを変換するために使用するコマンド。

iconv <オプション> <文字コード>
オプション 説明
-l 変換できる文字コードの一覧を表示
-f 入力文字コード 変換元の文字コード。from。
-t 出力文字コード 変換後の文字コード。to。
-o ファイル名 文字コード変換した文字列を出力するファイル名。

10.3.4. タイムゾーン

タイムゾーンは地域ごとに区分された標準時間帯を指す。 UTC+N時間で決まる。日本の場合はUTC+9時間。

設定は/usr/share/zoneinfo/以下に格納される。 なお日本のタイムゾーン設定は以下のように行える。

cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime #シンボリックリンクで行う場合

tzselectコマンド

一覧から表示される情報をもとにタイムゾーンを設定できるコマンド。

tzselect

tzconfigコマンド

/etc/localtime,/etc/timezoneまとめて変更できるコマンド。

tzconfig