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 1124  2021 .bash_logout
-rw-r--r--  1 root root 193 1124  2021 .bash_profile
-rw-r--r--  1 root root 231 1124  2021 .bashrc
drwxr-xr-x. 4 root root  39  49 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,


この記事が気に入ったらサポートをしてみませんか?