AWSでEC2などのインスタンスを作成し接続するときに以下のようなコマンドを実行します。
$ chmod 400 [pemファイル名].pem
このchomd 400が何を意味しているかを解説しています。
chomdとは?
chmodとはchange modeの略で、ファイルやディレクトリのアクセス権限を変更するためのコマンドです。
$ chomd [オプション] [アクセス権] [ファイル/ディレクトリ]
・Unix系のOSで使えるコマンド。
※windowsでは使えない。→ gitbashで使える。
・アクセス権の変更を行う
アクセス権の設定とは?
アクセス権を設定すると、例えば以下のように、「このファイルは読み取り専用に設定されています。」と表示されます。
逆に、読み込めない権限のファイルを、誰もが読み込めるように変更するのもアクセス権の変更です。
400とは?
chmodの後ろで指定している「400」とは、誰にどのような権限を与えるかの指定になります。
プライベートキーなど、重要なファイルを誤って中身を変更しないようにするときに使います。
コマンドで何が実行されているか?
chomod 400コマンドでどういった処理が実行されているかをビジュアルで見ると以下のようになります。
$ chmod 400 test.txt
これは、デスクトップにあるtest.txtファイルに所有者のみの読み込み権限を与えるものです。
ファイルのプロパティの属性の□読み取り専用(R)にチェックが入る処理になります。
アクセス権限の種類
アクセス権限の設定で指定できるユーザーや権限は複数あります。
設定できるユーザーは3種類
①所有者、②グループ、③その他(①、②以外のすべて)
ユーザーの指定は数値の桁で行います。
グループはファイル/フォルダ毎に別途設定します。
権限の種類は4種類
①読み取りのみ、②書き込み、③実行のみ、④すべて禁止
それぞれの権限に数字が割り振られています。
- 読み取りのみ = 書き込み☓、実行☓
- 書き込み = 読み取り◯、実行☓
- 実行のみ = 読み取り☓、書き込み☓
権限の組み合わせ
実際に各ユーザーに対して権限を割り振る場合は、権限を組み合わせ、3つの数値を足し合わせた数値を指定します。
例えば、読み取り専用のチェックマークを外したい場合は、2 or 3 or 5 or 7を指定します。(書き込みの許可を含む)
使用例
$ chmod 740 ファイル名
・所有者:すべて許可
・グループ:読み取りのみ許可
・その他:すべて禁止
注意点:桁数により設定対象が変わる
2桁指定の場合
2桁で指定する場合、所有者の権限がなくなり、グループと、ユーザーのみの設定になります。
chmod 33 = chmod 033 と同じになります。
$ ls -l
-r-x-wx-wx 1 root 1796141739 0 1 27 10:33 hello.txt
#権限変更
$ chmod 33 hello.txt
#確認
$ ls -l
-----wx-wx 1 root 1796141739 0 1 27 10:33 hello.txt
1桁指定の場合
1桁のみの指定の場合は、所有者とグループの権限がなくなります。
chmod 7 = chmod 007 と同じになります。
$ ls -l
-----wx-wx 1 root 1796141739 0 1 27 10:33 hello.txt
#権限変更
$ chmod 7 hello.txt
#確認
$ ls -l
-------rwx 1 s01386 1796141739 0 1 27 10:33 hello.txt
権限の指定方法
権限の指定方法は2種類あります。
これまでに解説してきた3桁の数値で指定する方法が①数値モードになります。
これらの数値を記号(②シンボルモード)に置き換えることもできます。
シンボルモードとは?
シンボルモードは権限を記号で付与する記述方法です。
個々の条件を+/-の記号で付与したり外すことができます。
シンボルモードの権限の種類
記号 | 権限 |
---|---|
r | 読み込み |
w | 書き込み & 削除 |
x | 実行 |
シンボルモードのユーザー指定
記号 | 権限 |
---|---|
u | 所有者 |
g | グループ |
o | その他 |
a | すべて(u,g,o)。省略も同じ |
シンボルモードの権限の付与
記号 | 権限 |
---|---|
+ | 後述の権限を付与 |
– | 後述の権限を削除 |
= | 後述の権限にする |
シンボルモードの使い方
シンボルモードでアクセス権限を指定するときは、ユーザーを指定して権限を指定します。
$ chmod [ユーザー][記号][権限][ファイル]
#所有者に書き込み権限を付与
chmod u+r test.txt
ユーザーを複数指定する方法
シンボルモードでは権限を付与するユーザーをカンマでつないで複数指定することができます。
$ chmod [ユーザー][記号][権限],[ユーザー][記号][権限][ファイル]
#所有者:すべて(rwx)
#グループ:読み・書き(rx)
#その他:読み込みのみ(r)
chmod u+rwx,g+rx,o+r test.txt