ファイル所有権とパーミッション
Linuxはマルチユーザーシステムなので、複数ユーザが使います。
これに対応するために、ファイルやディレクトリには所有権が存在します。
また、ユーザはグループに所属しており、グループにも所有権があります。
それを確認するには、lsコマンドの【-l】オプションで確認できます。
$ ls -l test.txt -rw-rw-r-- 1 ec2-user ec2-user 3 Sep 25 08:03 test.txt
わかりにくいですが、一つ目のec2-userが所有者、二つ目のec2-userがグループです。
ec2-userというユーザがあり、そのユーザがec2-userグループに所属しているという設定になっているのですが、test.txtの所有権が上記の二つにあることがわかります。
-rw-rw-r–
で、これ何?って話ですよね。これはアクセス権です。
このままだと説明しにくいので、分解します。すると、
【- rw- rw- r–】となります。
1文字目は、ファイル種別です。
– | ファイル |
d | ディレクトリ |
l | シンボリックリンク |
あとは、3つずつの塊だと思ってOKです。
塊の中身が権限で、以下の通りです。
r | read | 読み取り権 | 4 |
w | write | 書き込み権 | 2 |
x | execute | 実行権 | 1 |
– | 権限なし | 0 |
なので、例にある【rw-】は、読めて書けるけど実行できないファイルということですね。
右の数値は権限を数値で表すためのものです。2進数だと思っておけば覚える必要はありませんね。なので、【rw-】は 6 ということになります。
最後に3つの塊についてです。
所有者、グループ、その他のユーザ、のアクセス権となります。
先の例は、【- rw- rw- r–】ですので、
・所有者とグループは、読めて書けるけど実行できない
・その他のユーザは、読むだけ
と、読めればOKです。
ちなみに、数値で表すと記載しましたが、読み方は 664(1文字目のファイル種別は数えない)となります。
この権限のことを、パーミッションと呼びます。
chown【チェンジオーナー】
ファイルの所有者を変更するコマンドです。
$ chwon 所有者名 ファイル名(ディレクトリ名)
ディレクトリもこれで変更できるのですが、そのディレクトリだけ変更されることになります。
もし、ディレクトリ以下のファイルをすべて変更したい場合は、【-R】オプションを使うことで可能です。
chgrp【チェンジグループ】
$ chgrp [-R] グループ名 ファイル名(ディレクトリ名)
chownと同じようなものだと思ってよいです。
[]でオプションを記載させていただきました。これも使い方はchownと同じです。今後、オプションについてはこの様に記載します。
chmod【チェンジモード】
$ chmod [-R] アクセス権 ファイル名(ディレクトリ名)
chownやchgrpより、よく使いますので、ちゃんと理解しましょう。
要は、アクセス権を変更するものです。
[-R]については、上記と同様です。
基本構文は上記なのですが、数値の場合と、記号の場合とで2パターンあります。
■数値
$ chmod 644 test.txt
test.txtを644に変更します。
644なので、所有者・グループ・その他の全員が読めて、所有者だけが書き込める、というファイルですね。
■記号
$ chmod g+w test.txt
数値の時に、グループは4(r–)になっています。
そのグループに対して、write権限を付与しています。
つまり、これを実行すると、権限は664になります。
【g+w】は、下図でいうと、【操作対象 操作 アクセス権】なのです。
ちょっと説明が足りませんかね。以下を参照すれば意味はわかると思います。
記号 | 説明 | |
操作対象 | u | 所有者 |
g | 所有グループ | |
o | その他のユーザ | |
a | すべてのユーザ | |
操作 | + | 権限追加 |
– | 権限削除 | |
= | 権限指定 | |
アクセス権 | r | 読み取り許可 |
w | 書き込み許可 | |
x | 実行許可 |
パーミッションやユーザー・所属グループについてなんとなくわかったと思いますので、以下をやってみましょう。
・ホームディレクトリにあるcal.txtのパーミッションと所有者・グループを確認 ・cal.txtの権限を所有者だけが書き込み読み取りが可能で、それ以外は 読み取りだけ出来る権限に変更。(数値を使って) ・所有グループに書き込み権限を追加。(記号で)
ディレクトリのアクセス権
ディレクトリのアクセス権はファイルのそれとはちょっと印象が違うので簡単に触れておきますね。
■読み取り権限のみ設定されたディレクトリ
lsは実行可能、cd、catは実行不可
※catはディレクトリ内のファイルに対して
■書き込み権限があるディレクトリ
書き込み権限がディレクトリにあると、そのディレクトリ配下のファイルにアクセス権がなくても、削除が出来る。
ちなみに、catはできません。
■実行権のないディレクトリ
cd、catのどちらも出来ません。
と言われてもピンときませんよね。
自分でディレクトリと配下のファイルを適当に作って、試してみるのが一番しっくりくると思いますので、やってみましょう。
テキストファイルの編集
vi というコマンドで行うのですが、こちらについては会社HP【viに慣れておこう】に公開してありますので、そちらを参照してください。