2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【権限】パーミッション「600」とは何か?|SSH鍵を守るための基礎知識

2
Posted at

はじめに

SSHでサーバーに接続しようとしたとき、こんなエラー画面に遭遇して焦ったことはないでしょうか?

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/user/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/user/.ssh/id_rsa": bad permissions

これは「大事な秘密鍵のセキュリティ設定が甘すぎるから、使わせてあげないよ」という警告です。この問題を解決するために使われるのが魔法の数字 「600」 です。

本記事では、この「600」という数字が具体的に何を意味しているのか、そして他のよく見るパーミッション(644や755など)との違いについて解説します。

パーミッション「600」の正体

結論から言うと、パーミッション「600」は 「自分(所有者)だけが読み書きできて、他の人は一切触れない状態」 を指します。

もっと噛み砕くと、以下のような状態です。

  • 自分:中身を見れるし、編集もできる(◯)
  • 同じグループの人:見れないし、編集もできない(✕)
  • その他の人:見れないし、編集もできない(✕)

まさにトップシークレット扱いです。だからこそ、漏洩してはいけないSSH秘密鍵には「600」を設定する必要があるのです。

なぜエラーが出るのか

先ほどのエラーメッセージに Permissions 0644 for ... are too open. とありました。「644」は「自分は読み書きできるけど、他の人も読むことができる」という設定です。
秘密鍵が他人から覗き見できる状態になっていると、セキュリティリスクがあるため、SSHコマンド側が安全のために接続を拒否してくれていたわけです。

パーミッションの数字の読み方

LinuxやMacなどのUnix系OSでは、権限を3桁の数字で表します。
この数字の正体は、「誰に」 「どんな権限」 を与えるかの足し算です。

1. 「どんな権限」:足し算のルール

権限は以下の3つの数字の組み合わせ(合計値)で決まります。

権限 記号 数字 意味
Read r 4 ファイルの中身を見る
Write w 2 ファイルを書き換える
Execute x 1 ファイルを実行する(プログラムなど)

たとえば:

  • 読み書きさせたい場合:4 + 2 = 6
  • **全部(読み・書き・実行)**させたい場合:4 + 2 + 1 = 7
  • 読み込みだけさせたい場合:4
  • 何もさせない場合:0

2. 「誰に」:3桁の並び順

3桁の数字は、左から順に 「所有者」「所有グループ」「その他」 の権限を表しています。

これを「600」に当てはめてみましょう。

  • 1桁目(6):所有者は「4(読む) + 2(書く)」ができる
  • 2桁目(0):グループは何もできない
  • 3桁目(0):その他の人も何もできない

これが「600」の構造です。非常にシンプルかつ強力な制限であることがわかります。

他によく見るパーミッション一覧

「600」以外にも、開発の現場で頻繁に目にする数字があります。これらもセットで覚えておくと便利です。

644:一般的なファイル

構成: 所有者(6) / グループ(4) / その他(4)

  • 自分:読み書きOK
  • 他人:読むだけOK

WebサイトのHTMLファイルや、設定ファイルなどで最も一般的に使われます。「自分は編集するけど、みんなには見てほしい」というファイルです。

755:プログラムやディレクトリ

構成: 所有者(7) / グループ(5) / その他(5)

  • 自分:フルコントロール(7 = 4+2+1)
  • 他人:読み込みと実行だけOK(5 = 4+1)

シェルスクリプトなどの実行ファイルや、ディレクトリによく使われます。ディレクトリの場合、「実行権限(1)」は「そのフォルダの中に入る権限」を意味するため、基本的にディレクトリは755(または700)になります。

777:【危険】フルオープン

構成: 所有者(7) / グループ(7) / その他(7)

  • 全員:何でもできる

誰でも読み書き実行が可能です。トラブルシューティングで一時的に設定することはありますが、本番環境でファイルを777のまま放置するのは絶対にやめましょう。 Web改ざんなどのリスクが非常に高まります。

パーミッションの変更方法

実際にファイルのパーミッションを変更するには chmod(チェンジモード)コマンドを使います。

SSH鍵を600にする

# 変更前の確認(例として644になっている)
ls -l id_rsa
# 出力: -rw-r--r--  1 user  staff  2602  1  1 12:00 id_rsa
# (rw- が自分、r-- がグループ、r-- がその他)

# 600に変更
chmod 600 id_rsa

# 変更後の確認
ls -l id_rsa
# 出力: -rw-------  1 user  staff  2602  1  1 12:00 id_rsa

ls -l の結果が -rw------- になっていれば成功です。最初の - はファイルであることを示し、続く rw- が所有者の権限、残りの ------ がグループと他人の権限(なし)を示しています。

まとめ

  • 600 は「自分だけが見れて、書ける」秘密厳守のパーミッションです。
  • SSHの秘密鍵(id_rsaなど)や、パスワードが書かれた設定ファイルなど、他人に見られてはいけないファイルに使います。
  • 数字の意味(4=読む、2=書く、1=実行)を覚えておくと、755644 などの意味も自然と理解できるようになります。

適切なパーミッション設定はサーバーセキュリティの第一歩です。「とりあえず777」で動かす癖をつけず、必要な権限だけを付与する習慣をつけましょう。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?