Bạn có thể thấy nơi httpd
được cấu hình để tìm tệp cấu hình của nó bằng cách sử dụng công -V
tắc:
$ httpd -V
Server version: Apache/2.2.15 (Unix)
Server built: Feb 13 2012 22:31:42
Server's Module Magic Number: 20051115:24
Server loaded: APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
Bạn cũng có thể sử dụng lệnh lsof
để xem các tệp mà tiến trình Unix đang truy cập. Phiên bản của tôi httpd
đang sử dụng cổng chứng khoán 80, vì vậy hãy thay đổi 80 thành 8443 trong trường hợp của bạn!
$ netstat -tapn|grep ::80
tcp 0 0 :::80 :::* LISTEN 5338/httpd
Bây giờ bạn có thể chạy lsof
để tìm nơi các tệp nhật ký được ghi vào:
$ lsof -p 5338|grep log
httpd 5338 root mem REG 253,0 10440 3141 /usr/lib64/httpd/modules/mod_logio.so
httpd 5338 root mem REG 253,0 27200 3139 /usr/lib64/httpd/modules/mod_log_config.so
httpd 5338 root 2w REG 253,0 2014 395029 /var/log/httpd/error_log
httpd 5338 root 7w REG 253,0 4140 394789 /var/log/httpd/access_log
Bạn sẽ có thể xác định vị trí của các access_log
tệp cấu hình cũng như xem qua chúng để xác định các lệnh "Thư mục" và "Vị trí". Chúng chỉ định những thư mục cục bộ nào sẽ sử dụng khi báo cho Apache những tệp nào sẽ phục vụ.
Giờ thì sao?
Sau đó tôi sẽ xem qua access_log
để đảm bảo rằng có các mục trong đó tương ứng với các truy cập đối với máy chủ. Ý tôi là điều này là nếu tôi duyệt máy chủ tại http://www.somedom.com/somefile
tôi sẽ thấy quyền truy cập này được ghi lại trong access_log
tệp như thế này:
192.168.1.110 - - [17/Jul/2013:14:39:50 -0400] "GET /somefile HTTP/1.1" 200 4303 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/5
37.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
Các tập tin ở đâu?
Bạn có thể lấy kiến thức trên mà chúng tôi có được và bắt đầu áp dụng nó như vậy:
Các bit này httpd -V
cho chúng ta biết gốc của Apache:
-D HTTPD_ROOT="/etc/httpd"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
Vì vậy, chúng tôi biết các tập tin cấu hình chính là ở đây : /etc/httpd/conf/httpd.conf
. Vì vậy, hãy xem qua tập tin đó cho các dòng này:
$ grep -E "DocumentRoot|Directory \"|^Include" /etc/httpd/conf/httpd.conf |grep -v "^#"
Include conf.d/*.conf
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
<Directory "/var/www/icons">
<Directory "/var/www/cgi-bin">
<Directory "/var/www/error">
Vì vậy, bây giờ tôi biết rằng các thư mục này là nguồn tiềm năng cho tệp chúng ta đã thấy trong access_log
. Các DocumentRoot
và Directories
tôi muốn xem xét thông qua cho các tập tin, somefile
. Nếu nó không ở bất kỳ vị trí nào trong số này thì tôi sẽ tập trung vào Include
thư mục được đề cập ở trên trong grep
đầu ra , /etc/httpd/conf.d/*.conf
.
Các tệp này là các cấu hình bổ sung mà Apache sử dụng, do đó bạn cũng cần lặp lại các bước bằng cách sử dụng grep
để xem qua các tệp này.