流れ1の8語目 / 10

パーミッション

Linux

SSHでサーバーに入れたあと、設定ファイルを書き換えようとしたら「Permission denied」と表示されました

「Permission denied? そのファイルのパーミッション見てみて。ls -l で分かるよ」
「パーミッション」って、何のことだろう…?

パーミッションは、ファイルやディレクトリ(フォルダ)ごとに決めた「誰が・何をしてよいか」の設定です。

「Permission denied」は「許可がないので断られた」という意味です。

このページで分かること読む 約4分・問題 2問
  • パーミッションは、ファイルやディレクトリ(フォルダ)ごとに「だれが・何をしてよいか」を決めた設定
  • 「だれが」は3つに分かれる:所有者(持ち主)/グループ(仲間)/その他(それ以外の全員)
  • 「何を」は3つ:読む(r)/書く(w)/実行する(x)
  • 数字でも書ける(r=4、w=2、x=1 を足す)

身近な例えで理解する

お店の勤務シフト表は、店長が作って書き換えます。スタッフは見て自分の出勤日を確かめますが、書き換えはしません。バックヤードに貼ってあるので、お客さんは見られません。

  • 店長所有者(ファイルの持ち主)
  • スタッフグループ(持ち主の仲間として登録された人たち)
  • お客さんその他(それ以外の全員)
  • 店長は書き換えられる/スタッフは見るだけ/お客さんは見られない所有者は読み書きできる/グループは読むだけ/その他は何もできない

スタッフがシフト表を勝手に書き換えようとしたら止められます。これが「Permission denied」にあたります。

ちょっと確認

Q1先輩のひとこと
先輩「ファイルを書き換えようとしたら Permission denied って出たんだ」

これはどういう意味ですか?

例えを外して、実際のしくみ

ここからは実際のしくみ
「誰が」は3つ

所有者(ファイルの持ち主のユーザー)、グループ(ファイルに結びつけられたグループに入っているユーザー)、その他(それ以外の全員)です。Linuxでは、ユーザーとグループごとに許可を分けて管理します

「何を」も3つ

読む(r)、書く(w)、実行する(x)です。x は、ファイルならプログラムとして動かす許可、ディレクトリなら中に入る(中のファイルにたどりつく)許可です。ls -l で見ると -rw-r--r-- のように表示されます。先頭の1文字はファイルの種類(ふつうのファイルは「-」、ディレクトリは「d」)です。そのあとの9文字が3文字ずつ、左から所有者・グループ・その他の許可です。使えない許可は「-」になります

実行例(練習用に用意した Ubuntu 24.04 で、user2 というユーザーで実際に動かした結果):
user2@vm:~$ ls -l work
total 12
-rwxr-xr-x 1 user2 user2   23 Oct 28 17:48 hello.sh
drwxrwxr-x 2 user2 user2 4096 Oct 28 17:48 logs
-rw-rw-r-- 1 user2 user2    7 Oct 28 17:48 memo.txt

hello.sh は -rwxr-xr-x なので、所有者は読む・書く・実行するができ、グループとその他は読む・実行するだけです。logs は先頭が d なので、ディレクトリです。

数字でも書ける

r=4、w=2、x=1 を足した数字を、所有者・グループ・その他の順に3つ並べます。rw-r--r-- は 6・4・4 で 644、rw------- は 600、r-------- は 400 です。パーミッションを変えるコマンドは chmod です(例:chmod 400 my-key.pem)

秘密鍵は「自分だけ」が読める状態にする

07 の秘密鍵のファイルは、「自分だけ」が読める状態にしておきます(AWSの手順では 400。ssh-keygen で作った鍵は最初から 600(自分だけ読み書き)になっていて、これでもかまいません)。ほかの人も読める状態だと、SSHがその鍵を使いません。設定ファイルが root(サーバーの管理者ユーザー)の持ち物で、一般ユーザーに書く許可がないときは、許可をむやみに広げず、管理者の権限を一時的に借ります(→次の 09 sudo)

このページのまとめ

パーミッション
ファイルやディレクトリごとの「誰が・何をしてよいか」の設定
所有者/グループ/その他
持ち主/仲間として登録された人たち/それ以外の全員
r / w / x
読む(4)/書く(2)/実行する・ディレクトリに入る(1)
Permission denied
必要な許可がないので断られた、という意味

先輩のひとことの意味

先輩「Permission denied? そのファイルのパーミッション見てみて。ls -l で分かるよ」

「断られたのは、そのファイルに対して、あなたに書く許可がないからかもしれない。ls -l で、持ち主は誰か、所有者・グループ・その他にそれぞれ何が許されているかを確かめて」という意味です。設定ファイルは root の持ち物で、一般ユーザーは読むだけ、ということがよくあります。

練習問題で確かめる

Q24択:表示を読む

所有者が root で、パーミッションが(先頭の種類の1文字を除いて)rw-r--r-- のファイルがあります。所有者でもなく、そのグループにも入っていない一般ユーザーにできることはどれですか?

参考資料

ご意見・「これで例えて!」を募集しています

ご意見・ご感想・質問・間違いのご指摘など、何でもお気軽にお寄せください。「この言葉も例えで説明してほしい」「こんな例えなら分かりやすい」という声をもとに、新しいページや例えを作ります。

  • 説明してほしいITの言葉
  • 例えてほしい場面(部活・アルバイト・家事など)
  • 分かりにくかったところ・間違いのご指摘

意見箱は準備中です。

解説・例え・練習問題はすべてオリジナルです。参考にしているのは公式ドキュメントのみです。ご意見・ご感想・間違いのご指摘など、何でもお寄せください。確認してすぐに直します。

LinuCはLPI-Japanの登録商標です。当サイトはLPI-Japanおよび他の企業・団体とは関係ありません。

運営:core