chmod コマンドは、ファイルとディレクトリのモードビットを変更します。通常、この変更を行えるのはファイル所有者か、必要な特権を持つプロセスだけです。chmod の実行前後に ls -l で現在のモードを確認してください。
パーミッション · レッスン 2
権限の変更
シンボリック形式と8進形式の `chmod` を使って、Linux の権限ビットを変更する方法を学びます。
シンボリック形式を使う
シンボリック形式では、変更する権限クラス、変更方法、対象の権限を指定します。
uは所有者クラスを選びます。gはグループクラスを選びます。oはその他クラスを選びます。aは三つのクラスすべてを選びます。+は権限を追加し、-は削除し、=は選択したクラスを厳密に設定します。
たとえば、所有者へ実行権限を追加します。
$ chmod u+x myfile
グループから書き込み権限を削除します。
$ chmod g-w myfile
所有者とグループの両方へ書き込み権限を追加します。
$ chmod ug+w myfile
複数の指定はコンマで区切れます。次のコマンドは所有者を読み書き、グループを読み取りのみ、その他を権限なしへ設定します。
$ chmod u=rw,g=r,o= myfile
chmod +x myfile のようにクラスを省略すると、どのクラスが変更されるかにプロセスの umask が影響します。クラスを明記すれば、意図した結果を確認しやすくなります。
ほかのグループ権限ビットを変えず、グループの書き込み権限を削除するシンボリック形式はどれですか?
8進形式を使う
8進形式では、各基本権限トリプレットを1桁で設定します。各クラス内で次の値を足します。
4: 読み取り2: 書き込み1: 実行0: 権限なし
右端の3桁は、所有者、グループ、その他をこの順で表します。例を示します。
$ chmod 755 myfile
モード 755 は次のように展開できます。
- 所有者の
7は4 + 2 + 1、つまりrwx。 - グループの
5は4 + 1、つまりr-x。 - その他の
5は4 + 1、つまりr-x。
+ や - によるシンボリック操作と異なり、8進形式は通常権限の完全な組を指定します。特殊モードビットに使う任意の先頭桁は、後のレッスンで扱います。
読み取り権限を表す8進値はどれですか?
chmod 640 report はどの通常権限を設定しますか?
安全に変更を適用する
ユーザーとサービスに必要なアクセスだけを与えます。chmod 777 は各クラスへ読み取り、書き込み、実行を与え、所有権、ディレクトリ探索、ACL、サービスのポリシーといった原因を解決せずに危険だけを増やすことが多いため、トラブルシューティングの近道として使ってはいけません。
再帰的な変更には特に注意が必要です。対象ツリーを事前に確認し、シンボリックリンクとマウント済みファイルシステムを考慮し、小さな範囲でテストしてから chmod -R を使います。変更後は、意図したオブジェクトへ影響したと仮定せず、結果のモードを検証してください。
chmod 777 がアクセス問題への一般的な解決策として不適切なのはなぜですか?
隔離された環境で実践するには、Linux のユーザー、グループ、ファイルパーミッションラボを使い、変更前後の各モードを確認してください。
レッスン完了
権限の変更 を完了しました
意図を明確にした chmod 式で、Linux の通常モードビットを変更できるようになりました。
対象を絞った追加、削除、代入にはシンボリック形式を使う。
読み取り
4、書き込み2、実行1から8進数の各桁を組み立てる。8進数のクラスを所有者、グループ、その他の順に読む。
変更を検証し、必要な最小権限を適用する。