chmodコマンドの使い方:ファイルのパーミッションを変更する
chmodは、ファイルやディレクトリのパーミッション(アクセス権限)を変更するコマンドです。「Permission denied」と表示されたときの対処や、スクリプトに実行権限を付ける場面で使います。
chmodのよく使う形
実務や学習で登場しやすい使い方を、そのまま入力できる形でまとめました。
| コマンド例 | 内容 |
|---|---|
chmod 755 script.sh | 所有者は読み書き実行、他は読み実行のみ |
chmod 644 file.txt | 所有者は読み書き、他は読み取りのみ |
chmod +x script.sh | 実行権限を追加 |
chmod u+w file.txt | 所有者(user)に書き込み権限を追加 |
chmod go-w file.txt | グループとその他から書き込み権限を外す |
chmod -R 755 dir/ | ディレクトリ配下をまとめて変更 |
chmodの主なオプション
| オプション | 意味 |
|---|---|
| 数値指定(例 755) | |
| 記号指定(例 u+x・g-w・o=r) | |
-R | 再帰的に変更 |
-v | 変更内容を表示 |
| 特殊ビット(4000 SUID・2000 SGID・1000 スティッキー) | |
chmodの実行例と結果の読み方
user@linux-study:~$ chmod 755 deploy.sh
user@linux-study:~$ ls -l deploy.sh
-rwxr-xr-x 1 user user 512 Jan 10 09:30 deploy.sh
chmod 755で、所有者に読み書き実行(7)、グループとその他に読み取り実行(5)の権限を設定しています。ls -lの出力の-rwxr-xr-xという部分でこの権限が確認できます。
練習用ターミナルでは、chmodをブラウザ上で安全に試せます。
chmodを使うときの注意点
数字は、読み取り=4、書き込み=2、実行=1を足した値を、所有者・グループ・その他の順に並べたものです。たとえば7は4+2+1で全権限、5は4+1で読み取りと実行です。
chmod 777は誰でも読み書き実行できる状態になり、セキュリティ上のリスクが大きいため、一時的な切り分け以外では避けるのが基本です。ディレクトリでは「実行」権限が、中へ入る(cdする)権限を意味します。
-Rで再帰的に変更すると、ファイルとディレクトリに同じ権限が付きます。両者を分けたいときは、findと組み合わせます。
chmodに関するよくある質問
スクリプトが実行できないときは?
ls -lで実行権限(x)があるか確認し、無ければchmod +xで追加します。
権限を数字ではなく記号で書くには?
u(所有者)、g(グループ)、o(その他)、a(全員)に、+・-・=でr・w・xを指定します。