Статьи из рубрики «linux»
Linux — дружественная операционная система. Она просто разборчива в выборе друзей.
ACL как одно из решений проблемы работы web-сервера под root
Я довольно часто встречал конфигурацию, когда web-сервер работает под root, чтобы обойти жёсткие права доступа, установленные на каталоги пользователей. Рассмотрим на примере: предположим, что пользовательские сайты расположены в /home/<username>/, при этом права на каталог home установлены в 0711 (rwx--x--x), а права на пользовательские каталоги установлены в 0700 (rwx------). Такие права устанавливаются, чтобы изолировать пользователей друг от друга — один пользователь не сможет зайти и посмотреть домашний каталог другого пользователя. Такая мера популярна у администраторов виртуального (shared) хостинга.
Для того, чтобы web-сервер мог нормально обслуживать сайты, обычно используется одно из следующих решений:
- web-сервер работает под учётной записью root;
- права на домашний каталог устанавливаются в 0750 (
rwxr-x---), а пользователь, под которым работает web-сервер, вносится в группу, которой принадлежит пользователь.
Ноя
2009
Решение проблем с дуплексным режимом при несоответствии дуплекса
На днях мы сменили хостера (с HiVelocity на Hvosting), и всё было здорово, кроме проблем с интегрированной сетевой картой (Intel Corporation 82567V-2 Gigabit Network Controller).
ifconfig показывал очень большое количество ошибок:
inet addr:91.200.42.30 Bcast:91.200.43.255 Mask:255.255.252.0
inet6 addr: fe80::21c:c0ff:feee:1933/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1492 Metric:1
RX packets:45816071 errors:0 dropped:32127 overruns:0 frame:0
TX packets:63359144 errors:9679835 dropped:0 overruns:0 carrier:9679835
collisions:11287183 txqueuelen:10
RX bytes:7996889371 (7.9 GB) TX bytes:80681126916 (80.6 GB)
И, судя по collisions, карта работала в полудуплексном режиме. Техподдержка подтвердила, что коммутатор работает в дуплексном режиме на скорости 10 Мбит/сек. Следовательно, проблема либо в сетевом кабеле (на что указывают высокие значения carrier), либо с сетевой картой (на что указывают collisions). Далее »
Окт
2009
ngx_drop_privs: принцип минимальных привилегий в nginx
nginx — замечательный web-сервер, но, как и практически любой программный продукт, не свободен от ошибок, временами весьма критических.
Архитектура nginx такова, что обычно имеется один привилегированный процесс (запускаемый от всемогущего root) и один или более рабочих процессов (обычно работающих от имени непривилегированного пользователя). Тем не менее, я видел конфигурации, в которых все процессы nginx работают под привилегированным пользователем. Один из примеров — многопользовательский сервер, Document Root сайтов на котором имеет права вида 0700 (запускать несколько nginx и настраивать проксирование — тоже не лучший выход).
Кроме того, за последние неполные пять лет в nginx найдено 112 ошибок (segmentation fault), некоторые из которых теоретически могут дать возможность выполнения произвольного кода в системе (wget http://sysoev.ru/nginx/changes.html -q -O - | grep segmentation | wc -l).
Я не знаю, все ли ошибки затрагивали только рабочие процессы, либо были ошибки в главном процессе — рисковать не хочется. Так и родилась идея написать модуль для nginx — ngx_drop_privs. Далее »
Сен
2009
cpufreq-info врёт
Обратил внимание, что при задании частоты нулевому ядру, cpufreq-info показывает одинаковую частоту для всех ядер. Меня это удивило, так как раньше я мог задавать разные частоты для каждого ядра. Решил проверить экспериментально. Далее »
Авг
2009
Возвращаем Skype к жизни в Ubuntu Karmic Koala на 64-битной платформе
Почти год назад я писал об аналогичной проблеме со Skype в Ubuntu Intrepid Ibex. Воистину, история имеет тенденцию к повторению — сменился релиз, проблема осталась. Тем не менее, прошлогоднее исправление не помогает, поэтому приходится изобретать что-то новое.
К слову, проблема всё та же:
ALSA lib ../../src/conf.c:2700:(snd_config_hooks_call) Cannot open shared library /usr/lib/alsa-lib/libasound_module_conf_pulse.so
ALSA lib ../../../src/control/control.c:909:(snd_ctl_open_noupdate) Invalid CTL hw:0
Но решается иначе. Далее »
Автор: Vladimir, опубликовано в: Linux, комментариев: 3Авг
2009
SieFS для Debian Lenny/Ubuntu Jaunty
Почти год назад я писал о SieFS — FUSE-драйвере для файловой системы телефонов Siemens. SieFS нет в репозиториях Ubuntu, к тому же он собирается с проблемами.
Так как далеко не все любят собирать программы из исходников (и плясать с бубном, чтобы кривая программа собралась), а драйвер, как оказалось, нужен многим, я собрал DEB-пакет для SieFS (под архитектуру AMD-64; пакет собирался в Ubuntu 9.04 Jaunty Jackalope, но должен работать в Debian Lenny). Далее »
Автор: Vladimir, опубликовано в: Linux, комментариев: 5Авг
2009
TCP/IP SYN+FIN Packet Filtering Weakness
Сканируя Nessus парочку хостов, столкнулся с тем, что Nessus определял, что система (Linux 2.6.x) не фильтрует TCP/IP пакеты, у которых установлены флаги SYN и FIN, что, теоретически, может привести к обходу межсетевого экрана (firewall). Далее »
Авг
2009
monit 5.0.3 для Debian/Ubuntu Linux
monit предоставляет весьма удобный для системного администратора инструмент мониторинга состояния систем, включая процессы, исполняемые и конфигурационные файлы, потребление ресурсов. monit умеет выполнять локальные действия (например, запускать упавшие процессы, перезапускать процессы, потребляющие слишком много ресурсов и т.п.), слать предупреждения почтой; имеет опциональный web-интерфейс. Далее »
Июл
2009
Борьба со спамом на уровне фильтра пакетов
Два месяца назад я писал об одном очень жестком методе борьбы с последствиями установки плагина Time spent on blog. Теперь этот же самый метод применяем на спам-ботах, которые безуспешно пытаются оставить спам в комментариях.
Отвлекусь от темы и отвечу на вопрос о необходимости применения жестких мер против спамеров: во-первых, они генерируют много паразитного трафика (трафик не бесплатен), во-вторых, они генерируют лишнюю нагрузку на сервер, в-третьих, вода камень точит — любую капчу можно подобрать. Далее »
Автор: Vladimir, опубликовано в: Linux, WordPress, Администрирование, комментариев: 6Июл
2009
dk-filter: util.c:47: dk_sterilize: Assertion `str != ((void *)0)’ failed: Часть 2
Вчера я писал об ошибке в dk-filter, приводящей к гибели процесса, если dk-filter сконфигурирован использовать разные ключи для подписи сообщений от разных отправителей, и ключ для отправителя не найден.
Я предложил два решения: тривиальное (изменить файл конфигурации так, чтобы все отправители начинались со звёздочки) и правильное (пропатчить код демона, ибо фатальное завершение по такой пустяковой ошибке — это неправильно).
Именно о втором решении далее пойдёт речь. Далее »
Автор: Vladimir, опубликовано в: C/C++, Linux, Администрирование, комментариев: нетИюл
2009
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.

