私はGnu / Linuxの経験がほとんどありません。
現在、複数のApache2仮想ホストを作成するVPS(Debian 10)を設定しています。
すべての仮想ホストディレクトリはにあります/var/www/vhosts
。
したがって、各仮想ホスト(たとえばmyproject.com
)に対して次のことを行います。
/var/www/vhosts/myproject.com
/var/www/vhosts/myproject.com/public_html
/var/www/vhosts/myproject.com/__logs__
各仮想ホストに対して新しいユーザーが作成されます。上記の例では、 -usr_myproject
ユーザーのホームディレクトリ(FTP目的)はでなければなりません/var/www/vhosts/myproject.com
。
私の問題は、このユーザーと仮想ホストディレクトリに正しい権限とグループを割り当てることです。ディレクトリについても同じ質問です/var/www/vhosts
。
ウェブリソースのサポートやリンクをいただきありがとうございます。
ありがとうございます。
答え1
これITKapache2モジュールは、仮想ホストごとにさまざまなシステムユーザーをサポートします。 Debian用にパッケージされていますapache2-mpm-itk
。
ユーザーを作成または管理しません。一般的なツールの使用はユーザー次第です。
私はこれを頻繁に使用し(共有サーバー上で多くの仮想ホストを実行しているとき)、通常各仮想ホストが独自のホームディレクトリ(/home/WEB/username
)を持ち、その仮想設定html
をしました。ホームディレクトリ。これにより、必要に応じて他のサーバーに簡単に移行できます。logs
cgi-bin
ftp
また、Webホストの所有者が自分のサイトを使用またはsftp
更新したり、自分のログファイルなどを取得したりするのが簡単になります。また、ある仮想ホストの所有者が別の仮想ホストに属するファイルを読み取ることができないようにし、スクリプトや構成ファイルに含まれるパスワードでデータベースなどの機密情報を保護します。
ITKウェブページから:
apache2-mpm-itk (減らして mpm-itk) は、Apache Web サーバーのマルチプロセッサモジュール (MPM) です。 mpm-itk を使用すると、個別の uid と gid で各仮想ホストを実行できます。つまり、ある仮想ホストのスクリプトおよび構成ファイルを他のすべての仮想ホストから読み取る必要はなくなります。
mpm-itkは伝統的なprefork MPMに基づいています。つまり、スレッドではなくコードを問題なく実行できるという意味です。一方、スレッドを使用して得られるパフォーマンス上の利点は失われます。その価値があるかどうかは自分で決めなければなりません。また、要求ごとに追加のフォークがあるため、プリフォークと比較して追加のパフォーマンスが低下します。
そして:
フリーフォークMPMの新しい構成設定は次のとおりです。
ユーザーIDの割り当て:uidとgid(または実際にはユーザー名とグループ名)の2つのパラメータを使用します。元のuidを指定するには、「#」を使用してください。要求を解析した後に仮想ホストが実行されるuidとgidを指定します。 、もちろん)。ユーザーIDを割り当てないと、ApacheのデフォルトユーザーIDが使用されます。
ユーザーID式の割り当て、グループID式の割り当て(Apache 2.4以降のみ):AssignUserIDに似ていますが、Apache式を使用してユーザーまたはグループを動的に選択します。下記をご覧ください。
クライアント仮想ホストの最大数:仮想ホスト用の独立したMaxClient。これは、仮想ホストの半分がNFSサーバーに依存している場合に便利です。 NFS サーバーがダウンした場合、子プロセスが NFS に依存しないホストをシャットダウンするために NFS で永遠に待機することは望ましくありません。これは、NFS依存仮想ホストが「サーバー使用量が多すぎる」状態を経験しながら、他の仮想ホストが正常に実行されるようにする安全対策として使用できます。 (もちろん、サイトがあまりにも多くのリソースを消費するのを防ぐためにこの機能を使用することもできますが、おそらくより良い方法があります。)
良い値: 一部の要求を減らして CPU 時間を短縮できます。
機能の有効化(Apache 2.4以降のみ):親プロセスからほとんどのルート機能を削除し、いくつかの追加機能(特にsetuid)とともに、User / Groupディレクティブで指定されたユーザーとして実行されます。より安全ですが(特に上記のLimitUIDRangeと組み合わせて)、その機能をサポートしていないファイルシステム(NFSなど)でサービスを実行すると問題が発生する可能性があります。
UID範囲制限、GID範囲制限(Apache 2.4以降のみ):setuid()およびsetgid()呼び出しを指定された範囲に制限します(例:「LimitUIDRange 1000 2000」は、1000から2000(含む)の間のuidのみを許可します)。セキュリティをある程度向上させることができます。これにはseccomp v2(Linux 3.5.0以降)が必要です。また、setgroups()は技術的な理由に限定されないため、悪意のあるプロセスは依然として目的のグループを取得できますが、成功した攻撃を実行することはそうでない場合よりも難しいです。
答え2
各ユーザーが独自のファイルを持つことができるように、ファイルACLは役に立ちますが、ACLを使用してApacheがそのファイルを読み取ることを許可することもできます。 ACLの基本権限を確認することもできます。