【Ubuntu】アクセス権確認と権限変更の基本手順

  • URLをコピーしました!
目次

はじめに

Ubuntu をはじめとする Linux システムにおいて、ファイルやディレクトリの「アクセス権(パーミッション)」は、システムの安全性を守るための最も基本的かつ重要な仕組みです。

Linux は「マルチユーザー」を前提としたシステムです。もし、誰でも全てのファイルを見たり書き換えたりできれば、重要な設定ファイルが誤って削除されたり、悪意のあるプログラムが実行されたりするリスクがあります。それを防ぐために、「誰が」「何を」できるかを厳格に管理しているのがアクセス権です。

「Permission denied」が出る理由

サーバー構築やアプリ開発の最中に、ターミナル画面で「Permission denied(許可がありません)」というエラーが出て作業が止まってしまった経験はありませんか?

このエラーが表示される主な理由はシンプルです。 「あなたが今操作しようとしているファイルに対して、適切な権限(鍵)を持っていない」からです。

例えば、「自分以外のユーザーが作成したファイルを編集しようとした」「実行権限がないスクリプトを動かそうとした」といったケースがこれに当たります。このエラーを解消するには、適切な権限を付与するか、所有者を変更する必要があります。

この記事でわかること
  • アクセス権の仕組み:読み取り・書き込み・実行権限の基本
  • 権限の確認方法:ls -l コマンドの見方
  • 権限の変更方法:chmod コマンドの実践的な使い方
  • 所有者の変更方法:chown コマンドによる管理

アクセス権(パーミッション)の仕組み

Linux(Ubuntu)では、1つのファイルやディレクトリに対して、「誰が(対象)」、「何をできるか(操作)」という組み合わせで権限を管理しています。

権限を構成する3つの属性(誰が)

システムは、ファイルにアクセスしようとするユーザーを以下の3つのカテゴリのいずれかに分類します。

所有者(User / u)

そのファイルやディレクトリを作成した人です。通常、最も強い権限を持ちます。

グループ(Group / g)

特定のユーザーの集まりです(例: 開発チームなど)グループに権限を与えることで、チーム内でのファイル共有が可能になります。

その他(Others / o)

所有者でもなく、所属グループのメンバーでもない、「その他の全ユーザー」です(部外者)Web サーバーで公開するファイルなどは、この「その他」の権限設定が重要になります。

操作を許可する3つの権限(何をできるか)

各属性(ユーザー)に対して、以下の3つの操作権限を個別に許可・拒否できます。

読み取り(Read / r)

ファイルの中身を見る権限です。(例: cat やテキストエディタでの閲覧)

書き込み(Write / w

ファイルの内容を変更したり、上書き保存したりする権限です。

実行(Execute / x)

ファイルをプログラムやスクリプトとして実行する権限です。(例: シェルスクリプトを動かす)

【重要】ディレクトリにおける「実行権限」の意味

ここで一つ、重要なポイントがあります。ファイルの「実行(x)」はプログラムを動かすことですが、ディレクトリ(フォルダ)の「実行(x)」は意味が異なります。

  • ファイルの実行権限 (x): プログラムとして起動できる。
  • ディレクトリの実行権限 (x): ディレクトリの中に移動(cd)できる、または中のファイルにアクセスできる。

もし、ディレクトリに「読み取り(r)」があっても「実行(x)」がない場合、ls コマンドでファイル名の一覧を見ることはできても、そのディレクトリの中に移動したり(cd)、中のファイルの中身を見たりすることはできません。

「Permission denied」でディレクトリに入れない場合、多くはこの「ディレクトリの実行権限(x)」が不足していることが原因です。

現在の権限を確認する方法(ls -l)

Ubuntu でファイルやディレクトリの権限を確認するには、ターミナルで ls コマンドに -l(ロングフォーマット)オプションを付けて実行します。

ターミナルでの確認コマンド

ls -l

特定のファイルだけ見たい場合は、ファイル名を指定します。

ls -l filename.txt

実行すると、以下のような情報が表示されます。

-rwxr-xr-x 1 user staff 4096 Jan 1 12:00 filename.txt

表示結果の見方(rwx の並び順とファイルタイプの識別)

一番左にある 10桁の英数字(例: -rwxr-xr-x が、そのファイルのアクセス権限を表しています。 これを解読するには、以下のように分解して考えます。

先頭の1文字: ファイルの種類

ここを見れば、それが「ファイル」なのか「ディレクトリ(フォルダ)」なのかが分かります。

  • - (ハイフン): 通常のファイル
  • d (ディー): ディレクトリ
  • l (エル): シンボリックリンク(ショートカットのようなもの)
続く9文字: 権限の設定(3文字×3セット)

残りの9文字は、3文字ずつ「所有者」「グループ」「その他」の順に並んでいます。

順番対象説明例 (rwx)
前半 3文字所有者ファイルの持ち主ができることrwx (全権限あり)
中盤 3文字グループ所有グループのメンバーができることr-x (読み・実行のみ)
後半 3文字その他上記以外の全員ができることr-x (読み・実行のみ)

記号の意味:

  • r: 読み取り OK
  • w: 書き込み OK
  • x: 実行 OK
  • -: 権限なし(許可されていない)

例えば -rw-r--r-- と表示されていた場合、「ファイルであり、所有者は読み書きできるが、それ以外の人は読むことしかできない」という意味になります。

アクセス権を変更する(chmod)

ファイルやディレクトリの権限を変更するには、chmod コマンドを使用します。 「Change Mode」の略で、サーバー構築やトラブルシューティングで頻繁に利用します。

コマンドの基本構文

chmod [オプション] [権限の設定値] [対象のファイル/ディレクトリ]

【推奨】数値(オクタル表記)で設定する方法

権限を「3桁の数字」で指定する方法です。 「現在の状態に関わらず、指定した権限の状態に上書きする」ため、ミスが少なく、エンジニアの間でも推奨される設定方法です。

この方法では、各権限を以下の数値に置き換えて足し算します。

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

例えば、「読み書き OK(rw-)」なら 4 + 2 = 6、「全権限あり(rwx)」なら 4 + 2 + 1 = 7 となります。 これを「所有者」「グループ」「その他」の順に3つ並べます。

例:chmod 755 filename の場合

  • 所有者(7): 4+2+1 = rwx (全権限)
  • グループ5): 4+0+1 = r-x (読み・実行)
  • その他5): 4+0+1 = r-x (読み・実行)

よく使う数値の組み合わせ一覧表

実務で頻出する組み合わせをまとめました。迷ったらこの表を参考にしてください。

数値設定される権限用途・意味
644rw-r--r--ファイルの標準設定
所有者は編集でき、他の人は見るだけ。(HTML ファイルや設定ファイルなど)
755rwxr-xr-xディレクトリやプログラムの標準設定
所有者は何でもでき、他の人は実行(ディレクトリなら移動)と閲覧ができる。
700rwx------自分専用
他人は一切アクセスできない。(SSH の鍵ファイル ~/.ssh など)
600rw-------自分専用(読み書き)
機密情報を含むファイルなどに使う。
777rwxrwxrwx誰でも何でもできる(危険!)
テスト環境で一時的に使うことはあるが、本番環境では避けるべき。

記号(シンボリック表記)で設定する方法

「今の権限に、実行権限だけ追加したい」といった、差分で変更したい場合に便利です。

構文: [誰に] [どうする] [何の権限を]

  • 誰に: u (所有者), g (グループ), o (その他), a (全員)
  • どうする: + (追加), - (削除), = (指定値にする)
  • 何の権限: r, w, x

使用例:

全員に実行権限を追加する(スクリプトを動かす時によく使う)

chmod +x script.sh
# "a+x" と同じ意味になります

グループの書き込み権限を削除する

chmod g-w filename

ディレクトリの中身もまとめて変更する方法(-R オプション)

ディレクトリの権限を変更しても、その中に入っているファイルやサブディレクトリの権限は変わりません。 中身も含めて一括で変更したい場合は、-R(Recursive / 再帰的)オプションを使います。

# directory とその中身すべてを 755 に変更する
chmod -R 755 directory/
⚠️ 注意点

-R オプションは強力です。誤ってシステムディレクトリ(/etc/usr など)に対して実行すると、OS が起動しなくなるなどの重大なトラブルになる可能性があるため、実行前にパスをよく確認しましょう。

所有者とグループを変更する(chown)

ファイルの所有者や所属グループを変更するには、chown コマンドを使用します。 「Change Owner」の略ですが、実はグループも一緒に変更できる万能コマンドです。

所有者を変更する操作は、基本的に管理者権限が必要になるため、コマンドの先頭に sudo を付けて実行するのが一般的です。

所有者を変更する基本コマンド

構文は非常にシンプルです。

sudo chown [新しい所有者ユーザー名] [対象のファイル/ディレクトリ]

使用例: sample.txt の所有者を ubuntu ユーザーに変更する場合

sudo chown ubuntu sample.txt

所有者とグループを一度に変更するテクニック(user:group)

Linux にはグループを変更する chgrp というコマンドもありますが、実務ではあまり使いません。 なぜなら、chown コマンドで 「所有者」と「グループ」をまとめて変更できる からです。

ユーザー名とグループ名を コロン(: でつなぐだけです。

sudo chown [ユーザー名]:[グループ名] [対象]

使用例: index.html の所有者を www-data に、グループも www-data に変更する場合

sudo chown www-data:www-data index.html

これさえ覚えておけば、chgrp コマンドを個別に打つ手間が省けます。

ディレクトリ全体を一括変更する方法

Webサイトのディレクトリを丸ごとアップロードした際など、中のファイルも含めて全ての所有権を一括で変更したい場合は、chmod と同様に -R(再帰的)オプション を使います。

# /var/www/html 以下の全てのファイル・フォルダの所有権を変更する
sudo chown -R www-data:www-data /var/www/html
💡 ポイント

「Permission denied」で書き込みができない時、権限(chmod 777など)で解決しようとせず、まずは 「所有者が自分(または書き込みたいアプリのユーザー)になっているか?」 を確認し、この chown で修正するのがセキュリティ上、正しいアプローチです。

権限変更ができない時の対処法(sudo)

chmodchown コマンドを実行した際、以下のようなエラーが表示されることがあります。

chmod: changing permissions of 'filename': Operation not permitted
(chmod: 'filename' のパーミッションを変更中: 操作が許可されていません)

これは、「そのファイルを変更する権利を持っているのは、ファイルの所有者か、システム管理者(root)だけ」 という鉄の掟があるためです。 たとえあなたがPCのメインユーザーであっても、システム全体に関わるファイルや、他人が作ったファイルを勝手に書き換えることはできません。

「操作が許可されていません」が出た場合の対応

このエラーが出たら、コマンドの先頭に sudo を付けて実行しましょう。 sudo(SuperUser DO)は、一時的に「管理者(スーパーユーザー)」としてコマンドを実行するための魔法の言葉です。

NG(エラーになる):

chmod 755 /etc/hosts

OK(成功する):

sudo chmod 755 /etc/hosts

実行時にパスワードを求められますが、これは 「あなた自身のログインパスワード」 を入力します。

管理者権限(root)での実行が必要なケース

基本的に、自分のホームディレクトリ(~/)以外の場所にあるファイルを操作する時は、ほとんどの場合 sudo が必要になると考えて OK です。

  • システム設定ファイルの変更(/etc/ 以下のファイルなど)
  • Web公開ディレクトリの操作(/var/www/html/ など)
  • ログファイルの操作(/var/log/ など)
  • 所有者の変更(chown コマンドは基本的に sudo が必須)
⚠️ 注意点

sudo は強力すぎるため、何でもできてしまいます。間違ったコマンド(例:システム全体の権限を削除してしまうなど)を実行すると、OS が起動しなくなる恐れがあります。コマンドの意味を理解してから実行する癖をつけましょう。

まとめ

本記事では、Ubuntu におけるアクセス権(パーミッション)の基本と、コマンドによる操作方法を解説しました。

仕組みを理解する

権限は「所有者・グループ・その他」×「読み・書き・実行」の組み合わせで決まります。

確認ls -l

まずは現状の権限を確認し、誰に何が許可されているかを把握しましょう。

変更chmod

基本は数値表記(755, 644など)で設定するのが確実です。

所有者変更chown

「Permission denied」が出たら、権限を緩める前に「所有者が正しいか」を疑いましょう。

以上、最後までお読みいただきありがとうございました。

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

この記事を書いた人

インフラ(クラウド/NW/仮想化)から Web 開発まで、技術領域を横断して活動するエンジニア💻 コンシューマー向けエンタメ事業での新規開発・運営経験を活かし、実戦的な技術ノウハウを発信中

[ Certs ] CCIE Lifetime Emeritus / VCAP-DCA ✒️ [ Life ] 技術書・ビジネス書愛好家📖 / 小・中学校で卓球コーチ👟

目次