ターゲット:
(推奨チュートリアル: apache)
一般ユーザーがコンパイルした Apache は、このユーザー Apache で起動する必要がありますポート 1024 より下のポート。
1. 通常のユーザーが sims20 であるとします。このユーザーを使用して Apache をコンパイルしてインストールします。インストール パスは /opt/aspire/product/sims20/apache
./configure --prefix=/opt/aspire/product/sims20/apache --enable-so --enable-modules=all --enable-mods-shared=all --enable-mods-shared='proxy proxy_ajp proxy_balancer proxy_connect proxy_ftp proxy_http proxy_rewrite' make make install
2 です。コンパイルが完了しました。http.conf のリスニング ポートは 80
3 に設定します。通常のユーザー sims20
[sims20@bcd-app01 bin]$ ./apachectl start (13)Permission denied: make_sock: could not bind to address [::]:80 (13)Permission denied: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs
で直接開始します。エラーの原因: Linux では、通常のユーザーは上記のポートのみを使用できます。 1024、および 1024 内のポート このポートは root ユーザーのみが使用できます
4. setuid を使用して問題を解決し、httpd が root 権限で実行できるようにします
root ユーザーとして「/opt/aspire/product/sims20/apache/bin」と入力し、chown root httpd と chmod u s httpd をそれぞれ使用して、httpd の所有者を root に設定し、特別な権限を設定します
[root@bcd-app01 bin]# ls -l httpd -rwxr-xr-x 1 sims20 aspire 3517470 3月 15 17:12 httpd [root@bcd-app01 bin]# chown root httpd [root@bcd-app01 bin]# ls -l httpd -rwxr-xr-x 1 root aspire 3517470 3月 15 17:12 httpd [root@bcd-app01 bin]# chmod u+s httpd [root@bcd-app01 bin]# ls -l httpd -rwsr-xr-x 1 root aspire 3517470 3月 15 17:12 httpd
5。一般ユーザー sims20 で apache を起動します
[sims20@bcd-app01 bin]$ ./apachectl start
Yes 正常に起動し、エラーは報告されませんでした
6.
[sims20@bcd-app01 bin]$ curl http://10.24.12.159:80 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don't have permission to access / on this server.</p> </body></html>
にアクセスしようとすると、403 禁止エラー
7 が報告されましたプロセス
[sims20@bcd-app01 bin]$ ps -ef |grep httpd root 7841 1 0 17:24 ? 00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start daemon 7844 7841 0 17:24 ? 00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start daemon 7845 7841 0 17:24 ? 00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start daemon 7846 7841 0 17:24 ? 00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start daemon 7847 7841 0 17:24 ? 00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start daemon 7848 7841 0 17:24 ? 00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start sims20 8006 3026 0 17:29 pts/4 00:00:00 grep httpd
がデーモン ユーザーからどのように実行されたかを確認すると、httpd メイン プロセスがまだ root ユーザーの権限で実行されており、その子プロセスはより低い権限を持つユーザーとして実行されることがわかります。この低い権限のユーザー デーモンは http.conf
8 で構成されており、http.conf で構成し、ユーザーを root
User daemon Group daemon
から
User root Group rootに変更します。
9. apache
[sims20@bcd-app01 bin]$ ./apachectl restart Syntax error on line 76 of /opt/aspire/product/sims20/apache/conf/httpd.conf: Error:\tApache has not been designed to serve pages while\n\trunning as root. There are known race conditions that\n\twill allow any local user to read any file on the system.\n\tIf you still desire to serve pages as root then\n\tadd -DBIG_SECURITY_HOLE to the CFLAGS env variable\n\tand then rebuild the server.\n\tIt is strongly suggested that you instead modify the User\n\tdirective in your httpd.conf file to list a non-root\n\tuser.\n## を通常のユーザーとして再度起動します #いいえ、パラメータを使用して再コンパイルする必要があります
##
User sims20 Group aspire
[sims20@bcd-app01 bin]$ ./apachectl start [sims20@bcd-app01 bin]$ ps -ef |grep httpd root 9720 1 0 18:09 ? 00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start sims20 9721 9720 0 18:09 ? 00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start sims20 9722 9720 0 18:09 ? 00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start sims20 9723 9720 0 18:09 ? 00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start sims20 9724 9720 0 18:09 ? 00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start sims20 9725 9720 0 18:09 ? 00:00:00 /opt/aspire/product/sims20/apache/bin/httpd -k start sims20 9739 3026 0 18:09 pts/4 00:00:00 grep httpd
12 で Apache を再度起動します。
[sims20@bcd-app01 bin]$ curl http://10.248.12.159:80 <html><body><h1>It works!</h1></body></html># にアクセスしてみます。 ## 成功しました。
以上がApacheを一般ユーザーで起動する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。