HOME > Linux技術 リナックスマスター.JP(Linuxマスター.JP) > Linuxコマンド, LinuxコマンドA-E, ファイル・ディレクトリ管理コマンド > chmodコマンドの使い方|755・644の違いと-Rによる一括変更【早見表付き】コマンド
chmodコマンドで正しい権限変更をしないと、「Webサーバーにファイルをアップしたのに、403 Forbiddenエラーが出て表示されない」
「スクリプトを実行しようとしたら Permission denied と怒られる」
Linuxサーバーを運用していると、こうした権限(パーミッション)周りのトラブルに必ず直面します。
この記事では、ファイルやディレクトリの権限を変更する
chmod(チェンジモード)コマンドの使い方を解説します。現場で頻繁に使う「755」や「644」といった数字の意味から、ディレクトリの中身ごと一括で変更する
-R オプション、実行権限を付与する +x の書き方まで、実務で必須の知識を網羅しました。1. chmodコマンドの基本(数字での指定)
Linuxの権限変更には、主に「数字で指定する方法(755など)」と「記号で指定する方法(u+xなど)」の2種類があります。まずは現場で最も使われる数字指定から覚えましょう。基本構文は以下の通りです。
# chmod [権限の数字] [対象ファイル名]
現場の鉄板設定「755」と「644」
Webサーバーやシステム運用において、絶対に覚えておくべき組み合わせはこの2つです。・755(rwxr-xr-x):所有者は「読み・書き・実行」が可能。その他(グループ・他人)は「読み・実行」だけが可能。ディレクトリや実行ファイル(プログラム)によく使われます。
・644(rw-r--r--):所有者は「読み・書き」が可能。その他(グループ・他人)は「読む」ことだけが可能。一般的なファイル(HTML・画像・テキスト設定ファイルなど)の標準設定です。
# スクリプトに実行権限(755)を与える # chmod 755 script.sh # 設定ファイルを安全な権限(644)に戻す # chmod 644 config.txt
変更後は ls -l で確認する
chmod を実行した後は、権限が正しく変わったかどうかを ls -l で確認するのが現場の習慣です。# ls -l script.sh -rwxr-xr-x 1 root root 1024 Feb 24 10:00 script.sh
-rwxr-xr-x の部分がパーミッションです。rwx は「読み・書き・実行」、r-x は「読み・実行」、r-- は「読みのみ」を意味します。「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 /
詳細はこちら
2. ディレクトリの中身ごと一括変更する(-R)
「ディレクトリの中にある数百個のファイル全ての権限を一度に変えたい」そんな時に1つずつコマンドを打つ必要はありません。
-R(Recursive:再帰的)オプションを使います。# /var/www/html 以下の全ファイル・ディレクトリを 755 に変更する # chmod -R 755 /var/www/html/
-R は強力なオプションです。間違ってシステムの大事なディレクトリ(/etcや/usrなど)に対して実行すると、OSが起動しなくなる危険性があるため、対象パスは慎重に入力してください。【実務Tips】ファイルとディレクトリで権限を分けて一括変更する
chmod -R 755 をそのまま実行すると、通常のファイル(HTMLや設定ファイルなど)にも実行権限が付いてしまいます。現場では find コマンドと組み合わせて「ディレクトリは755、ファイルは644」と分けて設定するのが正しいやり方です。# ディレクトリだけを 755 に変更する # find /var/www/html/ -type d -exec chmod 755 {} \; # ファイルだけを 644 に変更する # find /var/www/html/ -type f -exec chmod 644 {} \;
3. 記号を使って「実行権限」だけを追加する(+x)
「今の権限(644など)は変えたくないけど、実行できるようにしたい」という場合は、数字よりも記号を使った相対指定が便利です。最もよく使うのが、実行権限(eXecute)を足す(+) という意味の
+x です。# 全ユーザーに実行権限を追加する # chmod +x script.sh # 自分(所有者)だけに実行権限を追加する # chmod u+x script.sh
-(マイナス)を使います。# 全ユーザーから書き込み権限を剥奪する(読み取り専用にする) # chmod -w important.conf
4. 数字(パーミッション)の計算方法
「755」や「644」という数字は、以下の3つの権限の足し算で決まっています。・4:読み取り(Read)
・2:書き込み(Write)
・1:実行(eXecute)
これらを「所有者」「所有グループ」「その他」の順に3桁で並べたものがパーミッション値です。
例:755 の場合
・所有者: 4+2+1 = 7(全部できる)
・グループ: 4+0+1 = 5(読み・実行)
・その他: 4+0+1 = 5(読み・実行)
【危険】777(全ユーザーに全権限)は使わない
「とりあえず 777 にすれば動く」という対処をする方がいますが、これは絶対に避けてください。777 はすべてのユーザーに読み・書き・実行の全権限を与えるため、不正アクセスやデータ改ざんのリスクが極めて高くなります。本番環境で 777 を使う理由は存在しません。問題が起きた時は原因を特定し、最小限の権限で対処しましょう。本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| 権限を755(ディレクトリ・実行ファイル用)にする | chmod 755 ファイル名 |
| 権限を644(一般ファイル標準)にする | chmod 644 ファイル名 |
| 変更後に権限を確認する | ls -l ファイル名 |
| ディレクトリ以下を一括変更する | chmod -R 755 ディレクトリ名/ |
| ディレクトリだけを755に一括変更する | find ディレクトリ名/ -type d -exec chmod 755 {} \; |
| ファイルだけを644に一括変更する | find ディレクトリ名/ -type f -exec chmod 644 {} \; |
| 実行権限を追加する(全ユーザー) | chmod +x ファイル名 |
| 実行権限を追加する(自分だけ) | chmod u+x ファイル名 |
| 書き込み権限を剥奪する(読み取り専用) | chmod -w ファイル名 |
暗記不要・1時間後にはサーバーが動く
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
Linux無料マニュアル(図解60P)
名前とメールで30秒登録
