MENU

ファイル権限とは?chmodとchownの基本と考え方

ファイル権限とは?chmodとchownの基本と考え方

LinuxやUnix系OSでファイル操作をしていると、Permission denied にぶつかることがあります。そこで重要になるのがファイル権限です。結論から言うと、ファイル権限は「誰が、そのファイルを、読み取り・書き込み・実行できるか」を決める仕組みで、chmod は権限そのものを変えるコマンド、chown は所有者を変えるコマンドです。

実務では、ログファイルをアプリから書けるようにしたい、共有ディレクトリをチームで扱いたい、スクリプトを実行可能にしたい、といった場面で使います。ここを曖昧にしたまま 777 を付けると、動いても危険です。まずは「何を変えているのか」を整理しておくのが近道です。

  • chmod: 読む・書く・実行する権限を変える
  • chown: 所有者とグループを変える
  • よくある確認手順: ls -l で状態を見る → 必要最小限だけ変更する
  • 初心者が先に覚えたい数字: 644755

ここがポイント: 権限エラーは、コマンドを丸暗記するより「所有者」と「権限」を分けて考えると整理しやすくなります。

目次

まず確認したい前提

この記事は、主に Linux や macOS などの Unix 系環境を前提にしています。chmodchown は GNU Coreutils や POSIX 系コマンドとして広く使われていますが、細かな挙動は OS やファイルシステムによって差が出ることがあります。

最初に確認するコマンドはこれです。

ls -l sample.sh

出力例:

-rw-r--r-- 1 masa staff 128 Apr 22 10:00 sample.sh

この1行には、実務で必要な情報が詰まっています。

  • -rw-r--r--: 権限
  • masa: 所有者
  • staff: グループ
  • sample.sh: ファイル名

ファイル権限の見方

権限表示は、先頭1文字と、その後の9文字で構成されます。

-rwxr-xr--

短く分けるとこうです。

  • 先頭の -: 通常ファイル
  • 次の3文字 rwx: 所有者の権限
  • 次の3文字 r-x: グループの権限
  • 最後の3文字 r--: その他ユーザーの権限

r w x の意味

  • r: read。ファイルを読む
  • w: write。ファイルを書き換える
  • x: execute。ファイルを実行する

ディレクトリでは少し意味が変わります。

  • r: ディレクトリ内の一覧を読める
  • w: 中身を追加・削除できる
  • x: そのディレクトリに入れる、探索できる

ここが混乱しやすい点です。ファイルの x は実行、ディレクトリの x は通行許可と考えると理解しやすくなります。

chmod で権限を変える

chmod は permission bits、つまりアクセス権を変更するコマンドです。書き方は大きく2つあります。

数字で指定する方法

もっともよく使うのは数字です。

  • r = 4
  • w = 2
  • x = 1

これを所有者・グループ・その他の順に足して並べます。

chmod 644 memo.txt
chmod 755 script.sh

意味は次の通りです。

  • 644: 所有者は読み書き可、他は読み取りのみ
  • 755: 所有者は読み書き実行可、他は読み取りと実行可

実務でよく出る組み合わせ:

  • 600: 秘密情報を含む設定ファイル向け
  • 644: 一般的なテキストファイル向け
  • 700: 自分だけが使うスクリプトやディレクトリ向け
  • 755: 実行スクリプトや公開ディレクトリ向け

記号で指定する方法

「誰に」「何を足すか・消すか」を見ながら書けるのが記号方式です。

  • u: 所有者
  • g: グループ
  • o: その他
  • a: 全員

例:

chmod u+x script.sh
chmod g-w report.txt
chmod o-r secret.txt
chmod a+r readme.txt

これは細かい調整に向いています。既存の設定を保ちながら、必要な分だけ足したいときに便利です。

chown で所有者を変える

chown は owner と group ownership を変更するコマンドです。権限そのものではなく、そのファイルを誰のものとして扱うかを変えます。

chown user1 file.txt
chown user1:devteam file.txt

意味:

  • chown user1 file.txt: 所有者を user1 に変更
  • chown user1:devteam file.txt: 所有者を user1、グループを devteam に変更

たとえば、アプリの実行ユーザーが www-data なのに、アップロード先ディレクトリの所有者が別ユーザーのままだと、書き込みに失敗することがあります。そんなときは chmod だけでなく、chown の確認が必要です。

グループだけ変えたいとき

グループだけ変更したいなら chgrp も使えます。

chgrp devteam shared.txt

チーム共有ディレクトリでは、所有者よりもグループ設計のほうが重要になる場面が少なくありません。

実務でよくある使い方

ここでは「何をしたいか」から逆算して考えます。

スクリプトを実行できるようにしたい

chmod 755 deploy.sh

または、既存権限をなるべく保つならこちらです。

chmod u+x deploy.sh

後者は「所有者に実行権だけ足す」ので、むやみに公開範囲を広げません。

Webアプリが書き込むディレクトリを整えたい

chown -R www-data:www-data uploads
chmod -R 755 uploads

ただし、アプリの要件によっては一部ディレクトリにだけ書き込み権限が必要です。-R 777 のような広すぎる設定は避け、対象を絞るほうが安全です。

秘密情報を含むファイルを自分だけ読めるようにしたい

chmod 600 .env

APIキーや接続情報を含むファイルでは、公開範囲を狭くするのが基本です。共有ストレージやリポジトリに置くなら、権限設定だけでなく保管方法そのものも見直す必要があります。

入力例と出力例

変更前:

-rw-r--r-- 1 masa staff 128 Apr 22 10:00 script.sh

実行権を追加:

chmod u+x script.sh

変更後:

-rwxr--r-- 1 masa staff 128 Apr 22 10:00 script.sh

所有者とグループを変更:

sudo chown appuser:appgroup script.sh

変更後の確認:

-rwxr--r-- 1 appuser appgroup 128 Apr 22 10:00 script.sh

確認まで含めて1セットにすると、意図しない変更に早く気づけます。

よくある失敗と対処

短いコマンドでも、失敗の種類ははっきりしています。

chmod 777 を安易に使う

確かに動くことはあります。ただし、全員に書き込み権限を与えるため、事故や不正変更の入口になりやすい設定です。

避けたい場面:

  • Web公開ディレクトリ
  • 共有サーバー
  • 設定ファイルやログ保存先

まずは次を確認してください。

  • 本当に必要なのは権限か、それとも所有者変更か
  • 書き込みが必要なのは全員か、特定ユーザーか、特定グループか
  • 対象はファイル単体か、ディレクトリ配下全体か

chmodchown を混同する

  • 実行できない: chmod を確認する
  • 書き込みユーザーが違う: chown を確認する

同じ Permission denied でも、原因は別です。ここを分けるだけで調査時間がかなり変わります。

-R を深く考えずに使う

chmod -R 755 /some/dir
chown -R user:group /some/dir

再帰指定は便利ですが、想定外のファイルまで変更しやすいのが難点です。特にシンボリックリンクや大きなディレクトリ配下では、影響範囲を先に確認したほうが安全です。

sudo 前提で考えすぎる

管理者権限で無理やり変えると、その場では解決しても運用が崩れます。アプリの実行ユーザー、デプロイユーザー、共有グループの設計を見直したほうがきれいに収まるケースは多いです。

代替手段と一緒に知っておきたいもの

chmodchown だけで足りない場面もあります。

umask

新しく作るファイルやディレクトリの初期権限を調整します。毎回 chmod するより、作成時のデフォルトを整えたいときに有効です。

chgrp

所有者はそのまま、グループだけ変更したいときに使います。共同作業ではこちらのほうが目的に合うことがあります。

ACL

「このユーザーには読めるが、他のユーザーには読ませたくない」といった細かい制御が必要なら、通常の rwx だけでは足りません。そういうときは ACL の利用を検討します。

最低限ここだけ覚えるなら

最初は全部覚えなくて構いません。次の4つを押さえるだけでも、現場でかなり役立ちます。

  • ls -l で現在の所有者と権限を確認する
  • chmod は「権限」を変える
  • chown は「所有者・グループ」を変える
  • 777 ではなく、必要最小限の設定を選ぶ

ファイル権限は、コマンドの暗記より「誰に何を許すか」を整理できるかが本質です。次に権限エラーが出たら、まず ls -l を見て、所有者の問題か、権限の問題かを切り分けてみてください。その一手で、対応がかなり具体的になります。

参照リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次