概要
ファイルやディレクトリのモードを変更します。数値表記と記号表記の両方を使い分けられることが重要です。
基本構文
chmod [オプション]... モード ファイル...
chmod [オプション]... 8進数モード ファイル...
chmod [オプション]... --reference=参照ファイル 対象ファイル...詳細解説
chmodは、ファイルやディレクトリに設定されたアクセス権を変更するコマンドです。誰が読めるか、書けるか、実行できるかを制御し、Linuxの権限管理の土台を成します。
数値表記は一気に状態を決める時に向き、記号表記は既存権限へ追加や削除を行う時に向きます。試験でも実務でも両方を読めることが重要です。
ディレクトリに対する実行権は、中に入れる、名前解決できるという意味を持つため、通常ファイルの実行権とは解釈が異なります。
このコマンドを使う場面
スクリプトへ実行権を付ける時、公開ディレクトリの権限を整える時、秘密情報を所有者だけに読ませたい時に使います。
まず安全に試す方法
1. printf "echo hellon" > hello.sh
2. ls -l hello.sh
3. chmod u+x hello.sh
4. ls -l hello.sh
5. chmod 600 hello.sh
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
chmod u+xで権限表記の変化を確認します。
-
644、600、755の違いを説明できるようにします。
資格試験との関連
-
LinuC レベル1
範囲: 1.02.1 ファイルの所有者とパーミッション根拠: officialLinuCレベル1では、所有者、グループ、パーミッション、生成時マスクの理解が重要です。
-
LPIC-1
範囲: 104.5 Manage file permissions and ownership根拠: officialLPIC-1では、所有者、グループ、モード、生成時マスクの理解が重要です。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorial試験横断で、chmodはLinux運用の基礎体力を支える重要なコマンドです。
実行結果サンプル
-
printf "echo hellon" > hello.sh ls -l hello.sh chmod u+x hello.sh ls -l hello.sh-rw-r--r-- ... hello.sh -rwxr--r-- ... hello.sh -
chmod 600 hello.sh ls -l hello.sh-rw------- ... hello.sh
戻り値コード
- 0 正常終了。権限変更に成功しました。
- >0 権限不足、対象不存在、不正なモード指定などで変更できませんでした。
使用例
chmod 644 config.inichmod u+x deploy.shchmod -R 750 appdirchmod --reference=base.conf target.conf
よくあるエラー
-
Permission deniedになる 原因: 実行権や親ディレクトリの通過権が不足しています。対処: 対象ファイルだけでなく配置ディレクトリも確認します。
-
再帰変更後に動かなくなった 原因: 広すぎる、または狭すぎる権限を一括適用しました。対処: 変更前後を比較し、対象を絞って再適用します。
導入・互換性情報
POSIXで基本機能は標準化されています。GNU実装では--referenceなどの拡張があります。シンボリックリンクの扱いは実装差が出やすい分野です。
注意点 / セキュリティリスク
危険度は中程度です。広すぎる権限は情報漏えい、狭すぎる権限は動作不良の原因になります。特に再帰変更は影響範囲が大きいため慎重に扱います。
FAQ
-
Q. 644と755は何が違いますか。 A. 644は通常ファイル向け、755は実行ファイルや公開ディレクトリでよく使われます。
-
Q. ディレクトリのx権限は実行ですか。 A. ディレクトリでは中へ入る、名前を解決するという意味になります。
関連用語
参照リンク
- カテゴリー: Permissions And Ownership
- レベル: Basic
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎