第9回 パーミッション設定の重要性 - Linux入門講座

PHP 中級 講座

はたぴょん先生のLinux講座

Lecutures on PHP

第9回 パーミッション設定の重要性 (その1)

 このエントリーをはてなブックマークに追加

プロセスとプロセスが持つ権限

はたぴょん先生こんにちは、はたぴょんです。
みなさん、ゴールデンウィークはいかが過ごされましたか?私はあれこれと原稿に追われ、家から一歩も出ないままゴールデンウィークが終了してしまいました(涙)夏休みは欲しいなぁと、まだまだ先の予定を妄想していたりします。

さて、今回はちょっと難しい話かもしれません。テーマはパーミッションについてなのですが、なぜ重要かという点はLinuxが実行中のプログラムを管理する単位である「プロセス」や、「Apacheのしくみ」について少し触れなければならないからです。しかし、後々に必ず必要となる知識でもあるので、がんばって読み進めてみてください。

Linuxでは、実行中のプログラムはプロセスと呼ばれる単位で管理されます。例えば、ユーザがターミナルを立ち上げればターミナルのプログラムそのもの、そこからviを立ち上げればviのプログラムがメモリにロードされ実行されます。これらは全てプロセスという単位で管理されます。

実行中のプロセスはpsコマンドで確認できます。特に、psコマンドに「aux」という3つのオプションを付けることで実行中の全てのプロセスを一覧表示できます。

実行中の全てのプロセスを一覧表示

これらのプロセスはそれぞれ一定の権限を持っています。我々ユーザーがLinuxを利用する際に、認証をしアカウントに応じた権限が与えられるように、プロセスにもそれぞれ権限が与えられています。

プロセスが持つ権限もpsコマンドで確認することができます。先ほどのスクリーンショットの左側には「root」と表示されています。これは、これらのプロセスがrootユーザーの権限を持っていることを表します。
ここで、プロセス毎に権限が与えられている様子を確認するために、次のような操作を行ってみました。

一般ユーザーでターミナルを立ち上げ、そこからviを立ち上げます。同様にもうひとつターミナルを立ち上げ、そちらではrootユーザーに切り替えた状態でviを立ち上げます。この状態でpsコマンドでプロセスの状態を確認します。

プロセスの状態を確認

はたぴょん先生全てのプロセスが表示させると、何が何だかわからないのでgrepコマンドでviに関する表示のみを得ています。2つのviのプロセスが表示されていますが、1つはKnoppix(一般)ユーザー、1つはrootユーザーで動作しているのがわかります。

通常、ユーザーのコマンド操作により起動されたプログラムは、そのユーザーの権限を引き継ぎます。しかし、バックグラウンドで動作するプログラムなどは独自の権限を持ち動作するものがあります。WebサーバソフトウェアであるApacheもそのようなプログラムの一種です。

Apacheが動作しているサーバで、psコマンドを使ってプロセスの状態を確認してみるとわかります。

Apacheが動作しているサーバでプロセスの状態を確認

設定によって異なりますが、デフォルトではApacheはapacheユーザーの権限で実行されています。

  • 1
  • 2

  



Pick Up Q&A

Q
マジッククォートとmysql_real_escape_string
 このエントリーをはてなブックマークに追加 
A
magic_quotes_gpcでは、SQLインジェクション対処は十分できません。主な理由として、以下が上げられます。 ・magic_quotes_gpcは文字コードを考慮しないで処理するので、Shift_JISを使っている場合、SQLインジェ...

>>続きを読む

SQLインジェクション対策は時と場合で使う関数が変わります。その時にあったものを使いましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)