Ubuntu 16.04でuWSGIとNginxを使用してDjangoアプリケーションを提供する方法について作業しています。記事の「uWSGI用のsystemdユニットファイルの作成」の最後で、www-data
ユーザーについて説明しています。これは何で、なぜ重要なのですか?
Ubuntu 16.04でuWSGIとNginxを使用してDjangoアプリケーションを提供する方法について作業しています。記事の「uWSGI用のsystemdユニットファイルの作成」の最後で、www-data
ユーザーについて説明しています。これは何で、なぜ重要なのですか?
回答:
セキュリティのため。
ファイルは誰でも書き込めません。それらは、書き込み用のファイルの所有者に制限されています。
Webサーバーは特定のユーザーで実行する必要があります。そのユーザーが存在する必要があります。
ルートの下で実行された場合、すべてのファイルはルートからアクセス可能でなければならず、ユーザーはファイルにアクセスするためにルートである必要があります。 rootが所有者である場合、侵害されたWebサーバーはシステム全体にアクセスできます。 特定のIDを指定することにより、侵害されたWebサーバーは、サーバー全体ではなく、そのファイルへのフルアクセスのみを持つことになります。
別のユーザーIDで実行することにした場合、そのユーザーは適切な特権を得るためにファイルの有効な所有者である必要があります。システム全体のファイルを個人のアカウントに所有することは、混乱を招く可能性があります。
特定のユーザーを作成すると、ファイルの認識が容易になりchown
、サイトに追加された新しいファイルやフォルダーのIDを一貫して認識できるようになります。
所有者のユーザーIDまたは名前は関係ありません。何を選択または決定するかは、Webサーバー構成ファイルで構成する必要があります。
デフォルトでは、所有者のwww-data
構成はApache2のUbuntu構成にあります。これがデフォルトの構成であるため、Webファイルに必要な所有権を簡単に把握できます。変更する場合は、サイト内のファイルを一致するように変更する必要があります。
Nginxは実行しませんが、Ubuntuリポジトリにあるため、www-data
デフォルトの構成でテストされていると確信しています。
www-data
。あなたの質問のように、userIDとgroupIDが存在しない場合は作成するように頼まれたのはそのためです。Apache2のインストールにより、ユーザーが自動的に作成されます。Nqinxについてはわかりません。存在するかどうかを確認するには、次を使用しますiid -u www-data&&id -g www-data
。存在する場合は、ユーザーとグループのID番号が表示されます。Ubuntuのデフォルトでは、ユーザーとグループの番号は33
です。
www-data
で述べたように所有者としてでもセキュリティ上のリスクとなる可能性がありますbase-passwd
ドキュメント所有者は通常、すべてのWebコンテンツサービスへの読み取り/書き込みアクセス権を持っているように、(muruの答え@参照します)。www-data
所有者への書き込みアクセスを削除するか、別の所有者を使用できます。www-data
提供されるすべてのデータへの読み取りアクセスが必ず必要ですが、各ファイルとディレクトリに必要なアクセス許可だけを与えれば、それ以上ではなく、より安全になります。
www-data
Ubuntu上のWebサーバー(Apache、nginxなど)がデフォルトで通常操作に使用するユーザーです。Webサーバープロセスは、アクセス可能な任意のファイルにwww-data
アクセスできます。他の重要性はありません。
base-passwd
ドキュメントから(/usr/share/doc/base-passwd/users-and-groups.txt.gz
):
一部のWebサーバーはwww-dataとして実行されます。このユーザーがWebコンテンツを所有しないでください。所有していると、侵害されたWebサーバーがWebサイトを書き換えることができます。Webサーバーによって書き込まれたデータは、www-dataが所有します。
base-passwd
そのためのドキュメントを掘っていた
www-data
サービスhttpd(apache)がシステムで動作しているユーザー(およびグループ)です。