パーミッションは、Unixでは当然のように使われている。しかし、小生なんぞ年のせいかパーミッションの数列を直ぐに忘れてしまう。それがきっかけで、本文を書いてメモしておく事にした。パーミッションは時として、セキュリティホールとなる事もある重要なものである事は言うまでも無い。この設定を、一歩間違えたため苦い思いをされた方も少なくは無いであろう。
1.パーミッションの基本的な意味
パーミッションは、ご存知のようにユーザ、グループ、その他に分かれており、その各メンバーに必要な権限を与える仕組みである。
パーミッションの基本的な意味は以下のようになっている。
drwxr-xr-x 21 root root 4096 Jun 7 14:46 usr/
① ② ③ ④ ⑤
①~③までは、それぞれ3ビット表記になっており0~7までの数字で表記するか、あるいは”u”、”g”、”o”、”a”の小文字の英字で表記する事が出来る(後で詳細に記載する)。
① ユーザ権限(つまりオーナー)
② グループ権限
③ その他の方々の権限
④ ユーザ名(オーナー名)
⑤ グループ名
以上のような役割を持っている。
注:drwxr-xr-x の先頭の”d”は、ディレクトリを表しており、ファイルの場合は”-”となる。
2.パーミッションの属性の意味
パーミッションの属性記号の意味は以下の通りである。
drwxr-xr-x 21 root root 4096 Jun 7 14:46 usr/
”r” は、リードを意味しており、読み出しを許可している。
”w” は、ライトを意味しており、書き込みを許可している。
”x” は、エクゼキュートを意味しており、実行を許可している。
この場合だと、/usrディレクトリは、rootがオーナーでグループがrootグループに対して権限を付与している。
rootオーナーには書き込み、読み出し、実行の全ての権限を許可しており、rootグループには読み出しと実行の権限を付与している。さらに、その他のメンバー、グループには読み出しと実行の権限が付与されている。
3.属性記号の付与の仕方
属性記号の付与の仕方は、以下のように行う。
■ 数字での付与
drwxr-xr-x 21 root root 4096 Jun 7 14:46 usr/
この例のような属性を付与する場合は、以下のように行う。
# chmod 755 /usr
■ 数値の意味
0 → - → 何も権限を与えない。
1 → –x → 実行権を与える。
2 → -w- → 書き込み権を与える。
3 → -wx → 書き込み権と実行権を与える。
4 → r– → 読み出し権を与える。
5 → r-x → 読み出し権と実行権を与える。
6 → rw- → 読み出し権と書き込み権を与える。
7 → rwx → すべての権限を与える。
■ 記号での付与
u → ユーザ(オーナー)。
g → グループ。
o → その他の方々。
a → u、g、oの全て。
- → 権限を与えない。
+ → 権限を与える。
例として、
drwxr-xr-x 21 root root 4096 Jun 7 14:46 usr/
を記号で表す場合は、以下のようになる。
# chmod u+w+r+x /usr
# chmod g+r+x /usr
# chmod o+r+x /usr
一発で指定したい場合は、
# chmod u+w+r+x,g+r+x,o+r+x /usr
また、
# chmod -R u+w+r,g+w+r,o+r+x /usr
”-R”オプションで指定ディレクトリ及びファイルは全て指定属性に書き換わる。
また、属性を解除する場合、以下の例のようにするには、
drwxr-xr– 21 root root 4096 Jun 7 14:46 usr/
# chmod o-x /usr
4.オーナーとグループの定義
drwxr-xr-x 21 root root 4096 Jun 7 14:46 usr/
例のような、オーナー名とグループ名を与える場合は、以下のようにする。
■ オーナー定義の場合、
# chown root /usr
■ グループ定義の場合、
# chgrp root /usr
■ 両方同時に行いたい場合、
# chown root.root /usr
(Solarisの場合)
# chown root:root /usr
また、
# chmod -R root.root /usr
”-R”オプションで指定ディレクトリ及びファイルは全て指定オーナー及びグループ定義に書き換わる。
5.特殊な属性の付与
属性には、ここまで説明したほかに特殊な属性がある。結構重要なので記載する。
■ スティッキービット
drwxrwxrwxt のように”t”ビットがついた場合を意味する。
これをつける事によって、書き込み、読み出し、実行は出来るけど名前の変更、削除が出来なくなる。
特に、/tmpとかメールサーバのmailディレクトリの属性に良く使う。
スティッキービットを付加したい場合は、
# chmod +t <ディレクトリ名もしくはファイル名>
または、
# chmod 1777 <ディレクトリ名もしくはファイル名>
のように、数字の先頭に1を付加する。
■ setuidもしくはsetgid
drwxrwsr-x のように”s”ビットがついた場合を意味する。
これをつける事によって、この場合は、グループに対してrootでしか実行できないファイルおよびディレクトリ内のファイル実行が許可される。
しかし、これはあまり使わない方が良いであろう。あたりまえの事であるが、危険すぎる(笑)。
以上
コメント