【初心者向け】ls -lとwhoamiコマンド「権限を理解する」- “Permission denied”の謎を解く -【Linuxコマンド入門 #14】

UBUNTU-linuxコマンド入門シリーズのサムネイル。この記事シリーズでは、よく使うコマンドを優先的に紹介し、シリーズを通して最低限コマンドライン操作ができるようになることを目標に紹介しています。 18 記事
シリーズ

Linuxコマンド入門

LINUXコマンドの基礎について、ゼロから最低限ファイル操作などができるようになるまでの手順を紹介します。linux系な...

前回(#13)は、ターミナル上でファイルを直接編集できるエディタ、nanovimを紹介しました。

vimとnano,linux系のターミナルエディタの2種類について初心者向けに最低限度扱えるようにするための方法紹介

【初心者向け】nano / vim「ターミナルでファイル編集」- 2大エディタの基本操作 -【Linuxコマンド入門 #13】

linuxターミナルで閊える2大エディタ nanoとvimについて、最低限の操作を紹介します。 基本はこれだけ覚えておけばいいと初心者向けの入門編。

これでファイル操作の「見る」「作る」「消す」「コピー」「移動」「編集」が揃いました。しかし、これらの操作をしていると、いつか必ず「Permission denied(許可がありません)」というエラーに遭遇します。

今回は、このエラーの謎を解き明かすため、Linuxの根幹とも言える「権限(パーミッション)」の仕組みについて学びます。

Linuxの権限について、初心者向けに紹介。 読み取り書き込み実行権限についてどのように見るのかについて細かく見てみましょう。

「Permission denied」エラーは、Linuxが「あなたに、その操作をする許可を与えていない」ために起こります。

この仕組みを理解するには、まず「”あなた” とは誰か?」Who am I ? をLinuxシステムに確認する必要があります。

1. まず「自分が誰か」を知る (whoami)

whoami (Who am I? / 私は誰?) は、現在ログインしているユーザー名を教えてくれる、非常にシンプルなコマンドです。

whoami
# tukumo

この tukumo というのが、今操作しているあなたの「名前」です。Linuxは、この名前(ユーザー)に基づいて、ファイル操作の「許可・不許可」を判断します。

2. 「権限」を確認する (ls -l)

次に、lsコマンドに -l (Long format) オプションを付けて、ファイルやディレクトリの詳細情報を表示してみましょう。

ls -l
# -rw-r--r-- 1 tukumo tukumo 1024 11/14 17:30 config.ini
# drwxr-xr-x 2 tukumo tukumo 4096 11/14 18:00 my_project

lsだけではファイル名しか表示されませんでしたが、-lを付けると、謎のアルファベット(drwxr-xr-xなど)や、先ほどwhoamiで見た tukumo という名前が表示されました。

この1行に、権限のすべてが詰まっています。

Linux-ls-コマンドの使い方紹介、初学者向けに、よく使うオプションを優先的に紹介しています。

【初心者向け】pwd・lsコマンド 「今どこ?」と「何がある?」- コピペで試せるオプション理解 -【Linuxコマンド入門 #2】

lsコマンドの使い方を、よく使うオプション順に紹介します。基本的な使い方をマスターしましょう。

3. ls -l の見方(登場人物と権限)

この複雑な行を、重要な3つのグループに分けて見ていきましょう。【ls】の復習

[権限] [所有者] [グループ] [ファイル名]

[drwxr-xr-x] [tukumo] [developers] [my_project.py]

3-1. 3つの「登場人物」(誰が)

Linuxは、ファイルにアクセスしようとする人を3種類に分類します。

  1. ユーザー (User / 所有者)
    • ls -lの2列目(例: tukumo)。
    • そのファイルの「持ち主」です。
    • whoamiの結果とこの名前が一致した場合、あなたは「所有者」として扱われます。
  2. グループ (Group)
    • ls -lの3列目(例: developers)。
    • ファイルが所属する「チーム」です。
    • あなたが「所有者」ではなくても、この「グループ」に所属していれば、あなたは「グループ」として扱われます。
  3. その他 (Other)
    • 上記2つのどちらでもない人。「全くの他人」です。

3-2. 3つの「権限」(何をできる)

次に、先頭の drwxr-xr-x の部分を見ていきます。 最初の1文字(d ディレクトリ)を除き、rwx r-x r-x の3文字ずつのブロックに分かれています。

  • r (Read): 読み取り
    • ファイル: catlessで中身を読むことができます。
    • ディレクトリ: lsで中身の一覧を見ることができます。
  • w (Write): 書き込み
    • ファイル: nanovimで中身を編集・上書きできます。
    • ディレクトリ: touchmkdirで、そのディレクトリ内にファイルやフォルダを作成・削除・名前変更できます。(超重要
  • x (Execute): 実行
    • ファイル: そのファイルをプログラムとして実行できます。(例: ./script.sh
    • ディレクトリ: cdでそのディレクトリに入ることができます。

4. 10文字の「権限コード」を解読する

ls -lの先頭10文字は、以下のように構成されています。

例1: drwxr-xr-x (ディレクトリ)

d | rwx | r-x | r-x

  • 種別 (d): directory (ディレクトリ) です。
  • ユーザー (rwx): 所有者(tukumo)は「読み・書き・実行」すべて可能です。
  • グループ (r-x): developersグループの人は「読み・実行」は可能ですが、「書き込み (w)」は許可されていません(-になっているため)。
  • その他 (r-x): 全くの他人も「読み・実行」は可能ですが、「書き込み (w)」はできません。

例2: -rw-r--r-- (ファイル)

- | rw- | r-- | r--

  • 種別 (-): 通常のァイル (file) です。
  • ユーザー (rw-): 所有者(lumenHero)は「読み・書き」は可能ですが、「実行 (x)」はできません。
  • グループ (r--): usersグループの人は「読み」だけ可能です。
  • その他 (r--): 全くの他人も「読み」だけ可能です。

5. “Permission denied” になる具体例

  • cd できない!
    • cd my_projectPermission denied と出た場合、my_projectディレクトリの権限を見て、自分(User, Group, Otherのどれか)に x (実行) 権限がないことが原因です。
  • スクリプトが実行できない!
    • bash ./script.sh ではなく ./script.sh で実行しようとして Permission denied と出た場合、そのファイルに x (実行) 権限がないことが原因です。(次回のchmodで解決します)

第14回のまとめ

  • whoami : 自分が今、どのユーザーとして認識されているかを確認する。
  • ls -l : 詳細情報 (Long) がわかる。
  • 権限の見方:
    • 登場人物: ユーザー (User), グループ (Group), その他 (Other)
    • 権限の種類: r (読み), w (書き), x (実行)
    • whoamiの結果とls -lの「所有者」を比べることで、自分がどの権限を持つかが分かる。

次回予告

お疲れ様でした! 今回は「権限」の見方が分かり、”Permission denied” の「原因」が特定できるようになりました。 次回(#15)は、この権限を「変更」するためのコマンド、chmod を紹介します。これで、x権限を自分で追加するなど、エラーに実際に対処できるようになります。

chmodコマンドの使い方紹介、また、最高権限sudoについて紹介します。Linux Ubuntu初学者向けに、よく使うオプションを優先的に紹介。

【初心者向け】sudoとchmodコマンド「権限変更」- コピペで試せるオプション理解 -【Linuxコマンド入門 #15】

ファイルの権限を変更するには?chmodのオプション、引数についてよく使うものから湯煎的に紹介します。

UBUNTU-linuxコマンド入門シリーズのサムネイル。この記事シリーズでは、よく使うコマンドを優先的に紹介し、シリーズを通して最低限コマンドライン操作ができるようになることを目標に紹介しています。 18 記事
シリーズ

Linuxコマンド入門

LINUXコマンドの基礎について、ゼロから最低限ファイル操作などができるようになるまでの手順を紹介します。linux系な...