chmodコマンドとは、Linuxでファイルやディレクトリの権限を変更するためのコマンドです。
Linuxでは、ファイルを読める人、書き込める人、実行できる人を権限で管理しています。
たとえば、シェルスクリプトを実行したいのに「Permission denied」と表示されたり、設定ファイルを編集できなかったりすることがあります。
そのような場面で関係するのが、ファイルやディレクトリの権限です。
chmodコマンドを使うと、読み取り権限、書き込み権限、実行権限を変更できます。
この記事では、Linux初心者向けにchmodコマンドの意味、基本的な使い方、r・w・xの意味、数字指定、記号指定、chmod 755、chmod 644、chmod 777の意味、よくあるエラーまでわかりやすく解説します。
- chmodコマンドとは?
- Linuxの権限とは?
- chmodコマンドを使う前にls -lで権限を確認する
- ls -lの権限表示の見方
- 所有者・グループ・その他とは?
- chmodコマンドの基本的な使い方
- chmodコマンドを使う基本の流れ
- chmod +xで実行権限を追加する
- chmod -xで実行権限を外す
- chmod u+xで所有者に実行権限を追加する
- chmod g+wでグループに書き込み権限を追加する
- chmod o-rでその他ユーザーの読み取り権限を外す
- chmod a+rで全員に読み取り権限を追加する
- chmodの記号指定まとめ
- chmodの数字指定とは?
- chmodの数字の意味
- chmod 755の意味
- chmod 644の意味
- chmod 600の意味
- chmod 700の意味
- chmod 777の意味と注意点
- chmodでディレクトリの権限を変更する
- chmod -Rでディレクトリ配下をまとめて変更する
- chmod -Rを使うときの注意点
- chmodでよく使う権限一覧
- chmodとchownの違い
- chmodとumaskの違い
- chmodコマンドでよくあるエラー・つまずき
- chmodコマンドで権限変更できないときの確認ポイント
- chmodコマンドを安全に使うコツ
- chmodコマンドを使った練習手順
- chmodコマンドを覚えると何ができるようになる?
- chmodコマンドのよくある質問
- まとめ
chmodコマンドとは?
chmodコマンドとは、Linuxでファイルやディレクトリの権限を変更するためのコマンドです。
chmodは「change mode」の略です。
modeは、Linuxにおけるファイルの権限や状態を表す言葉として使われます。
たとえば、script.shというシェルスクリプトに実行権限を付けたい場合は、次のように実行します。
chmod +x script.sh
これにより、script.shを実行できるようになります。
chmodは、Linuxの権限管理を理解するうえで重要な基本コマンドです。
Linuxの権限とは?
Linuxの権限とは、ファイルやディレクトリに対して「誰が何をできるか」を決める仕組みです。
主に次の3つの操作が権限として管理されます。
| 権限 | 記号 | 意味 |
|---|---|---|
| 読み取り | r | ファイルの中身を読む、ディレクトリ内を参照する |
| 書き込み | w | ファイルを変更する、ディレクトリ内に作成・削除する |
| 実行 | x | ファイルを実行する、ディレクトリに入る |
このr、w、xを組み合わせて、ファイルやディレクトリの操作可否を決めます。
chmodコマンドを使う前にls -lで権限を確認する
chmodを使う前には、まずls -lで現在の権限を確認しましょう。
ls -l script.sh
たとえば、次のように表示されたとします。
-rw-r--r-- 1 user user 120 Jul 10 10:00 script.sh
先頭の-rw-r–r–の部分が権限を表しています。
この表示を理解できると、chmodで何を変更すればよいか判断しやすくなります。
ls -lの権限表示の見方
ls -lで表示される権限は、次のような形になっています。
-rw-r--r--
最初の1文字は、ファイルの種類を表します。
その後の9文字は、所有者、グループ、その他のユーザーの権限を表します。
- rw- r-- r--
所有者 グループ その他
| 部分 | 意味 |
|---|---|
| 1文字目 | ファイルの種類 |
| 2〜4文字目 | 所有者の権限 |
| 5〜7文字目 | グループの権限 |
| 8〜10文字目 | その他のユーザーの権限 |
たとえば、-rw-r–r–は、所有者は読み書きでき、グループとその他のユーザーは読み取りだけできる状態です。
所有者・グループ・その他とは?
Linuxの権限は、誰に対する権限かによって3つに分かれます。
| 区分 | 記号 | 意味 |
|---|---|---|
| 所有者 | u | そのファイルの持ち主 |
| グループ | g | そのファイルに設定されたグループ |
| その他 | o | 所有者でもグループでもないユーザー |
| 全員 | a | u、g、oすべて |
chmodでは、u、g、o、aを使って、誰の権限を変更するか指定できます。
chmodコマンドの基本的な使い方
chmodコマンドの基本形は次の通りです。
chmod 権限 ファイル名
たとえば、script.shに実行権限を追加する場合は、次のように実行します。
chmod +x script.sh
権限を変更したあと、ls -lで確認します。
ls -l script.sh
実行権限が追加されると、xが表示されます。
-rwxr-xr-x 1 user user 120 Jul 10 10:00 script.sh
chmodを使ったら、必ずls -lで変更結果を確認すると安全です。
chmodコマンドを使う基本の流れ
Linux初心者は、chmodを単体で覚えるよりも、ls、touch、echo、catとセットで覚えると理解しやすいです。
基本の流れは次の通りです。
pwd
touch script.sh
ls -l script.sh
chmod +x script.sh
ls -l script.sh
まずpwdで現在地を確認します。
touchで練習用ファイルを作成します。
ls -lで現在の権限を確認します。
chmodで権限を変更します。
最後にもう一度ls -lで変更後の権限を確認します。
この流れを覚えると、権限変更の前後を比較しながらchmodを理解できます。
chmod +xで実行権限を追加する
chmodで特によく使うのが、+xです。
+xは、実行権限を追加する指定です。
chmod +x script.sh
シェルスクリプトを実行しようとしてPermission deniedが出る場合、実行権限がないことがあります。
たとえば、次のように実行したとします。
./script.sh
次のように表示される場合があります。
bash: ./script.sh: Permission denied
この場合は、ls -lで実行権限を確認します。
ls -l script.sh
実行権限がない場合は、chmod +xで追加できます。
chmod +x script.sh
chmod -xで実行権限を外す
chmod -xを使うと、実行権限を外せます。
chmod -x script.sh
実行させたくないファイルから実行権限を外したい場合に使えます。
変更後はls -lで確認しましょう。
ls -l script.sh
xが消えていれば、実行権限が外れています。
chmod u+xで所有者に実行権限を追加する
chmodでは、誰に対して権限を変更するか指定できます。
所有者だけに実行権限を追加したい場合は、u+xを使います。
chmod u+x script.sh
uは所有者を表します。
このコマンドでは、script.shの所有者にだけ実行権限を追加します。
chmod g+wでグループに書き込み権限を追加する
グループに書き込み権限を追加したい場合は、g+wを使います。
chmod g+w sample.txt
gはグループを表します。
wは書き込み権限を表します。
このコマンドでは、sample.txtに対して、グループの書き込み権限を追加します。
chmod o-rでその他ユーザーの読み取り権限を外す
その他のユーザーから読み取り権限を外したい場合は、o-rを使います。
chmod o-r sample.txt
oはその他のユーザーを表します。
rは読み取り権限を表します。
このコマンドでは、所有者でもグループでもないユーザーの読み取り権限を外します。
chmod a+rで全員に読み取り権限を追加する
全員に読み取り権限を追加したい場合は、a+rを使います。
chmod a+r sample.txt
aはallの意味で、所有者、グループ、その他すべてを表します。
このコマンドでは、全員に読み取り権限を追加します。
chmodの記号指定まとめ
chmodの記号指定では、誰に対して、どの権限を、追加・削除・設定するかを指定します。
| 記号 | 意味 | 例 |
|---|---|---|
| u | 所有者 | chmod u+x file |
| g | グループ | chmod g+w file |
| o | その他 | chmod o-r file |
| a | 全員 | chmod a+r file |
| + | 権限を追加する | chmod +x file |
| – | 権限を外す | chmod -w file |
| = | 権限を指定内容にする | chmod u=rw file |
初心者は、まずchmod +x、chmod u+x、chmod g+w、chmod o-rを覚えると理解しやすいです。
chmodの数字指定とは?
chmodでは、数字を使って権限を指定する方法もあります。
たとえば、次のようなコマンドです。
chmod 755 script.sh
数字指定では、読み取り、書き込み、実行をそれぞれ数値で表します。
| 権限 | 記号 | 数字 |
|---|---|---|
| 読み取り | r | 4 |
| 書き込み | w | 2 |
| 実行 | x | 1 |
この数字を足し合わせて権限を表します。
読み取りと書き込みなら4+2で6です。
読み取りと実行なら4+1で5です。
読み取り、書き込み、実行すべてなら4+2+1で7です。
chmodの数字の意味
chmodの数字指定では、3桁の数字で所有者、グループ、その他の権限を表します。
chmod 755 file
755の場合、左から順に次の意味です。
| 数字 | 対象 | 権限 | 意味 |
|---|---|---|---|
| 7 | 所有者 | rwx | 読み取り・書き込み・実行 |
| 5 | グループ | r-x | 読み取り・実行 |
| 5 | その他 | r-x | 読み取り・実行 |
つまりchmod 755は、所有者はすべて操作でき、グループとその他は読み取りと実行だけできる状態です。
chmod 755の意味
chmod 755は、実行ファイルやディレクトリでよく使われる権限です。
chmod 755 script.sh
755は次の権限を表します。
rwxr-xr-x
所有者は読み取り、書き込み、実行ができます。
グループとその他のユーザーは、読み取りと実行ができます。
シェルスクリプトや公開ディレクトリなどで見かけることがあります。
ただし、どのファイルにも無条件で755を付ければよいわけではありません。
必要な範囲にだけ権限を付けることが大切です。
chmod 644の意味
chmod 644は、通常のテキストファイルや設定ファイルでよく見かける権限です。
chmod 644 sample.txt
644は次の権限を表します。
rw-r--r--
所有者は読み取りと書き込みができます。
グループとその他のユーザーは読み取りだけできます。
実行する必要がない通常ファイルでは、644が使われることがあります。
chmod 600の意味
chmod 600は、所有者だけが読み書きできる権限です。
chmod 600 secret.txt
600は次の権限を表します。
rw-------
所有者は読み取りと書き込みができます。
グループとその他のユーザーには権限がありません。
秘密鍵や認証情報など、他のユーザーに読まれたくないファイルで使われることがあります。
chmod 700の意味
chmod 700は、所有者だけが読み取り、書き込み、実行できる権限です。
chmod 700 script.sh
700は次の権限を表します。
rwx------
所有者だけがすべての操作を行えます。
グループとその他のユーザーには権限がありません。
自分だけが実行したいスクリプトなどで使われることがあります。
chmod 777の意味と注意点
chmod 777は、全員に読み取り、書き込み、実行を許可する権限です。
chmod 777 file
777は次の権限を表します。
rwxrwxrwx
所有者、グループ、その他のユーザー全員が、読み取り、書き込み、実行できます。
一見便利に見えますが、非常に危険な権限です。
誰でも変更できる状態になるため、サーバー上では安易に使うべきではありません。
「Permission deniedが出たからとりあえずchmod 777」は避けましょう。
必要な相手に、必要な権限だけを付けることが大切です。
chmodでディレクトリの権限を変更する
chmodは、ファイルだけでなくディレクトリにも使えます。
たとえば、logsディレクトリの権限を755にする場合は、次のように実行します。
chmod 755 logs
ディレクトリの実行権限xは、ディレクトリに入るための権限として重要です。
ファイルのxは実行権限ですが、ディレクトリのxは中へ移動したり、中のファイルへアクセスしたりするために必要です。
ディレクトリでは、xの意味が少し違う点に注意しましょう。
chmod -Rでディレクトリ配下をまとめて変更する
chmod -Rを使うと、ディレクトリ配下のファイルやディレクトリの権限をまとめて変更できます。
chmod -R 755 logs
-Rはrecursiveの意味で、再帰的に変更するオプションです。
logsディレクトリと、その中にあるファイルやサブディレクトリにも権限変更が適用されます。
ただし、chmod -Rは影響範囲が広いため注意が必要です。
間違った場所で実行すると、多くのファイルの権限を一括で変えてしまいます。
実行前には必ずpwdとlsで場所を確認しましょう。
pwd
ls -ld logs
ls -l logs
chmod -Rを使うときの注意点
chmod -Rは便利ですが、初心者が安易に使うと危険です。
理由は、ディレクトリ配下のすべてに権限変更がかかるからです。
たとえば、次のようなコマンドはlogs配下をすべて777にします。
chmod -R 777 logs
これは、logs配下にあるファイルやディレクトリを誰でも変更できる状態にする可能性があります。
権限エラーを解決するために、意味を理解せずchmod -R 777を使うのは避けましょう。
まずは対象ファイルやディレクトリをls -lで確認し、必要な箇所だけ変更するのがおすすめです。
chmodでよく使う権限一覧
chmodでよく使われる数字指定をまとめると、次の通りです。
| 指定 | 権限表示 | 意味 | よく使う場面 |
|---|---|---|---|
| 600 | rw——- | 所有者だけ読み書き | 秘密鍵、認証情報 |
| 644 | rw-r–r– | 所有者は読み書き、他は読み取り | 通常ファイル |
| 700 | rwx—— | 所有者だけすべて可能 | 個人用スクリプト |
| 755 | rwxr-xr-x | 所有者はすべて、他は読み取りと実行 | 実行ファイル、ディレクトリ |
| 777 | rwxrwxrwx | 全員がすべて可能 | 基本的に安易に使わない |
初心者は、644、755、600、700の意味を優先して覚えるとよいです。
chmodとchownの違い
chmodと似たコマンドに、chownがあります。
chmodは、ファイルやディレクトリの権限を変更するコマンドです。
chownは、所有者やグループを変更するコマンドです。
| コマンド | 変更するもの | 例 |
|---|---|---|
| chmod | 権限 | chmod 755 script.sh |
| chown | 所有者・グループ | chown user:user file |
権限を変えるならchmodです。
所有者を変えるならchownです。
Permission deniedの原因が権限なのか所有者なのかによって、使うコマンドが変わります。
chmodとumaskの違い
chmodは、既に存在するファイルやディレクトリの権限を変更するコマンドです。
umaskは、新しく作成されるファイルやディレクトリの初期権限に影響する設定です。
| 項目 | 役割 |
|---|---|
| chmod | 既存の権限を変更する |
| umask | 新規作成時の権限に影響する |
初心者は、まずchmodで既存ファイルの権限変更を理解し、その後にumaskを学ぶとよいです。
chmodコマンドでよくあるエラー・つまずき
chmodコマンドを使っていると、エラーやつまずきが発生することがあります。
初心者がよく遭遇するポイントを確認しておきましょう。
Permission denied
Permission deniedは、「権限がありません」という意味です。
chmodで権限を変更しようとしても、対象ファイルを変更する権限がない場合に表示されることがあります。
chmod 755 /root/script.sh
chmod: changing permissions of '/root/script.sh': Permission denied
この場合、現在のユーザーにそのファイルの権限を変更する権限がありません。
まずls -lで所有者を確認しましょう。
ls -l /root/script.sh
自分が所有していないファイルの権限変更には、管理者権限が必要な場合があります。
No such file or directory
No such file or directoryは、「そのようなファイルやディレクトリはありません」という意味です。
存在しないファイルを指定すると、次のようなエラーが表示されることがあります。
chmod +x script.sh
chmod: cannot access 'script.sh': No such file or directory
この場合、script.shが現在のディレクトリに存在しない可能性があります。
まずpwdで現在地を確認し、lsでファイルがあるか確認しましょう。
pwd
ls -l
chmodしても実行できない
chmod +xを実行してもファイルを実行できない場合があります。
原因として、ファイルの中身が実行できる形式ではない、シェルスクリプトの先頭行が正しくない、実行パスの指定が間違っている、などが考えられます。
シェルスクリプトの場合、先頭に次のような行があるか確認します。
#!/bin/bash
また、現在のディレクトリにあるスクリプトを実行する場合は、次のように./を付けます。
./script.sh
chmod 777にしても解決しない
Permission deniedが出たからといって、chmod 777にすれば必ず解決するわけではありません。
所有者、実行方法、ディレクトリの権限、マウント設定、実行ファイルの内容など、別の原因があることもあります。
chmod 777は危険な権限なので、安易に使わないようにしましょう。
まずはls -lで権限を確認し、必要な権限だけを追加するのがおすすめです。
Operation not permitted
Operation not permittedは、「操作が許可されていません」という意味です。
ファイルの属性やシステムの制限により、chmodができない場合に表示されることがあります。
通常の初心者向け操作では頻繁に遭遇するものではありません。
ただし、システム領域や特殊なファイルでは、権限変更が制限されていることがあります。
chmodコマンドで権限変更できないときの確認ポイント
chmodコマンドで権限変更できないときは、次のポイントを確認しましょう。
- 現在地をpwdで確認したか
- 対象ファイルが存在しているか
- ls -lで現在の権限を確認したか
- 対象ファイルの所有者を確認したか
- 自分に権限変更する権限があるか
- ディレクトリに対する権限の意味を理解しているか
- chmod -Rの対象範囲を確認したか
- chmod 777を安易に使おうとしていないか
エラーが出たら、まず次のコマンドで現在地と対象ファイルの状態を確認すると原因を探しやすくなります。
pwd
ls -l
ls -ld ディレクトリ名
chmodコマンドを安全に使うコツ
chmodコマンドを安全に使うには、変更前後を確認することが大切です。
初心者は、次の流れを習慣にすると安心です。
pwd
ls -l ファイル名
chmod 権限 ファイル名
ls -l ファイル名
まずpwdで現在地を確認します。
ls -lで変更前の権限を確認します。
chmodで権限を変更します。
最後にls -lで変更後の権限を確認します。
特にchmod -Rを使う場合は、対象範囲を必ず確認してください。
pwd
ls -ld 対象ディレクトリ
find 対象ディレクトリ -maxdepth 2
権限変更は便利ですが、サーバーの安全性にも関わる操作です。
必要な範囲にだけ、必要な権限を設定しましょう。
chmodコマンドを使った練習手順
Linux初心者は、練習用ディレクトリでchmodコマンドを試すと理解しやすくなります。
次の手順で練習してみましょう。
1. ホームディレクトリへ移動する
cd
2. 練習用ディレクトリを作成する
mkdir chmod-practice
3. 練習用ディレクトリへ移動する
cd chmod-practice
4. 練習用スクリプトを作成する
echo '#!/bin/bash' > script.sh
echo 'echo "Hello chmod"' >> script.sh
5. 権限を確認する
ls -l script.sh
6. 実行権限を追加する
chmod +x script.sh
7. もう一度権限を確認する
ls -l script.sh
8. スクリプトを実行する
./script.sh
9. 数字指定で権限を変更する
chmod 644 script.sh
10. 権限を確認する
ls -l script.sh
この練習を行うと、実行権限の追加、数字指定、権限確認の流れをまとめて確認できます。
chmodコマンドを覚えると何ができるようになる?
chmodコマンドを覚えると、Linuxでファイルやディレクトリの権限を管理できるようになります。
具体的には、次のような作業に役立ちます。
- シェルスクリプトに実行権限を付ける
- 通常ファイルを644に設定する
- 実行ファイルやディレクトリを755に設定する
- 秘密鍵や認証情報を600に設定する
- 所有者だけが使えるファイルにする
- グループに書き込み権限を追加する
- その他ユーザーの読み取り権限を外す
- Permission deniedの原因を調べる
- chmod -Rで配下の権限をまとめて変更する
LinuxサーバーやVPSを扱う場合、権限管理は避けて通れません。
chmodコマンドを理解すると、ファイル操作やサーバー管理の安全性が高まります。
chmodコマンドのよくある質問
chmodコマンドは何に使いますか?
chmodコマンドは、Linuxでファイルやディレクトリの権限を変更するために使います。
読み取り、書き込み、実行の権限を設定できます。
chmodは何の略ですか?
chmodは「change mode」の略です。
ファイルやディレクトリの権限状態を変更するコマンドです。
chmod +xとは何ですか?
chmod +xは、実行権限を追加する指定です。
chmod +x script.sh
シェルスクリプトなどを実行できるようにしたい場合によく使います。
chmod 755とは何ですか?
chmod 755は、所有者に読み取り・書き込み・実行を許可し、グループとその他に読み取り・実行を許可する権限です。
rwxr-xr-x
実行ファイルやディレクトリで見かけることがあります。
chmod 644とは何ですか?
chmod 644は、所有者に読み取り・書き込みを許可し、グループとその他には読み取りだけを許可する権限です。
rw-r--r--
通常のテキストファイルや設定ファイルでよく見かけます。
chmod 777とは何ですか?
chmod 777は、全員に読み取り、書き込み、実行を許可する権限です。
rwxrwxrwx
非常に危険な設定なので、安易に使うべきではありません。
Permission deniedを解決するために、意味を理解せずchmod 777を使うのは避けましょう。
chmod 600とは何ですか?
chmod 600は、所有者だけが読み取りと書き込みをできる権限です。
rw-------
秘密鍵や認証情報など、他のユーザーに読ませたくないファイルで使われることがあります。
chmod 700とは何ですか?
chmod 700は、所有者だけが読み取り、書き込み、実行できる権限です。
rwx------
自分だけが実行したいスクリプトやディレクトリで使われることがあります。
chmod -Rとは何ですか?
chmod -Rは、ディレクトリ配下のファイルやディレクトリに対して、再帰的に権限を変更するオプションです。
chmod -R 755 logs
影響範囲が広いため、実行前に対象を必ず確認しましょう。
chmodとchownの違いは何ですか?
chmodは権限を変更するコマンドです。
chownは所有者やグループを変更するコマンドです。
権限を変えるならchmod、所有者を変えるならchownを使います。
Permission deniedが出たらchmodすればよいですか?
必ずしもchmodだけで解決するとは限りません。
実行権限がない、所有者が違う、ディレクトリの権限が足りない、実行方法が違うなど、複数の原因があります。
まずls -lで権限と所有者を確認しましょう。
chmodで権限変更できない原因は何ですか?
対象ファイルが存在しない、権限変更する権限がない、所有者ではない、システム領域を操作している、対象パスを間違えている、などが考えられます。
まずpwdとls -lで現在地と対象ファイルを確認しましょう。
まとめ
chmodコマンドとは、Linuxでファイルやディレクトリの権限を変更するための基本コマンドです。
chmodは「change mode」の略で、読み取り、書き込み、実行の権限を変更できます。
権限を確認するには、ls -lを使います。
ls -l script.sh
シェルスクリプトに実行権限を付ける場合は、chmod +xを使います。
chmod +x script.sh
数字指定では、rは4、wは2、xは1として計算します。
通常ファイルでは644、実行ファイルやディレクトリでは755、秘密鍵などでは600が使われることがあります。
chmod 644 sample.txt
chmod 755 script.sh
chmod 600 secret.txt
chmod 777は全員にすべての権限を与える危険な設定です。
安易に使わず、必要な相手に必要な権限だけを設定しましょう。
ディレクトリ配下をまとめて変更する場合は、chmod -Rを使えます。
chmod -R 755 logs
ただし、影響範囲が広いため、実行前にpwd、ls、findなどで対象を確認することが大切です。
Linux初心者は、まずls -lで権限を確認し、chmod +x、chmod 644、chmod 755、chmod 600の意味を理解するところから始めましょう。




コメント