はじめに
こんにちは!今回はchmodコマンドについて解説します。
chmodはファイルやディレクトリのアクセス権限(パーミッション)を変更するコマンドです。「読む」「書く」「実行する」の権限を、所有者・グループ・その他のユーザーに対して設定します。
セキュリティの基本となるコマンドで、Linuxを使う上では絶対に押さえておきたいですね。権限設定がないと、大事なファイルが誰からでも見られてしまったり、修正されてしまったりするので要注意です。
chmodコマンドとは
chmodは、ファイルやディレクトリのアクセス権限を変更する外部コマンドです。“change mode"の略ですね。
Linuxではすべてのファイルに権限が設定されており、誰がそのファイルに対して「読む・書く・実行する」ができるかが決まっています。この権限を変更したい時にchmodを使います。
権限の設定方法は2つあります:
- 数字モード(オクタル記法):
chmod 755 file.txtのように数字で指定 - シンボルモード:
chmod u+x file.txtのように文字で指定
基本構文
|
|
モードの指定方法:
- 数字モード:
chmod 755 file.txt(推奨) - シンボルモード:
chmod u+rwx file.txt
主なオプション
| オプション | 説明 |
|---|---|
-R |
ディレクトリと中身を再帰的に変更 |
-v |
詳細表示(変更内容を表示) |
-c |
変更があった場合のみ表示 |
--reference=FILE |
別のファイルの権限を参考にして設定 |
数字モード(オクタル記法)の理解
権限は3桁の数字で表します:
|
|
各桁の説明:
- 1番目(所有者):ファイルの所有者
- 2番目(グループ):ファイルが属するグループ
- 3番目(その他):その他すべてのユーザー
各権限の数値:
- 4(r):読む(read)
- 2(w):書く(write)
- 1(x):実行する(execute)
組み合わせ例:
7 = 4 + 2 + 1 = rwx(読む+書く+実行)6 = 4 + 2 = rw-(読む+書く)5 = 4 + 1 = r-x(読む+実行)4 = r--(読むのみ)0 = ---(権限なし)
使用例
例1: 数字モードで所有者のみ読み書き可能にする
|
|
実行結果:
|
|
secret.txtを所有者のみ読み書き可能(rw-------)に設定します。グループとその他は一切アクセスできません。機密情報を含むファイルに最適です。
例2: スクリプトを実行可能にする
|
|
実行結果:
|
|
script.shを実行可能に設定します。所有者は読む・書く・実行、グループとその他は読む・実行ができます。これが最も一般的な設定ですね。
例3: ディレクトリ内のすべてのファイルを一括変更
|
|
実行結果:
|
|
myprojectディレクトリ配下のすべてのファイル・ディレクトリに対して755を一括適用します。-R(再帰)オプションでサブディレクトリも処理されます。
例4: シンボルモードで所有者に実行権限を追加
|
|
実行結果:
|
|
現在の権限に加えて、所有者(u)に実行権限(x)を追加します。既存の権限を保ったまま変更できるので便利です。
例5: グループから書き込み権限を削除
|
|
実行結果:
|
|
グループ(g)から書き込み権限(w)を削除します。読む・実行の権限は変わりません。
例6: その他のユーザーから権限をすべて削除
|
|
実行結果:
|
|
その他(o)のすべての権限を削除します。所有者とグループのみアクセス可能になります。
例7: 複数のユーザーに権限を付与
|
|
実行結果:
|
|
複数の変更を同時に実行:
- 所有者に読む・書く・実行を追加
- グループに読む・実行を追加
- その他から読む・書く・実行をすべて削除
例8: Webサーバーディレクトリの標準権限設定
|
|
実行結果:
|
|
HTMLファイルは読むのみ(644)、PHPファイルは読む・実行(755)に設定します。Webサーバーの実行ファイルと静的ファイルで権限を分けます。
例9: 詳細表示付きで確認しながら変更
|
|
実行結果:
|
|
-vオプションで変更内容を表示します。大量のファイルを変更する時に便利です。
例10: 別ファイルの権限を参考にして設定
|
|
実行結果:
|
|
template.txtと同じ権限をnewfile.txtに適用します。テンプレートファイルに合わせて権限を設定したい時に便利です。
Tips・注意点
シンボルモードとオクタルモードの使い分け
|
|
オクタルモードは既存の権限を完全に上書きします。シンボルモードは特定の権限だけ追加・削除できるので、既存設定を保ちたい時に便利です。
よくある間違い:ファイルと実行ファイルを区別
|
|
実行ファイルには必ずx(実行権限)が必要です。単に644では実行できません。
セキュリティ注意:過度な権限は避ける
|
|
777(完全オープン)は、よほど理由がない限り使わないでください。セキュリティリスクです。
ディレクトリ権限の意味
|
|
ディレクトリではファイルとは異なる意味を持ちます。アクセスできなくなるので注意!
実践的な使い方
バックアップファイルを保護する
|
|
バックアップファイルを所有者のみが読める状態に変更。重要なデータの漏洩を防ぎます。
シェルスクリプトを実行可能にする
|
|
作成したシェルスクリプトを実行可能にします。u+xと+xは同じですが、後者は所有者・グループ・その他のユーザーすべてに実行権限を付与します。
Webプロジェクトの権限設定(典型例)
|
|
Webアプリケーションの一般的な権限設定です。ファイルタイプに応じて適切に分ける必要があります。
プロジェクト全体を一括設定
|
|
-Rとfindを組み合わせて、ディレクトリとファイルで異なる権限を設定できます。Xは「実行権限を持つファイルのみ」という意味です。
まとめ
chmodコマンドのポイント:
- 数字モードが標準:
chmod 755 file.txt - 4=読む、2=書く、1=実行(合計で権限を表現)
- -R:ディレクトリを再帰的に変更
- 実行ファイルには
755、静的ファイルには644が基本 - 777は危険:セキュリティ上よほど理由がない限り使わない
- よく使う組み合わせ:
chmod 755,chmod 644,chmod 600,chmod +x
Linuxのセキュリティを守る重要なコマンドです。ファイルタイプ別の標準的な権限設定を覚えておくと、トラブル知らずですよ!