목표:
(권장 튜토리얼: apache)
일반 사용자가 컴파일한 Apache는 이 사용자에서 포트 1024 아래에서 Apache 포트를 시작해야 합니다.
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 이내의 포트는 루트 사용자만 사용할 수 있습니다
4 . 문제를 해결하려면 setuid를 사용하여 httpd가 루트 권한으로 실행될 수 있도록
루트 사용자로 로그인하고 /opt/aspire/product/sims20/apache/bin을 입력하고 chown root httpd, chmod u+s httpd를 사용하여 설정하세요. httpd의 소유자는 루트 및 특수 권한
[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
를 시작하면 정상적으로 시작할 수 있으며 오류는 보고되지 않습니다
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 프로세스는 여전히 루트 사용자의 권한으로 실행되고 있으며 하위 프로세스는 다음과 같이 실행됩니다. 더 낮은 권한을 가진 사용자와 이 낮은 권한 사용자 데몬은 http.conf
8 에 구성되어 있으며 http.conf에서 구성하고 사용자를 root
User daemon Group daemon
에서
User root Group root
9로 변경합니다. user again
[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
작동하지 않으면 매개변수
10으로 다시 컴파일해야 합니다. 다시 수정 http.conf에서 구성하고 사용자를 일반 사용자
에서
User sims20 Group aspire
11로 변경합니다. 일반 사용자 sims20
[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>
에 액세스하면 성공합니다.
위 내용은 일반 사용자로 아파치를 시작하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!