0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プロセスとOSユーザーの違いとは?

Posted at

はじめに

「プロセスは実行中のプログラムのこと」とは理解していたものの、
「OSユーザーってそもそも何者なのか?」
「www-data や mysql って、プログラムじゃないの?」
といったところで混乱したので、自分の中で整理した内容をまとめておく。

プロセスとOSユーザーは別物

例えば、python3 script.py を実行すれば python3 というプロセスが起動する。
そのプロセスは「誰が実行したのか?」という情報(=OSユーザー)を持っている。

OSユーザーとは?

OSユーザーとは、OS内に登録された“名前付きの利用者”であり、
プロセスを実行する“主体”を示すもの。

ubuntu:普段使う人間用ユーザー(ログイン用)

www-data:Webサーバー専用のユーザー(Apache/Nginxなどがこの名義で動く)

mysql:MySQL専用ユーザー(mysqldがこの名義で動く)

root:管理者ユーザー(すべての権限を持つ)

これらはプロセスではないし、実行ファイルでもない。
ただの名義。そのプロセスがどのユーザーの責任で動いているかを表す。

なぜOSユーザーを分けるのか?

結論「全部をrootで動かすと何でもできてしまって危険」だから。

Webサーバーが乗っ取られても、www-dataユーザーなら他の重要ファイルにはアクセスできない。

mysqldはmysqlユーザーで動いていれば、データベースの領域だけ触れる。

それぞれのプロセスに必要最小限の権限だけを与えることで、セキュリティが保たれる。

まとめ

プロセス:実際に動いているプログラム

OSユーザー:そのプロセスを動かしている“名義”

OSユーザー自体はプログラムではないし、実行されているものでもない

プロセスには必ず「どのOSユーザーが動かしているか」という情報がある

OSユーザーを分けることで、安全にプロセスを管理・実行できる

自分としては、「プロセスは実行されているプログラム」「OSユーザーはそのプロセスの名義」と整理することで
ようやく腑に落ちた。

同じところでつまずいた人の参考になれば。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?