0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

管理タスク

Last updated at Posted at 2023-09-24

ユーザーアカウント

ユーザーアカウント情報は/etc/passwdファイルに保存されている。1行につき1ユーザーアカウントの情報が記述されている。項目ごとに「:」で区切られている

/etc/passwdのフィールド内容

項目名(左から順) 説明
ユーザー名 システム内で一意のアカウント名。同じシステム内で重複は不可
パスワード 現在ではシャドウパスワードが使われているため、「x」が入力されている。/etc/shadowファイルに格納され、rootユーザーのみ読み出し可能。
UID(ユーザーID) ユーザーを識別するための一意なID。rootユーザーは必ず0で、一般ユーザーは1000以降の番号、1~99まではシステム管理用、500未満はデーモンやディレクトリの所有者として利用するシステムアカウントに使用される
GID(グループID) グループを識別するための一意なID。/etc/groupファイルで定義される
GECOS ユーザーのフルネームやその他の情報などを記述するコメント欄
ホームディレクトリ ユーザーのホームディレクトリの絶対パスを格納
デフォルトシェル ユーザーがログインしたり新たにシェルを開いた際に起動されるシェルの絶対パスを格納

ユーザー新規追加後は/etc/shadowの2番目のフィールドが「!!」となっていて、パスワード設定されていない。
また、パスワードフィールドの1文字目に「*」、あるいは「!」を指定するとログインを拒否することが出来る

/etc/shadowのフィールド内容

フィールド番号 内容
1 ログイン名
2 暗号化されたパスワード
3 1970年1月1日から、最後にパスワードが変更されたまでの日数
4 パスワードが変更可となるまでの日数
5 パスワードを変更しなければならない日までの日数
6 パスワードの期限切れに何日前にユーザーに警告するかの日数
7 パスワードの期限切れに何日後にアカウントを使用不能とするかの日数
8 1970年1月1日から、アカウントが使用不要になるまでの日数
9 予約されたフィールド

パスワードフィールドの1文字目に「*」、あるいは「!」を指定するとログインを拒否することが出来る

useraddコマンド

書式:useradd [オプション] ユーザー名
ユーザーアカウントを作成するためのコマンド。オプション省略すると、/etc/default/useraddファイルの設定がデフォルト値として使用される。

オプション 説明
-c コメント コメントフィールドを指定する
-d パス ホームディレクトリを指定する
-e アカウント失効日の指定
-f パスワードが失効してからアカウントが使えなくなるまでの日数
-g グループ名(GID) プライマリグループを指定する
-G グループ名(GID) プライマリグループ以外に所属するグループを指定する
-k skelディレクトリの指定
-s パス デフォルトシェルを指定する
-D デフォルトの設定値を表示もしくは設定する
-m ホームディレクトリを自動的に作成する
-M ホームディレクトリを作成しない

ユーザーアカウントを作成すると、ホームディレクトリも同時に作成される。/etc/skelディレクトリにひな形として置くことで、基本的な設定ファイル、どのユーザーでも必要と思われるファイルも同時に配布することが可能。

Debian系ディストリビューションの場合、[-m]オプションを指定しないとユーザー新規追加してもホームディレクトリは作成されない

/etc/login.defs

  • CREATE_HOMEがyesの場合
    [-m]オプションなしでホームディレクトリを作成することが出来る

  • USERGROUPS_ENABがyesの場合
    グループ名はユーザ名と同じ名前になる。グループIDはユーザーIDと同じ値になる。

  • USERGROUPS_ENABがnoの場合
    グループIDはGROUPの値になる

usermodコマンド

書式:usermod [オプション] ユーザー名
既存のユーザーアカウントを変更するコマンド。

オプション 説明
-c コメント コメントフィールドを変更する
-d パス ホームディレクトリを変更する
-e アカウント失効日の指定
-f パスワードの失効までの猶予日数を表示
-g グループ名(GID) プライマリグループを変更する
-G グループ名(GID) プライマリグループは変更せず、所属するグループを変更する
-s パス ログインシェルを変更する
-L(-l) パスワードをロックして一時的に無効化する
-U パスワードのロックを解除する
-e アカウントが失効する日を変更する
-p crypt関数で暗号化済みのパスワードを設定。rootユーザのみ実行可能

chsh(change shell)コマンド

書式:chsh -s ログインシェル ユーザー名
ログインシェルを変更するための専用コマンド。
ログインシェルに/bin/falseを指定することにより、対話的なログインを禁止することが出来る。また、ログインシェルを/sbin/nologinに設定することで、アカウントが現在使えない旨のメッセージを表示した後ログアウトさせることも可能。

userdelコマンド

書式:userdel [オプション] ユーザー名
ユーザーアカウントを削除するコマンド。オプションない場合はアカウントのみ削除される

オプション 説明
-r(--remove) ホームディレクトリも同時に削除する
-f(--force) ログイン中でもアカウントを削除する

chageコマンド

書式:chage [オプション(引数)] ユーザー名
アカウント失効日の設定と表示するコマンド。

オプション 説明
-l(list) アカウントとパスワードの失効日の情報を表示。このオプションのみ一般ユーザーでも使用可
-d(lastday) パスワードの最終更新日を設定。年月日をYYYY-MM-DDの書式、もしくは1970年1月1日からの日数で指定する
-m(mindays) パスワード変更間隔の最短日数を設定
-M(maxdays) パスワードを変更なしで使用できる最長日数を設定
-W(warndays) パスワードの変更期限の何日前から警告を出すかを指定
-I(inactive) パスワードの変更期限を過ぎてからアカウントが使用できなくなるまでの猶予日数。この猶予期間ではログイン時にパスワードの変更を要求される
-E(expiredate) アカウントの失効日を設定(失効日の翌日から使用不可になる)。年月日をYYYY-MM-DDの書式、もしくは1970年1月1日からの日数で指定する

キャプチャ9.PNG

passwdコマンド

書式:passwd [オプション] ユーザー名
パスワードを変更するためのコマンド。一般ユーザーは自分のパスワードだけ変更することが出来る。
設定、変更するときPAMの設定ファイルであるsystem-auth内にあるpasswdタイプのエントリに記述されている暗号化アルゴリズム(ハッシュ関数)が使われている。

オプション 説明
-i(inactive) パスワードの失効までの猶予日数を表示。
-l パスワードをロックして一時的に無効化する
-u パスワードのロックを解除する
-x(expire) パスワードを変更なしで使用できる最長日数を設定

/etc/passwdの第2フィールド内にx以外の暗号化パスワードが入っている時があるが、特に何も設定しなくてもシステムは正常に動作する

・PAM(Pluggable Authenticaton Module)とは??
LinuxなどのUNIX系OSで、各アプリケーションから共通の認証方式を利用できるようにする仕組み。OS標準のユーザー認証をアプリケーションから利用することができる。

グループアカウント

グループアカウント情報は/etc/groupファイルに保存されている。
ユーザーはプライマリグループ(基本グループ)、サブグループ(参加グループ)と複数のグループに属することが可能。

項目名(左から順) 説明
グループ名 グループの名称
グループパスワード 現在ではシャドウパスワードが使われているため、「x」が入力されている。
GID(グループID) グループを識別するためのGID
グループメンバー このグループをサブグループにしているユーザー名が入る。複数のユーザーが属している場合は、「,」で区切っている

groupsコマンド

所属するグループを確認するコマンド。

groupaddコマンド

書式:groupadd グループ名
グループを作成するコマンド。オプション指定がない場合は、現在使用されている最大値+1が設定される。
新しいグループに追加すると、/etc/group,/etc/gshadowの最終行に表示される。

オプション 説明
-g GIDを指定する

groupmodコマンド

書式:groupmod [オプション] グループ名
既存のグループを変更するコマンド。rootユーザーのみ使用可能
所属するユーザーを変更することは不可

オプション 説明
-g GID GIDを変更する
-n グループ名 グループ名を変更する

groupdel

書式:groupdel グループ名
グループを削除するコマンド。削除対象グループをプライマリグループとするユーザーがいる場合は削除不可。

gpasswdコマンド

/etc/groupを管理するコマンドで、グループのパスワードや所属するメンバーなどを設定する。

idコマンド

書式:id [オプション] ユーザー名
ユーザのUID(ユーザID)や、所属するグループのGID(グループID)を確認するコマンド。ユーザ名を省略すると、コマンドを実行したユーザの情報が表示される。また、オプションを省略すると、UIDと所属する全てのグループのGIDを表示する。

オプション 説明
-u UIDを表示
-g ユーザーのプライマリグループのGIDを表示
-G 所属するすべてのグループGIDを表示

ジョブスケーリング

定期的に実施する作業については、自動的に実行されるように設定することによって、システム管理コストを下げることが出来る。

cron

定期的にジョブを実行することが出来る機能。スケジュールを管理するcrond(/usr/bin/crond)があり、1分ごとにcrontabファイルを調べて実行すべきスケジュールが存在すればジョブを実行する
Debian系はcron(/usr/bin/cron)。

crondが実行するファイルは/var/spool/cron,/etc/cron.dディレクトリ以下にの設定ファイルおよび/etc/crontabファイル。

ユーザ用と管理者が設定するシステム用の2種類の設定ファイル(crontabファイル)がある。

  • ユーザ用
    crontabファイルは/var/spool/cron/ユーザ名だが、テキストエディタで直接編集はできない。ユーザ用のcronの設定を行うにはcrontabコマンドを使用する

  • 管理者用
    crontabファイル/etc/crontabはviなどのテキストエディタで直接編集可能。ユーザ用のcrontabファイルの書式と異なり、各コマンドの実行ユーザも指定する必要がある。

[root@localhost systemd]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

anacron(/usr/sbin/anacron)

コマンドを日単位の間隔で定期的に実行する。システム管理者がシステムの保守のために設定する。

crontabコマンド

書式:crontab [オプション]
crontabファイルを編集するためのコマンド。ユーザーのcrontabファイルは/var/spool/cronディレクトリ以下に置かれるが、エディタで直接編集ができないためこのコマンドを使用する

オプション 説明
-e エディタを使ってcrontabファイルを編集する
-l crontabファイルの内容を表示する
-r crontabファイルを削除する
-i crontabファイル削除時に確認する
-u ユーザー名 ユーザーを指定してcrontabファイルを編集する(rootユーザーのみ)

crontabファイル

書式:分 時 日 月 曜日 コマンド
「*」は全ての値にマッチする、複数の値を指定する場合は「,」、間隔を指定する場合は「*/n(n:整数)」と指定する
1行ごとに、自動的に実行するコマンドおよびその実行日時を指定する。

フィールド 内容
0~59までの整数
0~23までの整数
1~31までの整数
1~12までの整数、もしくはjan~decまでの文字列
曜日 0~7までの整数(0,7:日曜~6:土曜)、もしくはSun,Monなどの文字列
コマンド 実行すべきコマンド
表記 説明
* 全ての値に一致
- 範囲の指定。「1-3」と指定すると「1から3」を意味する
, 複数の値の指定。「1,2,3」と指定すると「1と2と3」を意味する
/ 間隔の指定。「1-7/2」と指定すると「1から7の間で2間隔」を意味する
#毎日23:15に/usr/local/bin/backupプログラムを実行する
15 23 * * * /usr/local/bin/backup

#2時間ごとに/usr/local/bin/syscheckプログラムを実行する
0 */2 * * * /usr/local/bin/syscheck
ファイル/ディレクトリ 説明
/etc/crontab システムのcrontabファイル
/etc/cron.d 各種のcronジョブを記述したファイルを収めたディレクトリ
/etc/cron.hourly/ 1時間に1度実行されるcronジョブを記述したファイルを収めたディレクトリ
/etc/cron.daily/ 1日に1度実行されるcronジョブを記述したファイルを収めたディレクトリ
/etc/cron.weekly/ 週に1度実行されるcronジョブを記述したファイルを収めたディレクトリ
/etc/cron.mounthly/ 月に1度実行されるcronジョブを記述したファイルを収めたディレクトリ
/var/spool/cron(/var/spool/cron/crontabs/) ユーザーのcrontabファイルを収めたディレクトリ。ディストリビューションによってはディレクトリ名が変わる。rootユーザーのみアクセス可能。

cronの実行権限

ユーザー単位で制限をかけることができる。以下のファイルどちらにも記述がない場合、CentOSはrootユーザーのみ、Ubuntuは全てのユーザーがcronを利用することが出来る

  1. /etc/cron.allowファイルがあれば、記述のあるユーザのみが利用可能
  2. /etc/cron.allowファイルがなければ、/etc/cron.denyを参照し、そこに記述のないユーザが利用可能
  3. 両方のファイルがなければ、rootユーザのみが利用可能

at

1回限りの実行スケジュールを行う。スケジューリングを実施するには**atd(/usr/sbin/ard)**が動作している必要がある。

システムの負荷が低くなった時に指定したコマンドを1回だけ実行するにはbacthコマンドを使用する。

atコマンド

書式:at [オプション] 時間
書式:at [-f ファイル名] 日時
対話式でコマンドを指定し、日時を指定すると入力モードになる。Ctrl+Dでコマンドの入力を終了する。
また、対話式ではなくあらかじめテキストファイルにコマンドを記述しておき、そのファイルを指定する方法もある。

オプション 説明
-d /-r 予約中のジョブを上部番号で指定して削除する(=atrmコマンド)
-l 予約中のジョブを表示する(=atqコマンド) 。rootユーザーが実行した場合は、全てのユーザのジョブを表示する。
-f コマンドを記述したファイルを指定する

atのアクセス制御

cronのアクセス制御同様に、ユーザー単位で制限をかけることができる。以下のファイルどちらにも記述がなければ全てのユーザーがatを利用でき、どちらのファイルもなければ、rootユーザーのみatを利用可能

デフォルトでは、空の/etc/at.denyファイルがあり、全てのユーザーが利用できるようになっている。

  1. /etc/at.allowファイルがあれば、記述のあるユーザのみが利用可能
  2. /etc/at.allowファイルがなければ、/etc/at.denyを参照し、そこに記述のないユーザが利用可能
  3. 両方のファイルがなければ、rootユーザのみが利用可能

/etc/at.allow/etc/at.denyファイルどちらにもユーザー名の記載がある場合、/etc/at.allowファイルが優先される

batchコマンド

システムの負荷の少ないタイミングで指定した時間に1回だけコマンドを自動実行する。設定されたジョブの管理は、atコマンドを使用して行う。
コマンドを入力すると、プロンプトが「at>」に変わり、コマンドを入力できるようになるので、実行したいコマンドを入力して、最後にCtrl+Dで終了する。

timerユニット

systemdのtimerユニットを使うと、cronの代わりにジョブスケジューラとして使用することが可能になる。書式は「man 7 systemd.time」で確認可能

monotonic timer(モノトニックタイマー)

何らかのイベントから一定時間経過した後に発動し、以後定期的に実施される。タイマーユニット設定ファイルの[Timer]セクションにスターティングポイントからの時間間隔を指定して実行する。

[Timer]
## タイマーをアクティベートしてからの時間
OnActiveSec=1hour
## 繰り返して実行する場合の時間間隔
OnunitActiveSec=1hour
## タイマーを利用して実行するファイル
Unit=timer-test.service

realtime timer(リアルタイムタイマー)

crontabと同様にカレンダーで指定して定期的に実施される
実行時刻は「曜日 年-月-日 時刻」で指定する。省略は可能で、全てを省略した場合、当日の0:00:00となる。

[Timer]
## 毎日4時に実行する
OnCalendar=*-*-* 4:00:00
## タイマーを利用して実行するファイル
Unit=timer-test.service

systemd-runコマンド

systemdで、一時的なユニットを作成してジョブを実行するコマンド。使用することでより簡単にジョブをスケジューリングすることができる。

localization(ローカライゼーション)

言語や通貨単位、日付の書式などを地域や国に合わせること。最近のソフトウェアでは、最初から多言語・他地域に対応する様に作られている。これを国際化(internationalization:i18n)という

ロケール

地域情報のことで、多くのソフトウェアは利用者の地域情報に従って表示言語や表示書式を変更できるように作られている。
環境変数LANG、LC_ALLを使って全てのカテゴリをまとめて設定することが出来る。
systemdが動作するシステムでのシステム全体のロケール設定ファイルは/etc/locale.confになる。

カテゴリ 説明
LC_CTYPE 文字の種類やその比較・分類の規定
LC_COLLATE 文字の称号や整列に関する規定
LC_MESSAGES メッセージ表示に使用する言語
LC_MONETARY 通貨に関する規定
LC_NAME 名前に関する規定
LC_ADDRESS アドレス、ロケーションに関する規定
LC_TELEPHONE 電話番号に関する規定
LC_NUMERIC 数値の書式に関する規定
LC_TIME 日付や時刻の書式に関する規定
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

デフォルトのロケールはC(POSIX)ロケール。

localeコマンド

書式:locale [オプション]
現在のロケール設定を確認するコマンド。引数なしで実行すると、現在設定されているロケール情報をすべて表示する。

オプション 説明
-a 現在システムで使用できるロケールを表示する
-m 利用できる文字コードの一覧

文字コード

多くのディストリビューションではUTF―8を利用しているが、日本ではいくつかの文字コードが存在している。

文字コード 説明
ASCII 7ビットで表される基本的な128種類の文字(英数字+α)
ISO-8859 ASCIIを拡張した8ビットの文字コードで256種類の文字
UTF-8 Unicodeを使った文字コードで、1文字を1~6バイトで表す
日本語EUC(EUC-JP) UNIX環境で標準的に利用されていた日本語の文字コード
シフトJIS Windowsで利用される日本語の文字コード
ISO-2022-JP 電子メールなどで利用される日本語の文字コード(JISコード)
Unicode 多言語を扱うために符号化文字集合(文字コード表)。UTF-8(Linux標準使用)、UTF-16、UTF-32などがある。

iconvコマンド

書式:iconv [オプション] 入力ファイル
文字コードを変換するコマンド。

オプション 説明
-f(from) 入力文字コード 変換前の文字コードを指定する
-t(to) 入力文字コード 変換して出力したい文字コードを指定する
-l 扱える文字コードを表示する
#日本語EUCで作成されたreport.euc.txtをUTF-8に変換してreport.utf8.txtとして保存

$ iconv -f eucjp -t utf8 report.euc.txt > report.utf8.txt
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?