Linuxのアクセス権限は、パーミッションという機能で管理されています。
ファイルやディレクトリに対し適切なパーミッションを与えないと、管理者やユーザーはそこにアクセスできません。
一方でこのパーミッションはサーバーのセキュリティの要ともなっています。
無分別にアクセス権限を与えすぎると、世界中の人間がサーバーの内容を自由に改変できてしまいます。

権限の確認方法とその概要
ls -l
で各ファイルの権限を確認が出来ます。
例えばこのサイトのサーバの、Tomcatディレクトリ直下で実行すると次のような表示になります。

1行がそれぞれ1つのファイルを表し、その右端にはファイルの名前が記されています。
1番上のbinとBUILDING.txtをサンプルにして、大まかな概要図はこちら。

実際のアクセス権限に関係あるのは、このうちのパーミッションと所有者/所有グループになります。

パーミッションについて
パーミッションはアクセス権限の取り決めにおいてメインとなる部分。同時にやや内容が難しいです。
パーミッションをさらに詳しくした図解は下の通り。
ファイタイプはその名の通り、そのファイルがどういう属性なのかを表します。
下の表はその一覧。
つまり最初の方で示した画像で言うと、binはディレクトリでBUILDING.txtは通常ファイルになります。
9割方は
-
か
d
しか見ないので、他は気にしなくてもいいかもしれないです。
このファイルモードが、誰がどの程度そのファイルにアクセスできるかを示しています。
通常ファイルにおける、それぞれのアルファベットの意味は次の通り。
ディレクトリにおいては、ファイルモードの意味がやや異なります。
パーミッションでは、所有者/所有グループ/第三者それぞれに対し、これらの権限が細かく設定されています。
所有者、所有グループはパーミッションの後ろに表示されている情報と紐づいています。
第三者というのは、つまり指定した所有者と所有グループ以外の全ユーザーを表します。
上の例で言うと、サーバにログインしてるユーザー名がtomcatである場合、binディレクトリに対しrwxが埋まっていることが分かります。
つまり全権限を与えられています。
BUILDING.txtに対しては、rw-と表示されているので、読み込み書き込み権限はあるが実行権限がありません。
ログインしてるユーザーがhpグループに所属してる場合、binディレクトリに対しては同様に全権限が与えられています。
BUILDING.txtに対しては読み込み権限のみあり、書き込みと実行権限はないです。
ログインしてるユーザーが所有者と所有グループの両方に合致してる場合、どちらか一方にでも権限が付与されていれば有効になります。
binもBUILDING.txtも、第三者に対しては全ての権限が閉じられています。
これらのファイルは不特定多数にアクセスさせる必要がないので、これで問題ないです。
しかし例えばHPで使う
htmlファイル等は、第三者への読み込み権限を付与していないと、ブラウザ上に表示することができないです。

chmodによるファイルモードの変更
各ファイルのファイルモードはchmodというコマンドで変更できます。
sudo chmod [変更コード] [変更対象のファイル]
変更コードには様々な作法があるものの、一番楽なのは0~7の数値を3桁入力する方法になります。
例えば「rwx rwx ---」を変更コードに訳すと「770」に、「rw- r-- ---」を変更コードに訳すと「640」となります。
各ファイルモードとコードの対応表は次の通り。
例えばBUILDING.txtに対して、アクセス権限を次のように変更したいとします。
コードは次の通り。
sudo chmod 070 BUILDING.txt
再び
ls -l
で確認すると、BUILDING.txtのアクセス権限が変わってるのが確認できます。
またディレクトリに対しては、
-R
のオプションを付けると、そのディレクトリ下の全てファイルのファイルモードが再帰的に変更されます。
例えばbinディレクトリと、binディレクトリ下の全てのファイルに対してアクセス権を全て閉じたい時は次のように打ち込みます。

chownによる所有者/所有グループの変更
各ファイルの所有者と所有グループは、chownというコマンドで変更できます。
sudo chown [所有者名]:[所有グループ名] [変更対象のファイル]
所有者だけ変えたい時は下のように入力します。
sudo chown [所有者名] [変更対象のファイル]
所有グループだけ変えたい時は下のように入力します。
sudo chown :[所有グループ名] [変更対象のファイル]
例えばBUILDING.txtに対して、所有者と所有グループを次のように変更したいとします。
sudo chown root:test BUILDING.txt
ls -l
で確認すると、BUILDING.txtの所有者/所有グループが変わってるのが確認できます。
chmodと同様に、
-R
のオプションを付けると再帰的な処理が可能となっています。
所有者と所有グループの概念は、パーミッションと深く結びついてるので、適当に設定すると痛い目を見ます。
例えば、下のような2つのファイルがあったとして、
home.jsp
から
user.db
というファイルを参照したいとします。
このアクセスには
r
の読み込みが必要になります。

所有者、所有グループともに読み込みは解放されています。
しかし、読み込む側の
home.jsp
の所有権は「tomcat:hp」ですが読み込まれる側の
user.db
の所有権は「root:root」になっています。
user.db
からすると、所有者「tomcat」も所有グループ「hp」も赤の他人に過ぎません。
user.db
の第三者への権限は全て閉じられているので、
home.jsp
からアクセスしようとすると弾かれてしまいますう。
なのでこの場合、
user.db
の第三者への読み込みを解放するか、所有権もしくは所有グループを
home.jsp
と同一にする必要があります。
例えば下のように、所有グループを「hp」に変えるだけでアクセスは成功します。
0
0