Linuxの管理者コマンドを今回初めて学んだので、代表的なLinuxの管理者コマンドを備忘録的にまとめてみました。
1. ユーザ、グループ管理
一つのPC上には複数のユーザとグループを作成することができる。複数のユーザを作成することで、それぞれに異なった権限を与えることができ、作業を効率的に進められる。
また、様々な権限をすべてのユーザ一人一人に与えていくのは規模が多くなるにつれとても大変になっていってしまうため、グループを用いて一括した処理を行っている。
1-1. ユーザの作成
新しくユーザーを作成したいときはuseradd
コマンドを用いる。
root$ useradd tom
root$ passwd tom
Changing password for user user01.
New password: # 設定したいパスワードを入力
Retype new password: # パスワードの再入力
passwd: all authentication tokens updated successfully.
パスワードは、8文字以上のパスワードを選択する必要がある。(rootユーザは任意の値をパスワードに設定できる。)
-u
オプションを用いてUID(ユーザID)を指定することも可能。
root$ useradd -u 12345 tom
補足:UIDの範囲
Linuxでは特定のUID番号と番号の範囲が特定の目的で使用されている。
- UDI 0:rootユーザのUID
- UID 1-200:システムプロセスに静的に割り振られたシステムアカウントUID
- UID 201-999:システムプロセスに動的に割り当てられるシステムアカウントUID
- UID 1000+:一般ユーザに割り当てられるUID
※ UID 0-999まではシステムが使用する可能性があるため、ユーザに故意的に指定をするなら1000以上が良い。
また、作成したユーザはid
コマンドを用いて確認できる。
root$ id tom
uid=12345(tom) gid=12345(tom) groups=12345(tom)
1-2. グループの作成
グループの作成にはgroupadd
コマンドを用いる。
root$ groupadd group1
ユーザーをグループに追加する-aG
オプションを用いる。
root$ usermod -aG group1 tom
root$ id tom
uid=12345(tom) gid=12345(tom) groups=12345(tom),1003(group1)
1-3. ユーザの切り替え
上記のように作成したユーザを切り替えたいときはsu
コマンドを用いる。
root$ su - tom
# 設定したパスワードを入力
tom$
上記のようにsu -
のあとに作成したユーザ名を指定することで指定したユーザに切り替えることができる。
2. rootユーザ
しかし、上記で記載したuseradd
やgroupadd
などのコマンドは一般ユーザでは実行できない。(su -
コマンドは実行できる。)基本的に一般ユーザは、
- ユーザやグループの管理
- ソフトウェアのインストールや削除
- システムファイルとディレクトリの管理
といったタスクの権限を持ち合わせていないため、rootユーザに切り替える必要がある。
rootユーザとは、システムの管理のためのユーザであり、システム全体に対する権限を持つユーザである。
しかし、rootユーザのアカウントが侵害された場合、システムは危険にさらされ、管理制御を失う可能性があるため、rootユーザは日常的には使わず、必要な場合にのみroot権限を使用することが大切である。
2-1. rootユーザの切り替え
rootの切り替えには以下を用いる。
tom$ sudo -i
# rootのパスワードを入力
root$
しかし、上記の注意書きの通り、rootユーザをむやみに使用するのはよくない。また、そのような観点から一般ユーザはrootユーザのパスワードを入手できないこともある。そんなときは、sudo
コマンドを用いてrootの権限を一時的に取得することができる。
user$ sudo useradd tom
上記のように実行したいコマンドの前にsudo
コマンドを記載することでroot権限を用いて実行することができる。
3. ファイルアクセス権限
root権限を用いてファイルのアクセス権限を変更することができる。まず、ファイルの所有者やグループを変更にはchown
コマンドを用いる。
(ここでは、記載の関係上sudo -i
を行った後とみなす。)
root$ mkdir /doc
root$ chown root:group1 /doc
上記のように設定すると/docファイルは所有者がroot、グループがgroup1になる。
3-1. パーミッション
また、ファイルにはパーミッションと呼ばれるアクセス権限を設定することができる。
ls -l
コマンドでファイルやディレクトリを指定すると以下のように表示される。
root$ ls -ld /docs
drwxrws---. 2 root adm 6 Aug 19 21:22 /docs
ここで、drwxrws---
がパーミッションである。パーミッションは左から1, 3, 3, 3の4つの塊に分解することができ、(ここでは、d
、rwx
、rws
、---
に分解できる。)それぞれの位置のパーミッションは以下を表している。
文字目 | 説明 |
---|---|
1 | ファイルの種類(exp. - :ファイル、d :ディレクトリ) |
2-4 | ファイル所有者の権限 |
5-7 | ファイルのグループメンバーの権限 |
8-10 | ファイルの所有者でもファイルのグループメンバーでもないユーザの権限 |
また、権限のモードは以下のものがある。
モード | 説明 |
---|---|
r | ファイルの読み取りアクセス権。ディレクトリの一覧表示アクセス権 |
w | ファイルまたはディレクトリへの書き込み権 |
x | ファイル、ディレクトリの実行権 |
これらを設定するにはchmod
コマンドを用いる。
root$ chmod 770 /docs
上記のようにパーミッションの指定には8進数方式と呼ばれる方法がある。
これはパーミッションを3桁の8進数で表すことができる方法であり、左から右にユーザー、グループ、その他を表す。各桁は以下の方法で決定される。
- 0から始める
- 読み取りパーミッションを追加するには、4を追加する
- 書き込みパーミッションを追加するには、2を追加する
- 実行パーミッションを追加するには、1を追加する
770 \ → \hspace{5mm} \text{(u)user} \ : \ \frac{4}{r} \frac{2}{w} \frac{1}{x} \, \hspace{0.5cm} \text{(g)group} \ : \frac{4}{r} \frac{2}{w} \frac{1}{x} \ \hspace{0.5cm} \text{(o)other} \ : \frac{0}{-} \frac{0}{-} \frac{0}{-}
4. システムパフォーマンスのチューニング
次に、root権限はシステムパフォーマンスのチューニングを行うこともできる。チューニングにはtuned-adm
コマンドを用いる。
root$ tuned-adm recommend #チューニングプロファイルの推奨値を取得
virtual-guest
root$ tuned-adm profile virtual-guest #チューニングプロファイルの設定
5. ユーザの定期的なタスク管理
定期的なタスク管理にはcrontab
を用いる。studentユーザのタスクを作成したい場合、studentユーザで設定を行うため、ユーザを切り替える。
root$ su - student
student$ crontab -e #タスクの作成
student$ crontab -l #タスクの表示
5 * * * Mon-Fri echo “test ok”
student$ crontab -r #タスクの消去
タスクは分、時間、日、月、曜日、コマンドの順で記載する。
タスク例 | 詳細 |
---|---|
15 12 11 * Fri echo “test ok” | 毎⽉ 11 ⽇と毎週⾦曜⽇の 12:15 (24 時間形式) にtest okと表示 |
/5 9-16 * Jul 5 echo “test ok” | 7 ⽉の毎週⾦曜⽇の 09:00 から 16:00 までの間、5 分間隔でtest okと表示 |
58 23 * * 1-5 echo “test ok” | 平⽇ (⽉曜⽇〜⾦曜⽇) の深夜0時の 2 分前に毎⽇test okと表示 |
6. ソフトウェアのインストールと更新
ソフトウェアパッケージの検索やインストールなどといった管理を行うことができる。ソフトウェアの管理にはrpm
やdpkg
、yum
、apt
、dnf
コマンドなどたくさんのコマンドが存在するが、ここでは、Red Hat系の最新Linuxディストリビューションで使われているRPMパッケージを扱うためのパッケージ管理コマンドdnf
について記載する。
6-1. dnfコマンド
dnf
コマンドには様々な種類がある。以下に一般的に使用されているdnf
コマンドに一例を示す。
コマンド | 詳細 |
---|---|
dnf list | インストール済みと使用可能なパッケージをリスト |
dnf group list | インストール済みと使用可能なグループをリスト |
dnf search KEYWORD | キーワードでパッケージを検索 |
dnf info PACKAGENAME | パッケージの詳細を表示 |
dnf install PACKAGENAME | パッケージのインストール |
dnf group install GROUPNAME | パッケージグループのインストール |
dnf update | パッケージの更新 |
dnf remove PACKAGENAME | パッケージを削除 |
dnf history | トランザクション経歴を表示 |
6-2. ソフトウェアリポジトリの有効化
リポジトリとはソフトウェアパッケージが保管されている場所であり、リポジトリにアクセスし、有効化することでソフトウェアが使用可能である。
リポジトリを有効化するにあたって、使用可能なリポジトリとそのステータスを一覧表示する。
root$ dnf repolist all
repo id repo name status
rhel-9.0-for-x86_64-appstream-rpms RHEL 9.0 AppStream enabled
rhel-9.0-for-x86_64-baseos-rpms RHEL 9.0 BaseOS enabled
そして、リポジトリのURLを使用して.repoファイルを作成する。
root$ dnf config-manager \
--add-repo="https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/"
Adding repo from: https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/
※作成した.repoファイルは/etc/yum.repos.d/ディレクトリ配下に置かれる。
追加したリポジトリはGPG鍵チェックを行うことで使用できるようになるが、作成した.repoファイルの最終行にgpgcheck=0
を追加することでGPG鍵チェックを無効にすることができる。
7. rootパスワードのリセット
rootパスワードを忘れてしまったときはシステムにログインしてrootのパスワードを変更することができる。
パスワードの変更には以下の方法を用いる。
- システムをリブートする:
$ systemctl reboot
- Enterキー以外のいずれかのキーを押してブートローダー(通常ログイン画面)のカウントダウンを中断
- カーネルをrescueカーネルエントリー(名前にrescueという文字が含まれる行)に移動してeキーを押す
- カーネルコマンドライン(Linuxから始まる行)にカーソルを移動させ、行の最後に
rd.break
を追記 - Ctrl + x キーでブート
- プロンプトが表示されたらEnterキーを押してメンテナンスを実行
上記の手順を行うとシェルが表示される。ここでrootパスワードのリセットを行う。
以下のコマンドを順に入力することでパスワードのリセットが完了する。
sh-5.1# mount -o remount,rw /sysroo
sh-5.1# chroot /sysroot
sh-5.1# passwd root
sh-5.1# touch /.autorelabel
sh-5.1# exit
sh-5.1# exit
上記を入力後、新しいrootパスワードの状態でシステムがブートされる。
8. その他
これまでに記載したコマンドはLinuxの管理者コマンドの中でもごく一部であり、すべてのLinuxコマンドを覚えるのはほぼ不可能である。そこで、man
コマンドを用いることでそのコマンドがどのような機能を持っているのか調べることができる。
ただし、man
コマンドはすべて英語表記である。
root$ man 調べたいコマンド
また、man
コマンドで表示された文書内を検索したいときは"/"を打ち込むことで検索状態にすることができる。
さらに、mandb
を用いてLinuxコマンドの一覧を自分のPCにダウンロードすることでキーワード検索も行うことができる。
root$ mandb #データベースのダウンロード
root$ man -k キーワード(userなど)
※mandb
コマンドはrootユーザでしか実行することができない。