パーミッションとは?
パーミッションとはファイル、ディレクトリに設定された
「読む・書込み・実行」の3つの権限のことをいいます。
そして、この権限は
- 所有者
- 所有グループに属するユーザー
- その他のユーザー
に対してそれぞれ設定されます。
- ログインしているユーザーの表示は
whoami
コマンド - ユーザーのリストは
cat /etc/passwd
コマンドで確認ができます。
所有者・所有グループとは??
ファイル・ディレクトリを作成したユーザーが所有者となります。
そして所有者のプライマリグループが所有グループとなります。
$ ls -l
-rwxrw-r-- 1 root root 970775 Feb 7 00:47 hoge.php
最初の root が所有者、2番目の root が所有グループとなります。
所有者を変更する場合は chown
(change owner) コマンド
所有グループを変更する場合は chgrp
(change group) コマンド
を実行します。
プライマリグループとは
各ユーザーは必ず1つのプライマリグループ(主グループ)に所属しています。
これは、ユーザーが作成されたときに自動的に割り当てられるグループです。
ファイルのアクセス権
ファイルのアクセス権は
- 所有者
- 所有グループに属するユーザー
- その他のユーザー
に対して3つの権限を設定します。
- 読み取り = r(Read)
- テキストファイルを開いて内容を読む権利(cat、less、more コマンドでファイルの内容を表示ができる)
- 書き込み = w(Write)
- テキストファイルを編集して保存する権限
- 実行 = x(eXecute)
- シェル、プログラムの実行権
先ほどのコマンドを例に見てみましょう!
$ ls -l
-rwxrw-r-- 1 root root 970775 Feb 7 00:47 hoge.php
最初の10文字-rwxrw-r--
がパーミッションを示しています。
- 一文字目の
-
はファイルの種類になります。
-
-
通常のファイル -
d
ディレクトリ -
l
シンボリックリンク(ショートカットのようなもの)
- 続いて
rwxrw-r--
の9文字は3つに分けて権限を表しています。
-
rwx
所有者の権限- 読み取り・書き込み・実行が可能
-
rw-
所有グループの権限- 読み取りと書き込みが可能(実行不可)
-
r--
その他ユーザーの権限- 読み取りのみ可能
アクセス権は数字で表示されることもある
先ほどのrwxrw-r--
は764
とも表記されます。
- 読み取りは 4
- 書込みは 2
- 実行は 1
となるのでrwx
は合計すると7になるということです!
例:
rwx = 4 + 2 + 1 = 7
rw- = 4 + 2 + 0 = 6
r-- = 4 + 0 + 0 = 4
ディレクトリのアクセス権
ディレクトリのアクセス権は基本的にファイルと同様ですが、
一部ややこしい箇所があります!
ls -ld lang
drwxr-xr-x 15 root root 4096 Jan 8 05:13 lang
- ディレクトリ読み取り権(r)
- lsコマンドでフォルダの中身を参照できます。
- ディレクトリ書き込み権(w)
- 設定されたフォルダ内で新しいファイル・フォルダの作成、変更、削除ができます。
- ただし、実行権限(x)がないとこれらの操作は実行できません。
- ディレクトリ実行権(x)
- ディレクトリにcdで移動ができます。
ややこしいのですが、WとXはお互い依存していて
書込み権限があっても、実行権がないと作成・編集・削除が実行できないのです!
例えば r-x
の権限では
ディレクトリの中身を見たり移動したりできますが、
ディレクトリ内のフォルダ・ファイルを編集することはできません。
パーミッションの変更
パーミッションを変更するには chmod
コマンドを実行します。
そしてchmodコマンドの使い方は2種類あります。
chmodを実行できるのは所有者もしくはrootユーザーのみになります。
1. 数値で指定
# 所有者に全権限、グループとその他に読み取りと実行のみ
chmod 755 script.sh
# 所有者に全権限、グループに読み書き、その他に読み取りのみ
chmod 764 data.txt
2.文字で指定
-
対象
- u = 所有者(user)
- g = グループ(group)
- o = その他(others)
- a = 全て(all)
-
操作
-
+
= 権限を追加 -
-
= 権限を削除 -
=
= 権限を設定
-
-
権限:
- r = 読み取り
- w = 書き込み
- x = 実行
# 所有者に実行権限を追加
chmod u+x script.sh
# グループから書き込み権限を削除
chmod g-w file.txt