Linux chmod -rw-r–r–の意味と設定方法を初心者向けに徹底解説!

目次

1. はじめに

Linuxにおける「アクセス権限」とは?

LinuxやUnix系のシステムでは、ファイルやディレクトリの「アクセス権限(パーミッション)」を適切に管理することが非常に重要です。これは、セキュリティの観点からも、システムの安定運用という意味でも欠かせない要素です。

多くの人がターミナルでファイル一覧を表示したときに、-rw-r--r-- といった見慣れない記号を目にして「これは何を意味するのだろう?」と疑問に思った経験があるのではないでしょうか。

chmodと -rw-r–r– の関係性

このような記号は、ファイルのアクセス権限を表す記号表記です。そして、そのアクセス権限を設定・変更するために使用されるのが chmod コマンドです。つまり chmod を使ってファイルに特定のアクセス権限を付与した結果として -rw-r--r-- のような記号が表示されるわけです。

本記事の目的と読者層

この記事では、この -rw-r--r-- が具体的にどういう意味を持つのか、どのようにして chmod を使って設定・変更するのかを、初心者の方にもわかりやすく解説していきます。さらに、セキュリティ上の注意点や実際の使用例など、実践的な内容にも触れていきます。

Linuxを初めて使う方から、ある程度ターミナル操作に慣れてきた中級者までを対象に、実務で活かせる知識をしっかりと身につけていただくことを目指します。

侍エンジニア塾

2. chmodとは?【基本の理解】

chmodコマンドの役割

chmod(チョモッドまたはチェンジ・モードと読む)は、「change mode」の略で、LinuxやUnix系OSにおいてファイルやディレクトリのアクセス権限(パーミッション)を変更するためのコマンドです。
このコマンドを使うことで、「誰がどのような操作をできるか(読み取り・書き込み・実行)」を柔軟に制御できます。

ファイルやディレクトリの適切なパーミッション設定は、セキュリティの確保だけでなく、ファイル共有や実行のトラブル防止にも直結するため、非常に重要です。

chmodの基本構文

chmod [オプション] [権限指定] ファイル名

たとえば、次のように使います:

chmod 644 sample.txt

このコマンドにより、sample.txt のパーミッションが以下のように変更されます:

-rw-r--r--  1 user group 1234 Apr 13 20:00 sample.txt
  • 所有者(user):読み取り・書き込み可(rw-)
  • グループ(group):読み取りのみ(r–)
  • その他(others):読み取りのみ(r–)

数値指定と記号指定の2種類

chmod では、アクセス権限を指定する方法として以下の2つがあります。

  • 数値指定(数値モード)
  • 例:chmod 755 script.sh
  • 各ユーザー種別に数値で権限を指定する方法です。
  • 記号指定(シンボリックモード)
  • 例:chmod u=rw,g=r,o=r file.txt
  • u(user)、g(group)、o(others)に対して、r(読み取り)、w(書き込み)、x(実行)を記号で指定します。

どちらの方法も最終的には同じ権限を設定できますが、数値指定は一括で素早く、記号指定は柔軟な変更が可能です。用途に応じて使い分けるとよいでしょう。

chmodとchownの違いに注意

よく混同されがちなのが chown コマンドです。

  • chmod:アクセス権限(パーミッション)を変更する
  • chown:ファイルやディレクトリの「所有者(オーナー)」や「グループ」を変更する

目的が異なるため、それぞれのコマンドの役割を明確に理解しておくことが重要です。

3. -rw-r–r– の意味を分解して理解する

パーミッション記号の構造

Linuxで ls -l コマンドを実行すると、以下のような形式でファイルの情報が表示されます:

-rw-r--r--  1 user group  1234 Apr 13  2025 sample.txt

このうち、左端にある -rw-r--r-- がファイルのパーミッション(アクセス権)を表しています。これを理解することで、誰がどのような操作をできるかを正しく把握できます。

各部分の意味を詳しく解説

① 最初の1文字:ファイルの種別

記号意味
-通常のファイル
dディレクトリ
lシンボリックリンク
bブロックデバイス
cキャラクターデバイス

今回の -rw-r--r-- の場合、最初の - は「通常のファイル」であることを意味します。

② 2文字目〜10文字目:アクセス権限(3文字 × 3セット)

  • 所有者(user)rw-
    → 読み取り(r)と書き込み(w)が許可されており、実行(x)は不可。
  • グループ(group)r--
    → 読み取りのみ可能。書き込み・実行は不可。
  • その他(others)r--
    → 読み取りのみ可能。

このように、所有者だけが編集可能で、それ以外のユーザーは閲覧のみ許可されているという状態です。

数値表記との対応:644 の意味

Linuxでは、同じ権限を数値(オクタル表記)でも表すことができます。

-rw-r--r-- に相当する数値表記は 644 です。

ユーザー種別記号表記数値意味
所有者rw-6読み+書き
グループr--4読み取りのみ
その他r--4読み取りのみ

この数値は以下の計算式から導かれます:

  • 読み取り(r) = 4
  • 書き込み(w) = 2
  • 実行(x) = 1

したがって、rw- = 4 + 2 = 6r-- = 4、r-- = 4 → 合計して 644 となるのです。

なぜこの権限が使われるのか?

-rw-r--r--(644)は、公開ファイルやWebサーバーの静的ファイル(HTML、CSSなど)に多く使われるパーミッションです。
理由は以下の通りです:

  • 所有者のみが編集できる → 意図しない改変を防げる
  • 他のユーザーにも読み取りを許可 → ファイルの公開・共有に対応

適切に使えば、セキュリティと利便性を両立したファイル管理が可能になります。

4. chmodで -rw-r–r– を設定する方法【実践編】

chmodコマンドを使ってパーミッションを変更する

ファイルやディレクトリのアクセス権限は、chmod コマンドによって自由に変更できます。たとえば、-rw-r--r-- の状態にしたい場合は、「644」のパーミッションを設定すればOKです。

数値指定での設定方法

chmod 644 ファイル名 の形式で使用します。

chmod 644 document.txt

このコマンドにより、document.txt のパーミッションが以下のように変更されます:

-rw-r--r--  1 user group 1234 Apr 13 20:00 document.txt
  • 所有者(user):読み取り・書き込み可(rw-)
  • グループ(group):読み取りのみ(r–)
  • その他(others):読み取りのみ(r–)

記号指定(シンボリックモード)での設定方法

より柔軟に権限を操作したい場合は、記号指定が有効です。

chmod u=rw,g=r,o=r document.txt

このコマンドは、以下のように意味づけされます。

  • u=rw → 所有者に読み書き権限を設定
  • g=r → グループに読み取りのみを許可
  • o=r → その他のユーザーにも読み取りのみを許可

結果的には、数値指定の 644 とまったく同じ状態になります。

ディレクトリに適用する場合の注意点

ファイルと違い、ディレクトリには「実行権(x)」がないと中にアクセスできないという仕様があります。

たとえば、以下のようにすると、アクセスが制限されてしまう可能性があります:

chmod 644 my_folder

この設定では、読み取りのみが許可されますが、ディレクトリの中身を「開く」操作(実行権が必要)ができなくなります。

正しい設定例:

chmod 755 my_folder
  • 所有者:読み・書き・実行
  • グループ・その他:読み・実行

こうすることで、他のユーザーがディレクトリ内のファイルを一覧表示できるようになります。

再帰的に権限を変更する:-R オプション

多数のファイルやサブディレクトリを一括で変更したい場合は、-R(recursive:再帰的)オプションを使います。

chmod -R 644 my_folder

この操作により、my_folder 以下のすべてのファイルに 644 の権限が適用されます。ただし、この方法には注意点があります。

5. ls -lコマンドでのパーミッション確認方法

ファイルのパーミッションを確認するには?

ファイルやディレクトリのアクセス権限(パーミッション)を確認するには、Linuxの定番コマンドである ls -l を使用します。これは「long listing format(長い一覧形式)」を意味し、パーミッションや所有者、サイズ、最終更新日時などの詳細情報を表示します。

基本的な使い方

ls -l

このコマンドを実行すると、以下のような出力が表示されます:

-rw-r--r--  1 naoya devs  2048 Apr 13 20:00 index.html

それぞれの項目には次のような意味があります:

項目意味
-rw-r--r--パーミッション(アクセス権)
1ハードリンクの数(通常は1)
naoya所有者(user)
devsグループ(group)
2048ファイルサイズ(バイト)
Apr 13 20:00最終更新日時
index.htmlファイル名

パーミッション欄の読み取り方

この章の主役である -rw-r--r-- の部分に注目しましょう。これは以下のように分解できます:

  • 最初の1文字:ファイル種別
  • -:通常のファイル
  • d:ディレクトリ
  • l:シンボリックリンク
  • 残りの9文字:アクセス権限(3文字 × 3セット)
  • 所有者(user):rw- → 読み取り+書き込み
  • グループ(group):r-- → 読み取りのみ
  • その他(others):r-- → 読み取りのみ

つまり、この表示から「このファイルは所有者だけが編集でき、それ以外のユーザーは読み取りだけ可能」と読み取れます。

特定のファイルだけを確認する

特定のファイルのパーミッションだけを確認したい場合は、ファイル名を指定します。

ls -l index.html

このようにすれば、対象ファイルのみに絞って確認できます。多くのファイルが存在するディレクトリでの確認作業に便利です。

ディレクトリの確認も同様に可能

ディレクトリも ls -l で確認できます。ただし、ディレクトリの中身を一覧表示したい場合は -d オプションを併用します。

ls -ld my_folder

これにより、my_folder 自体のパーミッション情報だけを表示できます(中のファイル一覧は表示されません)。

パーミッションを確認しながら安全に管理する

chmod でパーミッションを設定したあとは、必ず ls -l で結果を確認することが推奨されます。
誤った設定がそのまま運用されると、セキュリティ事故や予期せぬ動作の原因になります。

また、複数のファイルをまとめて確認したい場合は、次のようにパイプと組み合わせることも可能です:

ls -l | grep '.sh'

これは、.sh(シェルスクリプト)ファイルのみを絞り込んで表示します。

6. GUIツールでパーミッションを確認・変更する方法(初心者向け)

コマンドが苦手な人にとっての選択肢

Linuxの操作はターミナルを使ったコマンドライン操作が中心ですが、「文字だけの画面は難しい」「うっかりミスが怖い」と感じる初心者も多いのが実情です。
そのような方のために、GUI(グラフィカルユーザーインターフェース)を使った方法でも、ファイルのパーミッションを確認・変更することができます。

Ubuntuのファイルマネージャーでの操作(Nautilus)

UbuntuなどのLinuxディストリビューションには、「Nautilus」というファイルマネージャーが標準搭載されています。Windowsでいう「エクスプローラー」にあたるツールです。

確認方法:

  1. 対象のファイルまたはディレクトリを右クリック
  2. 「プロパティ(Properties)」を選択
  3. 「アクセス権限」タブを開く(バージョンにより「パーミッション」と表示される場合も)

ここでできること:

  • 所有者・グループの確認と変更(管理者権限が必要)
  • 読み取り・書き込み・実行の許可切り替え
  • アクセス権限の変更内容がすぐに反映される

GUIでは、rw-, r-- などの記号ではなく「読み込みのみ」「読み書き」などのわかりやすい表現で表示されるため、初心者でも安心して操作できます。

WinSCP(Windowsユーザー向けSFTPクライアント)

WindowsからリモートLinuxサーバーに接続する場合、WinSCP というSFTPクライアントを使えば、GUI上でパーミッション設定ができます。

操作手順:

  1. WinSCPでサーバーにログイン
  2. 任意のファイルを右クリック → 「プロパティ」
  3. 「アクセス権限(Permissions)」の数値(例:644)やチェックボックスを変更
  4. 「OK」をクリックすれば反映される

メリット:

  • 数値と記号の両方で確認できる
  • 再帰的な権限変更もGUIで可能(ディレクトリに対して)

注意点:

  • root権限が必要なファイルは、sudo権限がないと変更できない場合があります
WinSCP - Free SFTP and FTP client

WinSCP is a popular free file manager for Windows supporting…

FileZilla(クロスプラットフォームのSFTPクライアント)

MacやLinuxでも使えるSFTPクライアント「FileZilla」でも、同様にパーミッション変更が可能です。

手順:

  1. サーバーに接続後、該当ファイルを右クリック
  2. 「ファイルのパーミッション(File Permissions)」を選択
  3. チェックボックスや数値で設定し、「OK」を押して反映

GUI操作の利点と注意点

利点:

  • 初心者でもミスをしにくい
  • 変更内容がすぐに視覚的に確認できる
  • コマンドに不慣れな人でも扱いやすい

注意点:

  • サーバー設定や環境によっては、GUIツールで変更できない場合がある
  • 表示と実際の反映状況が異なることもあるため、ls -l などでの確認は併用推奨

FileZilla - The free FTP solution for both client and server…

7. chmod設定の注意点とトラブルシューティング

正しく設定したつもりでも動かない?その原因とは

chmod コマンドでアクセス権限を変更した後、思ったように動作しないことがあります。これはパーミッションの設定ミスや権限の誤解が原因であることがほとんどです。
ここでは、実務でよくあるトラブル事例とその対処法について紹介します。

Permission denied エラーの原因と対処法

症状:

bash: ./script.sh: Permission denied

原因:

  • 実行しようとしているファイルに「実行権限(x)」が付与されていない

対処法:

chmod +x script.sh

もしくは、数値指定なら:

chmod 755 script.sh

このように、「読み取りや書き込みができても、実行はできない」という点に注意が必要です。

ディレクトリに実行権限がないとアクセスできない

ディレクトリに対して chmod 644 を設定すると、中身を読み取ることができなくなる場合があります。

理由:

  • ディレクトリにおける「実行権(x)」は、「中に入る」「中身を見る」ことを可能にするために必須です。

例:

chmod 644 my_folder
ls my_folder

→ 上記のような場合、中身を表示できずエラーが出ることがあります。

解決策:

chmod 755 my_folder

再帰的な変更(-R)での落とし穴

chmod -R は便利ですが、ファイルもディレクトリもすべて同じ権限にしてしまうため、思わぬトラブルにつながることがあります。

よくある失敗例:

chmod -R 644 /var/www/html

→ ディレクトリに実行権がなくなり、中にアクセスできなくなる

正しい使い方:

# ディレクトリは実行権付き
find /var/www/html -type d -exec chmod 755 {} \;

# ファイルは644に
find /var/www/html -type f -exec chmod 644 {} \;

所有者・グループとの組み合わせミス

chmod だけでなく、ファイルの「所有者(user)」や「グループ(group)」にも注意が必要です。
たとえば、apache ユーザーがファイルを読み取る必要があるのに、所有者が一般ユーザーで、その他のユーザーに読み取り権限がなければ、Web表示が失敗します。

解決策:

  • 所有者を変更:sudo chown www-data:www-data index.html
  • グループ権限を付与:chmod 640 index.html(グループが適切な場合)

777は危険!権限を開放しすぎるリスク

トラブル時に「とりあえず777にすれば動く」と考える人もいますが、それは非常に危険な行為です。

理由:

  • 誰でも読み取り・書き込み・実行ができる状態になる
  • 第三者による改ざん、スクリプトの悪用などのリスクが高まる

推奨される基本ルール:

  • ファイルは644または600
  • ディレクトリは755または700
  • スクリプトやバイナリは755(必要に応じて)

8. 使用例・よくあるシナリオ

chmodによるパーミッション設定は現場でどう使われている?

これまでに紹介した chmod コマンドや -rw-r--r-- というアクセス権限は、実際のサーバー運用や開発の現場で頻繁に使われています
ここでは、代表的な3つのシナリオを通じて、パーミッション設定がどのように活用されるかを見ていきましょう。

1. WebサーバーでのHTMLファイル管理

シナリオ:
あなたがApacheやNginxといったWebサーバーでHTMLファイルを公開する場合、そのファイルに設定されるパーミッションは通常 -rw-r--r--(644)です。

chmod 644 index.html

なぜ644なのか?

  • 所有者(Web管理者)は書き換えが必要 → 書き込み権限(w)
  • Webサーバー(www-dataなど)は読み取りだけでよい → 読み取り権限(r)
  • 他のユーザーに書き込みを許可する必要はない

この設定により、必要最小限の権限で安全にWebコンテンツを公開できます。

2. スクリプトファイルの実行権限を付ける

シナリオ:
自作のシェルスクリプト backup.sh を作成したが、実行しようとすると「Permission denied」になってしまう。

chmod 755 backup.sh

この設定の意味:

  • 所有者は読み・書き・実行が可能(rwx)
  • グループ・その他は読み・実行が可能(rx)

これにより、スクリプトを他のユーザーも実行できる状態にしつつ、編集は所有者だけが行えるようになります。

3. 機密ファイルの読み取り制限

シナリオ:
APIキーやパスワードなどを記載した secrets.txt を管理している。自分以外には見られたくない。

chmod 600 secrets.txt

この設定の意味:

  • 所有者のみが読み書き可能(rw-)
  • グループ・その他はアクセス不可(—)

セキュリティ面でも非常に重要な設定であり、プライベートな情報は常に 600 または 400(読み取りのみ)で管理するのがベストプラクティスです。

4. ディレクトリを安全に共有する

シナリオ:
複数の開発者がアクセスする共有ディレクトリ shared_folder を作成する。

chmod 770 shared_folder

この設定の意味:

  • 所有者・グループ:すべての権限(rwx)
  • その他:アクセス不可(—)

グループを開発チームに設定しておくことで、安全かつ効率的な共同作業が可能になります。chgrp コマンドでグループを変更すれば、対象ユーザーを柔軟に制御できます。

5. 誤設定によるトラブルと回避例

シナリオ:
うっかり chmod -R 777 . を実行してしまい、すべてのファイルが書き込み可能になってしまった。

推奨される回避策:

  • 常に find でファイル種別を指定してパーミッションを変更
  • 変更前に ls -l で権限を確認しておく
  • test 用の仮環境で先に試す

9. よくある質問(FAQ)

Q1. chmod 644-rw-r--r-- はどう違うのですか?

A. 表記方法が違うだけで、意味はまったく同じです。

  • chmod 644:数値によるパーミッション設定コマンド
  • -rw-r--r--:設定後に ls -l で確認できる記号表記

どちらも「所有者が読み書き可能、それ以外は読み取りのみ」という状態を表しています。

Q2. ファイルに実行権限がないとどうなりますか?

A. スクリプトやバイナリを直接実行しようとすると、エラーになります。

たとえば .sh.py ファイルなどを実行するには、実行権(x)が必要です。権限がないと以下のようなエラーが出ます。

bash: ./script.sh: Permission denied

解決方法:

chmod +x script.sh

Q3. ディレクトリに 644 を設定しても大丈夫ですか?

A. 通常は適切ではありません。

ディレクトリには「実行権(x)」が必要です。実行権がないと中のファイルにアクセスできません。

正しい設定:

chmod 755 ディレクトリ名

Q4. chmod -R は便利ですが、使うときの注意点はありますか?

A. ファイルとディレクトリに同じ権限が適用されてしまうため、注意が必要です。

例:

chmod -R 644 my_project/

→ ディレクトリに実行権がなくなり、中にアクセスできなくなる

おすすめの安全な方法:

find my_project/ -type d -exec chmod 755 {} \;
find my_project/ -type f -exec chmod 644 {} \;

Q5. 「Permission denied」の原因がわかりません。

A. 以下のいずれかを確認してください:

  • 実行ファイルなのに実行権がない
  • 所有者でないのに書き込みしようとしている
  • ディレクトリに実行権がない
  • 実行しているユーザーにsudo権限がない

状況に応じて ls -lwhoami で現在のユーザーと権限を確認しましょう。

Q6. 誰かにファイルを共有したいけど、書き込みはさせたくありません。どうすればいい?

A. 所有者だけが書き込み可能な「644」または「444」に設定しましょう。

chmod 644 share.txt
  • 644:他のユーザーは読み取りのみ可能
  • 444:すべてのユーザーが読み取り専用

ファイルの性質や公開範囲に応じて使い分けるとよいでしょう。

Q7. パーミッションを間違えてしまいました。元に戻すにはどうしたら?

A. 事前にメモを取っていない場合は、他の正常なファイルと比較して戻すのが確実です。

ls -l /path/to/正しいファイル

その出力に合わせて chmod を再設定しましょう。プロジェクトやシステムによっては、初期状態をドキュメント化しておくのが理想です。

10. まとめ

chmodとパーミッションの基本を理解することの重要性

この記事では、LinuxやUnix系OSで広く使われている chmod コマンドと、記号表記 -rw-r--r-- の意味について詳しく解説しました。
これらは単なる技術的な知識にとどまらず、システムの安全性・運用効率・ファイル共有の正確さを支える重要な要素です。

本記事で学んだことの振り返り

  • chmod はファイルやディレクトリのアクセス権限(パーミッション)を変更するためのコマンドである
  • -rw-r--r-- は「所有者が読み書き可能、他は読み取りのみ」というアクセス権を示している
  • 数値表記の 644 と記号表記の -rw-r--r-- は同じ意味を持つ
  • パーミッションの設定方法には「数値指定」と「記号指定」の2つがある
  • ls -l コマンドで現在の権限を確認できる
  • GUIツール(Nautilus、WinSCP、FileZilla)でも設定・確認が可能
  • chmodの設定ミスによる「Permission denied」などのエラーには注意が必要
  • よく使われる権限設定には、安全性と目的に応じた明確な理由がある

パーミッション設定の「最適解」は状況次第

最も重要なのは、すべてのファイルやディレクトリに万能な設定は存在しないということです。
実行する用途や共有する相手、必要なセキュリティレベルに応じて、最小限かつ適切な権限を選択することが求められます。

これからパーミッションを扱う方へ

初めは難しそうに感じるかもしれませんが、chmod やパーミッションの考え方に慣れることで、
トラブルを未然に防ぎ、セキュリティを意識したスマートな運用ができるようになります。

「誰が、どのような目的で、どこまでアクセスできるべきか?」――この視点を常に忘れず、実践の中でスキルを高めていきましょう。