web-dev-qa-db-ja.com

誰もではなく、特定のユーザーとしてHTTPDを実行する方法は?

現在、topは、ほぼすべてのhttpdプロセスがnobodyによって実行されていることを示しています。 「ほとんど」は、そのうちの2つがrootによって実行されているためです。

どのようにすれば、ユーザーに次のように言わせることができますか:dartagnanporthosaramisathos httpdをそれぞれのユーザーとして個別に実行します?

topを実行すると、次のようなものが表示されます。

 PID USERコマンド
 1234 dartagnan/usr/local/Apache/bin/httpd -k start -DSSL 
 12 porthos/usr/local/Apache/bin/httpd -k start -DSSL 
 342 aramis/usr/local/Apache/bin/httpd -k start -DSSL 
 214 athos/usr/local/Apache/bin/httpd -k start -DSSL 

============>これは私が現在持っているものと私が持っているものです[〜#〜] dont [〜#〜]見てみたい:

 PID USERコマンド
 1234 nobody/usr/local/Apache/bin/httpd -k start -DSSL 
 12 nobody/usr/local/Apache/bin/httpd -k start -DSSL 
 342 nobody/usr/local/Apache/bin/httpd -k start -DSSL 
 214 nobody/usr/local/Apache/bin/httpd -k start -DSSL 
 244ルート/ usr/local/Apache/bin/httpd -k start -DSSL 
 334ルート/ usr/local/Apache/bin/httpd -k start -DSSL 
7
Jiego Cordoviz

別のユーザー|グループとしてhttpdを実行する方法は、httpd.confファイルの ser または group ディレクティブを変更することです。

User Apache
Group Apache

ただし、これは上記の出力のnobodyApacheに変更するだけです。

特定のユーザーとしてhttpdを実行するには、ユーザーごとに構成ファイルを作成して管理する必要があります。設定ファイルでは、ユーザーとグループを適切に指定し、httpdプロセスが Listen ディレクティブを介してバインドするポートを指定する必要があります。特権のあるユーザーだけが1024未満のポートにバインドできることに注意してください。その後、そのように開始できます

apachectl -f /path/to/aramis.conf -k start -DSSL

他のhttpdディレクティブに注意してください。 VirtualHostもユーザーごとに変更する必要があります。

さらに、ELバリアント(RHEL、CentOS Scientific Linuxなど)SELinuxが関係しています。各インスタンスがバインドするポートをhttp_port_tグループに追加する必要があります。

semanage port -a -t http_port_t -p tcp 8888

これにより、httpdインスタンスがポート8888にバインドできるようになります。

ユーザーが自分のホームディレクトリを使用してファイルを提供する場合は、httpd_enable_homedires SELinuxブール値で許可する必要があります。

 setsebool -P httpd_enable_homedirs on

上記ではhttpdのユーザーごとのインスタンスを設定できますが、各ユーザーはURLに追加するために使用するポートを覚えておく必要があります(上記のaramisなど)。

http://example.com:8888

これはすべて非常に厄介です。ユーザーを支援するには、メインのhttpdを通常どおりポート80でリッスンし、ユーザーごとのインスタンスへのリバースプロキシとして機能するように構成する必要があります。次に、アラミスがたとえば.

http://aramis.example.com 

メインサーバープロキシはit aramisのインスタンスです。

あなたはDNSとおそらく他のものも適切に設定しなければならないでしょう。

7
user9517