はじめに
Linux の権限(パーミッション)は、誰がファイルを読み取り、変更し、実行できるかを決定します。RHCSA のタスクでは、権限文字列の確認、数値およびシンボリックモードの設定、所有権の変更、そして意図したグループがファイルを利用できるようにディレクトリを構成することが頻繁に求められます。
この実験では、/home/labex/project ディレクトリ内で直接作業を行います。用意されたファイルの確認、chmod を使用した標準的なファイルモードの適用、スクリプトの安全な実行許可、root 所有の引き継ぎファイルの所有権取得、および setgid 共有ディレクトリの設定を行います。
ファイル権限フィールドの確認
このステップでは、権限を変更する前に現在の状態を確認します。ls -l 出力の最初のフィールドはファイルタイプと権限を示し、所有者およびグループフィールドは誰がそのファイルを管理しているかを示します。
標準の LabEx プロジェクトディレクトリに移動します。
cd /home/labex/project
用意された実験用ディレクトリツリーを一覧表示します。
ls -l permissions-lab
用意された設定ファイルを確認します。ロングリスト形式でモード、所有者、グループが表示されます。
ls -l permissions-lab/configs
stat コマンドを使用して、1 つのファイルを簡潔に表示します。%a は数値モード、%U は所有者名、%G はグループ名を出力します。
stat -c '%n %a %U %G' permissions-lab/configs/private.conf
root が所有する引き継ぎファイルを確認します。所有者とグループが現在 root になっていることに注目してください。
ls -l permissions-lab/shared/handoff.txt
数値指定による chmod でのファイルモード設定
このステップでは、chmod を使用して数値モードで権限を設定します。3 桁の数字は、それぞれユーザー、グループ、その他の権限を表します。例えば、600 はユーザーのみが読み取り/書き込み可能であることを意味し、644 はユーザーが読み取り/書き込み可能で、グループとその他は読み取りのみ可能であることを意味します。
プロジェクトディレクトリから開始します。
cd /home/labex/project
private.conf を所有者のみが読み取り/書き込みできるように設定します。これは機密設定を含むファイルに適した権限です。
chmod 600 permissions-lab/configs/private.conf
readme.txt を全員が読み取り可能で、所有者のみが書き込み可能になるように設定します。
chmod 644 permissions-lab/configs/readme.txt
stat でモードを確認します。
stat -c '%n %a' permissions-lab/configs/private.conf permissions-lab/configs/readme.txt
private.conf が 600、readme.txt が 644 になっているはずです。
シンボリック指定による chmod でのスクリプト実行許可
このステップでは、シンボリックモードを使用して権限を設定します。シンボリックモードを使用すると、数値モード全体を書き換えることなく、特定の権限を追加または削除できます。
プロジェクトディレクトリから開始します。
cd /home/labex/project
変更前にスクリプトを確認します。読み取り可能ですが、実行権限はないはずです。
ls -l permissions-lab/scripts/check-inventory.sh
所有者とグループに実行権限を追加します。u+x,g+x において、u はユーザー、g はグループ、+x は実行権限の追加を意味します。
chmod u+x,g+x permissions-lab/scripts/check-inventory.sh
パスを指定してスクリプトを実行します。
permissions-lab/scripts/check-inventory.sh
期待される出力:
inventory check ok
最終的なモードを確認します。ユーザーとグループに実行ビットが含まれているはずです。
stat -c '%n %a' permissions-lab/scripts/check-inventory.sh
引き継ぎファイルの所有権変更
このステップでは、sudo chown を使用して root 所有のファイルの所有権を取得します。所有権の変更には通常管理者権限が必要なため、この練習用ファイルでは sudo を使用します。
プロジェクトディレクトリから開始します。
cd /home/labex/project
現在の所有者とグループを確認します。ファイルは初期状態で root:root です。
stat -c '%n %U:%G %a' permissions-lab/shared/handoff.txt
所有者とグループを labex:labex に変更します。user:group 形式を使用すると、1 つのコマンドで両方のフィールドを設定できます。
sudo chown labex:labex permissions-lab/shared/handoff.txt
ファイルを所有者の読み取り/書き込み、グループの読み取りのみに制限します。
chmod 640 permissions-lab/shared/handoff.txt
labex がファイルを所有したため、操作ログを 1 行追記します。
printf 'Handled by labex after ownership update.\n' >> permissions-lab/shared/handoff.txt
最終的な所有者、グループ、モード、および内容を確認します。
stat -c '%n %U:%G %a' permissions-lab/shared/handoff.txt
cat permissions-lab/shared/handoff.txt
setgid を使用した共有ディレクトリの構成
このステップでは、共有ディレクトリを構成します。ディレクトリにアクセスして検索するには、実行権限が必要です。ディレクトリに setgid ビットを設定すると、そのディレクトリ内に作成された新しいファイルはディレクトリのグループを継承するようになり、チームで共有コンテンツのグループを一貫して管理するのに役立ちます。
プロジェクトディレクトリから開始します。
cd /home/labex/project
現在のディレクトリモードを確認します。
stat -c '%n %a %U:%G' permissions-lab/teamdrop
ディレクトリモードを 2775 に設定します。先頭の 2 は setgid を有効にし、775 は所有者とグループにフルアクセスを、その他に読み取り/実行権限を与えます。
chmod 2775 permissions-lab/teamdrop
共有ディレクトリ内にファイルを作成します。
printf 'team handoff ready\n' > permissions-lab/teamdrop/status.txt
所有者とグループが読み取り/書き込みできるようにファイルモードを設定します。
chmod 664 permissions-lab/teamdrop/status.txt
ディレクトリと新しいファイルを確認します。
stat -c '%n %a %U:%G' permissions-lab/teamdrop permissions-lab/teamdrop/status.txt
cat permissions-lab/teamdrop/status.txt
まとめ
RHCSA 試験対策として、標準的な Linux の権限と所有権の管理を練習しました。権限フィールドの確認、数値によるファイルモードの適用、シンボリック chmod を使用したスクリプト実行の有効化、sudo chown による所有権の変更、安全なファイルモードの設定、そして新しいファイルが意図したグループを継承するように setgid 共有ディレクトリを構成する方法を習得しました。



