Linux, コマンド · 1 min read · Sep 14, 2025
初心者のためのLinux chmodコマンドチュートリアル

Linuxのchmodコマンドは、Linuxベースのオペレーティングシステムにおけるファイルおよびディレクトリの権限を変更するために使用されます。これにより、ユーザーは権限設定を変更することで、誰がファイルを読み書きまたは実行できるかを定義できます。権限は通常、ファイルの所有者、ファイルが属するグループ、および他のユーザー(他のすべての人)という3つのカテゴリに割り当てられます。chmodコマンドは、シンボリック表記(例:chmod u+x filenameはユーザーに実行権限を追加)または数値表記(例:chmod 755 filenameは各カテゴリに特定の読み取り、書き込み、および実行権限を設定)で使用できます。このコマンドは、システム上のアクセス制御を管理するために不可欠であり、ファイルおよびディレクトリが適切なセキュリティ設定を持つことを保証します。
このチュートリアルで言及されているすべての例と指示は、Ubuntu 24.04でテストされており、使用したchmodのバージョンは8.25です。
Chmodの基本
次のlsコマンドの例を考えてみましょう:

出力の最初の列が私たちの関心の対象です。最初の’-‘(ファイルの種類を示す)を除外します。この列の残りのフィールドは、rw-、rw-、およびr–に分解できます。これらは、ファイルの所有者、ファイルが属するグループ、および他のユーザーがこのファイルに対して持つ権限です。
これは、所有者が読み取り(r)および書き込み(w)権限を持ち、グループも同様であることを意味します。しかし、他のユーザーはファイルに対して読み取り権限のみを持っています。現在のユーザーがファイルを所有していると仮定していますのでご注意ください。
さて、すべての人にこのファイルを実行する権利を与える必要があるとしましょう。これを行う方法は次のとおりです:
chmod +x script.sh現在の権限は次のとおりです:

所有者、グループ、および他のユーザーの権限に追加された’x’は、すべての人がこのファイルに対して実行アクセスを持つことを示しています。
しかし、ほとんどの場合、すべての人にファイルの実行アクセスを持たせたくないかもしれません。もし、所有者/現在のユーザーにのみscript.shの実行アクセスを与える必要がある場合は、最初のステップは、すべての人から実行アクセスを取り戻すことになります。これを行うには、次のコマンドを使用できます:
chmod -x script.shそして、所有者に明示的に与えます:
chmod u+x script.shご想像の通り、’u+x’は所有者/現在のユーザー(u)にファイルへの実行(x)アクセスを付与することを示しています。同様に、グループには’g’を使用し、他のユーザーには’o’を使用できます。
すべてのユーザーに共通の権限を付与/取り消したい場合は、’ugo’の代わりに’a’を使用できます。つまり、次のようになります:
chmod ugo-x script.shこれは次のように置き換えることができます:
chmod a-x script.shまた、これらのいずれか(’u’、’g’、’o’、および’a’)が明示的に指定されていない場合も、デフォルトは’a’と見なされます。
さらに進むと、所有者/現在のユーザーに付与された権限をグループまたは他のユーザーにコピーすることもできます。この場合は、記号’=’を使用します。
たとえば、所有者/ユーザーの権限をグループにコピーするには、次のコマンドを使用します:
chmod g=u script.sh別のシナリオとして、特定のファイルの権限をコピーして自分のファイルに適用することもできます。この場合は、–referenceコマンドラインオプションを使用します。このコマンドラインオプションを使用するための一般的なテンプレートは次のとおりです:
chmod --reference=[source-file] [destination file]上記のコマンドでは、source-fileはコピーしたい権限ビットを持つファイルであり、destination-fileは権限ビットを変更したいファイルです。
さらに進むと、chmodに権限を変更するように指示できる数値表記(8進数表現とも呼ばれる)もあります。このモードでは、4、2、および1の3つの数字を操作します。4は読み取り用で、他の2つはそれぞれ書き込みと実行用です。
たとえば、次の例を考えてみましょう:

さて、所有者/ユーザーに実行権限を追加し、書き込み権限を削除し、グループに実行権限を追加し、他のユーザーからすべての権限を削除するというタスクがあるとします。これは次のように行うことができます:
chmod 750 script.sh上記のコマンドでは、’7’はユーザー用で、ユーザーにすべての権限を持たせるための4+2+1の結果です。同様に、’5’はグループ用で、グループに読み取りおよび実行権限のみを与えるための4+0+1の結果です。最後に、’0’は他のユーザー用で、すべての権限を取り消すための0+0+0の結果です。
シンボリックリンクを扱う場合、知っておくべきことがあります:
chmodはシンボリックリンクの権限を変更しません。chmodシステムコールはその権限を変更できません。これは問題ではありません。なぜなら、シンボリックリンクの権限は決して使用されないからです。しかし、コマンドラインにリストされた各シンボリックリンクについて、chmodは指し示すファイルの権限を変更します。対照的に、chmodは再帰的なディレクトリトラバーサル中に遭遇したシンボリックリンクを無視します。コマンドラインリファレンス
Linuxのchmodコマンドには、その動作を変更するいくつかのコマンドラインオプションがあります。以下は、最も一般的に使用されるオプションのリストです:
- -R, –recursive: このオプションは、指定されたディレクトリ内のすべてのファイルおよびディレクトリに再帰的に権限変更を適用します。これは、ディレクトリとその内容の権限を一度に変更したい場合に便利です。
例: chmod -R 755 /path/to/directory
- -c, –changes: このオプションは、変更が行われたときのみ報告します。権限が正常に変更された場合、変更を示すメッセージを出力します。
例: chmod -c 644 filename
- -v, –verbose: このオプションは、処理された各ファイルについて、権限が変更されたかどうかに関係なく詳細情報を提供します。
例: chmod -v 755 filename
- -reference=RFILE: 権限を直接指定する代わりに、このオプションを使用すると、ファイルまたはディレクトリの権限を別のファイルまたはディレクトリ(RFILE)に合わせることができます。
例: chmod –reference=file1 file2
- -f, –silent, –quiet: このオプションは、ほとんどのエラーメッセージを抑制し、エラーの出力を表示せずにコマンドを実行します。
例: chmod -f 755 filename
これらのオプションにより、chmodは単一ファイルの調整から大規模なディレクトリ権限の変更まで、さまざまなシナリオで柔軟に使用できます。
結論
このチュートリアルでは、このツールに関連する基本的な内容のほとんどを説明し、議論した例はその基本を明確にすることを目的としています。
私たちの議論は主にファイルに焦点を当てていますが、ディレクトリでchmodを使用する際にはいくつかの詳細に留意する必要があります。そのすべての情報(およびchmodに関する詳細情報)については、ツールのmanページにアクセスしてください。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。