Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 3: Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² doc_root ΠΈΠ»ΠΈ user_dir

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π²Π΅Π±-сСрвСра Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ содСрТимого Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ скриптов ΠΈ исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² ослабляСт Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ. Из-Π·Π° ошибок Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сСрвСра, ΠΊΠΎΠ³Π΄Π° скрипты Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ, Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΊΠ°ΠΊ HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΡƒΡ‚Π΅ΠΊΠ°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ информация Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ систСмныС администраторы ΠΎΡ‚Π΄Π°ΡŽΡ‚ прСимущСство настройкС Π΄Ρ€ΡƒΠ³ΠΎΠΉ структуры ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² хранСния скриптов, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· CGI-интСрфСйс PHP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ, Π° Π½Π΅ Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠ΄Π° скриптов.

ΠŸΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ΡΡ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ doc_root ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отличаСтся ΠΎΡ‚ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π²Π΅Π±-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ссли ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ провСряСт запросы Π½Π° ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ описываСт прСдыдущая Π³Π»Π°Π²Π°, нСдоступСн.

ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ для PHP-скриптов ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ PHP Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ doc_root ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния PHP_DOCUMENT_ROOT. ΠŸΡ€ΠΈ установкС ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° для PHP-скриптов CGI-вСрсия Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° PHP сформируСт ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ трСбуСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ, Π½Π° основС значСния Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ doc_root ΠΈ ΠΏΡƒΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π² запросС. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ скрипты Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ этого ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° user_dir, Π½Π΅ выполнятся.

Другая Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°, которая ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ бСзопасныС ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ, β€” user_dir. ΠŸΡƒΡ‚Ρ‘ΠΌ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ трСбуСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ, управляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° doc_root, Ссли Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ user_dir Π½Π΅ установили. ΠŸΡ€ΠΈ запросС URL-адрСса Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ http://my.host/~user/doc.php ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Ρ„Π°ΠΉΠ» с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ~user/doc.php (Π΄Π°, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° начинаСтся с символа ~) Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ установили Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ doc_root, Π° Π½Π΅ Ρ„Π°ΠΉΠ» Π² домашнСм ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Но Ссли для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ user_dir установили Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ public_php, Ρ‚ΠΎ запрос URL-адрСса http://my.host/~user/doc.php ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ Ρ„Π°ΠΉΠ» doc.php, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»Π΅ΠΆΠΈΡ‚ Π² домашнСм ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ public_php. ΠŸΡ€ΠΈΠ²Π΅Π΄Ρ‘ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Ρ„Π°ΠΉΠ» /home/user/public_php/doc.php, Ссли домашний ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ /home/user.

PHP Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ user_dir нСзависимо ΠΎΡ‚ настройки Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ doc_root, поэтому ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π²Π΅Π±-сСрвСра ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы