foldrr's weblog

旧ブログ http://d.hatena.ne.jp/foldrr/

Linux パーミッションの考え方

パーミッションはオーナー(u)、グループ(g)、その他(o)の順で評価する。
自分がオーナーではないファイルやディレクトリにアクセスする際には、上記の順でアクセス制御を受ける。
そのため、ディレクトリと同じグループに所属しているユーザーは、その他(o)のアクセス制御の設定に関わらず、ディレクトリに設定したグループのアクセス制御によって制御される。
今まで正しく理解していなかったので整理する。
例で考えるため、仮に以下のユーザーが存在するとする。

# useradd user1 -g hpusers
# usreadd user2 -g hpusers

以下のディレクトリを作成する。

$ mkdir /home/user1/dir1
# chgrp hpusers /home/user1/dir1
# chmod 707 /home/user1/dir1

この時、hpusers グループに所属している user2 ユーザーは dir1 を見ることができるか?
言い換えれば以下のどちらになるのか?

  1. user2 は ohter の立場から dir1 を見ることができる。
  2. user2 は group の立場から dir1 を見ることができない。

答えは 2 となる。

$ su - test2
$ ls /home/user1/dir1
許可がありません。

このようにアクセス制御は、許可と拒否の両方が適用された時、難しく感じる時がある。
重要なポイントはまずオーナー、グループ、その他の順でアクセス制御が評価されるということ。