chmodコマンドでパーミッションを変更する方法|755・644の意味と-Rの一括変更【早見表付き】コマンド

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドA-E, ファイル・ディレクトリ管理コマンド > chmodコマンドでパーミッションを変更する方法|755・644の意味と-Rの一括変更【早見表付き】コマンド
「FTPでアップロードしたWebページが 403 エラーになる」
「シェルスクリプトを実行しようとしたら Permission denied と怒られた」
Linuxサーバーの運用でPermission deniedに悩んだ経験は、ほぼ全ての人にあるはずです。

この記事では、ファイルやディレクトリの権限(パーミッション)を変更する chmod(チェンジモード)コマンド の実践的な使い方を解説します。
数字指定(755/644)と記号指定(+x/-w)の2つの書き方、ディレクトリ一括変更の -R オプション、「ファイルは644・ディレクトリは755」に分けて設定する find との組み合わせ、777の危険性まで網羅しました。
【この記事でわかること】 ・chmod は数字指定(755/644)と記号指定(+x/-w)の2通りの書き方がある
・755=所有者は全権限・グループ/その他は読み+実行、644=所有者は読み+書き・グループ/その他は読み取りのみ
・-R オプションでディレクトリ以下を再帰的に一括変更できる
・find との組み合わせでファイルは644・ディレクトリは755に分けて設定するのが現場の正しいやり方
・777(全員に全権限)は本番環境では絶対に使用しない

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

1. 基本的な使い方(ファイルの権限を変更する)

chmod の基本書式は以下の通りです。

# 基本書式 # chmod パーミッション ファイル名 # ファイルを 644 に変更する(所有者:読み書き、グループ/その他:読み取りのみ) # chmod 644 index.html # ディレクトリを 755 に変更する(所有者:全権限、グループ/その他:読み・実行) # chmod 755 /var/www/html # 変更後に確認する # ls -l index.html -rw-r--r-- 1 apache apache 1024 Apr 7 10:00 index.html

chmodを実行しても成功時はメッセージが表示されません。変更後は必ず ls -l で確認する習慣をつけましょう。

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 ファイル名

パーミッション設定でサーバーが危険にさらされていませんか?

コマンドの使い方を一つひとつ覚えていくのは時間がかかります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。