Найти размещенные каталоги Jetty / Apache - PullRequest
1 голос
/ 05 мая 2010

Допустим, у меня есть каталог, который размещается на Jetty или Apache (я хотел бы получить ответ на оба вопроса), я знаю URL, включая порт, и могу войти на сервер.

Как мне найти каталог, размещенный на определенном порту?

Я также хотел бы пойти другим путем, у меня есть папка на сервере, которую я знаю, если она размещена, но я не знаю порт, поэтому не могу найти его в веб-браузере.

Как найти список размещаемых каталогов?

Это давало мне покоя целую вечность, но я никогда не удосужился спросить раньше!

Спасибо.

Ответы [ 3 ]

2 голосов
/ 12 мая 2010

Это способ узнать это для Apache. Допустим, у вас есть URL http://myserver.de:8081/somepath/index.html

Шаг 1: Найти процесс с открытым портом

Это можно сделать с помощью lsof в оболочке сервера, в которой перечислены открытые файлы (и порты), а также процессы, связанные с ним:

myserver:~ # lsof -i -P | grep LISTEN | grep :80
apache2   17479        root    4u  IPv6 6271473       TCP *:80 (LISTEN)

Теперь мы знаем, что существует процесс под названием «apache2» с идентификатором процесса 17479

Шаг 2: Узнайте больше о процессе

Теперь мы можем взглянуть на среду процесса, где должна быть доступна дополнительная информация:

myserver:~ # (cat /proc/17479/environ; echo) | tr "\000" "\n"
PATH=/usr/local/bin:/usr/bin:/bin
PWD=/
LANG=C
SHLVL=1
_=/usr/sbin/apache2

Окей, исполняемый файл процесса - / usr / sbin / apache2. Теперь давайте посмотрим на командную строку.

myserver:~ # (cat /proc/17479/cmdline; echo) | tr "\000" " "
/usr/sbin/apache2 -k start

Шаг 3: Поиск конфигурации процесса

Наше предыдущее исследование показало, что в командной строке не указан специальный файл конфигурации с параметром -f, поэтому мы должны найти местоположение по умолчанию для этого процесса. Это зависит от того, как командная строка по умолчанию компилируется в исполняемый файл apache2. Это можно как-то извлечь из него, но, очевидно, это расположение по умолчанию для Apache 2 на моей машине (Debian Etch), а именно /etc/apache2/apache2.conf.

Шаг 4: проверка файла конфигурации Apache

Это снова требует некоторых знаний о конфигурации apache. Конфигурационный файл может включать в себя другие файлы, поэтому нам нужно сначала найти их:

myserver:~# cat /etc/apache2/apache2.conf | grep -i ^Include
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf
Include /etc/apache2/conf.d/
Include /etc/apache2/sites-enabled/

Хороший список. Эти конфиги рассказывают все о вашей конфигурации, и есть много опций, которые могут отображать файлы в URL. В частности, apache может обслуживать разные каталоги для разных доменов, если все эти домены сопоставлены одному и тому же IP. Допустим, на вашем сервере вы размещаете целую группу доменов, а затем «myserver.de» сопоставляется либо с конфигурацией по умолчанию, либо с конфигурацией, которая обслуживает этот домен специально.

Наиболее важными директивами являются DocumentRoot, Alias ​​и Redirect. На моей системе следующее дает краткий обзор (комментарии опущены):

myserver:~# ( cat /etc/apache2/apache2.conf; cat /etc/apache2/sites-enabled/* ) | grep 'DocumentRoot\|Alias\|Redirect'
    Alias /icons/ "/usr/share/apache2/icons/"
        DocumentRoot /var/www/
                RedirectMatch ^/$ /apache2-default/
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    Alias /doc/ "/usr/share/doc/"
        DocumentRoot /var/www/
                RedirectMatch ^/$ /apache2-default/
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    Alias /doc/ "/usr/share/doc/"

Так как часть «mypath» в URL не имеет прямого соответствия, я могу с уверенностью предположить, что она находится ниже DocumentRoot / var / www /, поэтому результат моего поиска таков:

http://myserver.de:8081/somepath/index.html --> /var/www/mypath/index.html

Вы можете сделать поиск аналогичным образом для пристани.

1 голос
/ 13 мая 2010

Как правило, вы можете вести документ, детализирующий все каталоги файловой системы и соответствующие URL-адреса, которые создаются. Это будет отвечать на запросы файлов> URL и URL-> сопоставлений файлов, а также полезно для планирования, управления ресурсами и проверки безопасности.

Далее следует пища для размышлений, а не какое-либо серьезное предложение. Мой «правильный» ответ - использовать хорошую документацию. Однако ...

Возможен автоматизированный подход. Думая свободно (не обязательно практически!), Вы можете найти / создать модуль / расширение Apache для добавления небольшого виртуального файла в каждый веб-каталог, поскольку он подается из файловой системы. Содержимое этого виртуального файла будет содержать расположение каталога на сервере, с которого отправляются файлы, а также, возможно, имя внутреннего сервера, IP-адрес или другие сведения, которые помогут преодолеть разрыв с тем, что вы видите на веб-стороне, и где он находится в вашей внутренней сети.

Сопоставить файлы с URL сложно. Возможно, вы сможете автоматизировать его, отсканировав журналы http-доступа, которые настроены с помощью специального регистратора, который регистрирует запись при подаче файла. Сканируя доступный URL-адрес и предоставляя соответствующий файл, вы можете сопоставить файлы с URL-адресами. (Вы также получите URL-> сопоставление файла, если вы не хотите вручную просматривать URL-адрес, как я обрисовал в общих чертах в предыдущем абзаце.)

0 голосов
/ 28 мая 2011
apache2ctl -S

или (для старых компьютеров):

apachectl -S

Вы увидите файлы vhosts со строками, в которых описаны эти сайты. Там вы можете искать каталоги.

...