понедельник, 9 ноября 2009 г.

PHP и файлы за пределами директории сервера

Недавно возникла необходимость установки и настройки CMS Moodle, которая хранит свои данные за пределами отведенной ей папки (доступной из интернета). Возник вопрос о возможности доступа PHP-скрипта к файлам вне серверной директории.

PHP, установленный со стандартными конфигами, а у меня такой и стоял, представляет опасность вашей машине. По стандарту PHP сконфигурирован так, что сами скрипты вправе обращаться к любому файлу за пределами директории веб-сервера (/var/www).

Разумеется это является серьезной угрозой для безопасности не только веб-серва, а всей системы вцелом. Представьте что случиться, если злоумышленнику удастся залить к вам на сервер веб-шелл, тогла он получит доступ ко всем файлам файловой системы, незащищенных правилами доступа.

Чтобы этого не случилось достаточно правильно сконфигурировать файл php.ini (/etc/php5/apache2/php.ini).
Необходимо раскоментить директиву open_basedir и придать ей нужное значение. После знака равно указывается директория из которой скрипт не может выходить во время своего исполнения. Для указания нескольких директорий следует разделять их знаком двоеточия. А для того чтобы разрешить скриптам доступ к текущей директории (где они в данный момент находятся) и всем директориям ниже по уровню следует придать директиве значение "."

;разрешить доступ к директориям /var/www и /var/webdata/
open_basedir=/var/www:/var/webdata/

или

;разрешить доступ к текущей директории и всем директориям ниже
open_basedir=.

суббота, 7 ноября 2009 г.

Звук с цифрового выхода на Ubuntu 9.10

На Ubuntu 9.04 звук никак не хотел идти из цифровых выходов.
Собственно, звуковая карта - Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (ALC882) . Провозившись кучу времени с настройками Alsa и PulseAudio мне всё таки удалось настроить звук на цифровых выходах, замечу что на аналоговых выходах звук присутствовал сразу после установки системы и работал стабильно.
Но всё равно находились некоторые приложения которые были способны убить звук и приходилось перезагружать Alsa.

Так что же произошло после обновления Убунты на новую версию? Сперва произошло следущее: звук пропал. Некоторая часть радости от перехода на новую версию ОС исчезла при одной лишь мысли о предстоящем долгом и противном процессе настройки звука.
Но к счастью всё оказалось не так плохо!

По привычке решил зайти в System -> Preferenses -> Sound и проверить работу различных звуковых интерфейсов. И тут я обнаружил что настройщик звука в новой версии радикально поменялся. Отныне он выглядит так:



Теперь в нем нет привычных профилей и возможности выбора какого-либо звукового интерфейса для конкретного профиля. Звуковые интерфейсы вообще сокрыты от пользователя.
Признаюсь что это меня несколько расстроило, теперь стало даже не ясно в какую сторону копать: толи в сторону PulseAudio, толи в сторону Alsa.
Оказалось что всё таки в сторону PulseAudio.

Замечу, что PulseAudio Volume Control не решил проблему, в нем цифровой выход не отображается до сих пор (хотя звук из него идет прекрасно). Данная программа упорно указывает на то что устройством вывода является Analog Stereo.

А теперь само решение:
Коммандой aplay -l узнаем какие аудио-устройства наличествуют в системе:


card 0: Intel [HDA Intel], device 0: ALC882 Analog [ALC882 Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 1: ALC882 Digital [ALC882 Digital]
Subdevices: 0/1
Subdevice #0: subdevice #0

Соответственно, нас интересует устройство hw:0,1.
Далее следует отредактировать файл /etc/pulse/default.pa
В строке:

load-module module-alsa-sink device=hw:0,0
следует заменить hw:0,0 на hw:0,1
После этого нужно перезапустить демон PulseAudio коммандой pulseaudio --kill и перезагрузить Alsa коммандой alsa force-reload
После этого всё должно заработать.

В итоге звук работает прекрасно, прекратились пропадания звука в Skype и перезагружать больше ничего не нужно.

четверг, 5 ноября 2009 г.

Старт

На часах 4:44 утра, а я решил создать блог, ну что ж, посмотрим что из этого получится.