Linuc102メモ⑭システム管理
アカウントの管理
ユーザアカウントと/etc/passwd
ユーザアカウント情報は/etc/passswdに保存される
[ken@CentOS7 ~]$ cat /etc/passwd
root:x:1:1:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
/etc/passwdにパスワードを記述するのはセキュリティの観点から望ましくない
現在はシャドウパスワードという仕組みを使い、パスワードは/etc/shadowに格納している。
rootユーザしか読み取れない。
グループアカウントと/etc/group
グループの設定は、/etc/groupに保存される
[ken@CentOS7 ~]$ cat /etc/group
root:x:0:
bin:x:1:
ユーザは複数のグループに所属することができる
プライマリグループ(基本グループ)、サブグループ(参加グループ)
コマンドを用いたユーザーとグループの管理
useradd
ユーザーアカウントを生成する。
useraddコマンドのデフォルト値は下記ファイルに設定されている。
/etc/default/useradd
[root@CentOS7 ken]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
ホームディレクトリのデフォルトファイル
ユーザを追加すると、通常ホームディレクトリにも同時に作成される。
基本的なファイル設定などどのユーザにも必要なファイルを配布すると便利。配布されるファイルのひな形は/etc/skelディレクトリに置かれる。
[testuser@CentOS7 skel]$ ls -lA
合計 12
-rw-r--r-- 1 root root 18 11月 24 2021 .bash_logout
-rw-r--r-- 1 root root 193 11月 24 2021 .bash_profile
-rw-r--r-- 1 root root 231 11月 24 2021 .bashrc
drwxr-xr-x. 4 root root 39 4月 9 04:12 .mozilla
usermod
既存のユーザアカウントを変更する。
/etc/passwdをファイルの該当のフィールドを書き換えた場合と同じ。
userdel
ユーザアカウントを削除する。
ユーザアカウントを削除するだけでは、ホームディレクトリは残る。
ホームディレクトリも削除ウする場合は-rオプションを使う。
[root@CentOS7 ken]# userdel -r testuser
[root@CentOS7 ken]# su testuser
su: user testuser does not exist
passwd
パスワードを変更する。
rootユーザ以外は自分のパスワードのみ変更可能。
[root@CentOS7 ken]# passwd testuser2
ユーザー testuser2 のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
groupadd
グループを作成する。
[root@CentOS7 ken]# groupadd testgroup
[root@CentOS7 ken]# cat /etc/group
testgroup:x:1004:
groupmod
既存グループ情報を変更する。
[root@CentOS7 ken]# groupmod -n testgroup2 testgroup
[root@CentOS7 ken]# cat /etc/group
testgroup2:x:1004:
groupdel
グループを削除する。
プライマリグループとしてるユーザが一人でもいると削除できない。
groupdel testgroup2
id
ユーザが所属しているグループのIDを調べる。
[root@CentOS7 ken]# id ken
uid=1002(ken) gid=1002(ken) groups=1002(ken)
getent
ローカルホストやLDAPサーバにあるユーザ情報、グループ情報などを一括して出力できる。
[root@CentOS7 ken]# getent passwd
root:x:0:0:root:/root:/bin/bash
ジョブスケジューリング
システム運用には、バックアップやログファイルの管理など、メンテナンスが欠かせない
定期的に実施する作業は自動設定することによって管理コストを下げる
Linuxでは定期的に実行する場合は、cronコマンド
一回限りのジョブの場合は、atコマンド
cron
crond=スケジュール管理するデーモン
crontabコマンド=スケジューリングを編集する
crondデーモンはcrontabファイルを調べ、実行すべきスケジュールが存在すればジョブを実行
crontab
crontabファイルは、/var/spool/cron/ディレクトリ配下に置かれている
エディタで直接編集してはいけない
crontabファイルはcrontabで編集
cron -l 設定されているcronジョブを一覧表示
anacron
crontabで指定された時刻にシステムが起動してなかった場合、実行されなかったジョブを実行してくれる
システムがオフラインや停止中でも実行する
at
一回限りの実行スケジュールを扱う
atデーモンが動作している必要がある
対話式かあらかじめテキストファイルにコマンドを記述しておき、そのファイルを実行する方法もある
例)myjobsにコマンドを記載
[root@CentOS7 ken]# at -f myjobs 22:58
job 1 at Tue Aug 15 22:58:00 2023
cronとアクセス制御
cronを利用するユーザを制限するために、/etc/cron.allowと/etc/cron.denyが用意されている
①/etc/cron.allowに名前があるユーザは許可(denyに名前があっても無視)
②/etc/cron.allowに名前がなければ、/etc/cron.denyを確認し、名前があれば拒否
③/etc/cron.denyにも名前がないユーザは許可
atとアクセス制御
atを利用するユーザを制限するために、/etc/at.allowと/etc/at.denyが用意されている
①/etc/at.allowがあれば、そこに記述されたユーザのみ許可(denyは無視)
②/etc/at.allowがなければ、/etc/at.denyを参照し、記述されてないすべてのユーザが利用できる
③どちらのファイルもなければ、rootユーザだけがatを利用できる
ローカライゼーションと国際化
ローカライゼーション=言語や通貨単位、日付の書式などを地域や国に合わせること
国際化=ローカライゼーションを国ごとに設定するのは面倒なので、ソフトウェアを最初から国や地域に対応するように作ること
ロケール
ロケール=地域情報
ロケールの主なカテゴリ(一部)
LC_CTYPE 文字の種類やその比較・分類の規定
LC_COLLATE 文字の称号や整列に関する規定
LC_TIME 日付や時刻の書式に関する規定
これらのカテゴリは別々に設定することが可能
例えば文字の種類は日本語だけど、日付や時刻は英語など環境変数LC_ALLを設定すれば、すべてのカテゴリでその値が使用される
locale
現在のロケール設定を確認できる
[root@CentOS7 ~]# locale
LANG=ja_JP.utf8
LC_CTYPE="ja_JP.utf8"
LC_NUMERIC="ja_JP.utf8"
LC_TIME="ja_JP.utf8"
LC_COLLATE="ja_JP.utf8"
LC_MONETARY="ja_JP.utf8"
LC_MESSAGES="ja_JP.utf8"
LC_PAPER="ja_JP.utf8"
LC_NAME="ja_JP.utf8"
LC_ADDRESS="ja_JP.utf8"
LC_TELEPHONE="ja_JP.utf8"
LC_MEASUREMENT="ja_JP.utf8"
LC_IDENTIFICATION="ja_JP.utf8"
LC_ALL=
ロケールを一時的に変更することも可能
例)lsコマンドのmanページを英語表示にする。
[root@CentOS7 ~]# LANG=ja_JP.utf8 man ls
文字コード
Linuxは様々な文字コードを使用できる
主な文字コード(一部)
ASCII 7ビットで表示される基本的な128種類の文字
ISO-8859 ASCIIを拡張した8ビットの文字コードで256種類の文字
UTF-8 Unicodeを使った文字コード、1文字1バイト~6バイト
現在は、UTF-8を使用しているディストリビューションが多い。
文字コードの変換にはiconvが使用される
iconv
文字コードがいくつも存在していることから、変換が必要なケースがある。
windowsで作成したファイルをLinux上で開くと文字化けしたりする。
そのため、文字コードを変換するためにこのコマンドを使う。
iconv -l 指定可能な文字コードをすべて表示できる
[ken@CentOS7 ~]$ iconv -l
以下のリストには、全ての既知の文字集合が含まれています。これらの名前は
コマンドラインパラメータの FROM と TO の全ての組み合わせとして使用出来
るとは限りません。ある文字集合は複数の異なった名前 (別名、alias) で
リストされています。
437, 500, 500V1, 850, 851, 852, 855, 856, 857, 858, 860, 861, 862, 863, 864,
865, 866, 866NAV, 869, 874, 904, 1026, 1046, 1047, 8859_1, 8859_2, 8859_3,
8859_4, 8859_5, 8859_6, 8859_7, 8859_8, 8859_9, 10646-1:1993,
10646-1:1993/UCS4, ANSI_X3.4-1968, ANSI_X3.4-1986, ANSI_X3.4,
ANSI_X3.110-1983, ANSI_X3.110, ARABIC, ARABIC7, ARMSCII-8, ASCII, ASMO-708,
ASMO_449, BALTIC, BIG-5, BIG-FIVE, BIG5-HKSCS, BIG5, BIG5HKSCS, BIGFIVE, BRF,
BS_4730, CA, CN-BIG5, CN-GB, CN, CP-AR, CP-GR, CP-HU, CP037, CP038, CP273,
CP274, CP275, CP278, CP280, CP281, CP282, CP284, CP285, CP290, CP297, CP367,
CP420, CP423, CP424, CP437, CP500, CP737, CP770, CP771, CP772, CP773, CP774,
CP775, CP803, CP813, CP819, CP850, CP851, CP852, CP855, CP856, CP857, CP858,
CP860, CP861, CP862, CP863, CP864, CP865, CP866, CP866NAV, CP868, CP869,