Программист и ЭВМ

Из чата Космопорта
Всякие интересности.
|

Из чата Космопорта
Директор подразделения компании IOActive, занимающегося тестированием систем безопасности, в докладе на конференции 34c3 привёл статистику, свидетельствующую о нехватке разработчиков, способных заниматься выявлением и исправлением ошибок в BSD-системах.
В ходе проведённого летом поверхностного аудита в ядрах трёх наиболее распространённых BSD-систем было выявлено 115 ошибок, потенциально приводящих к проблемам с безопасностью. 30 ошибок было найдено в ядре FreeBSD, 25 в OpenBSD и 60 в NetBSD. Спустя полгода после информирования разработчиков данных систем о проблемах, многие из ошибок остались неисправленными или не были доведены до пользователей.
Показать
Наиболее перспективной с точки зрения обеспечения безопасности называется ОС OpenBSD, ошибки в ядре которой были не столь тривиальны, а разработчики исправили ошибки в течение нескольких дней. Недостаток числа разработчиков в OpenBSD компенсируется оставлением только самой необходимой функциональности и внедрением прогрессивных методов противостояния эксплуатации уязвимостей.
Во FreeBSD разработчики отреагировали на проблемы в течение недели, но исправили в репозитории лишь часть проблем и выпустили лишь несколько отчётов об уязвимостях. Статус исправления остальных ошибок находится в неопределённом состоянии, так как разработчики посчитали, что для них отсутствуют практические пути эксплуатации и перенесли из категории проблем с безопасностью в область обычных ошибок.
Хуже всего обстоит дело с ОС NetBSD, качество кода которой очень разнородно, а время доставки исправлений слишком велико. Ошибки были исправлены за ночь, но были доведены до пользователей только через 6 месяцев из-за редкого формирования обновлений.
С учётом того, что многие из проблем лежали на поверхности и не потребовали больших усилий для их выявления, исследователь делает вывод, что небольшое число отчётов об уязвимостях в BSD системах говорит не об их безопасности, а о недостаточном числе разработчиков, заинтересованных в проведении аудита. Также отмечается слишком большое время жизни ошибок, от их появления в коде до обнаружения. По утверждению докладчика, большинство уязвимостей в ядре Linux выявляются достаточно оперативно. В BSD-системах ситуация иная и ряд выявленных исследователем проблем находились в коде 10 и более лет.
P. S. Интересный комментарий анонима:
У ребят нет выбора: сектантские истерики и хайп, которые лапчатый базар давно сделал нормой общения, имеют определенное влияние на потребителя. Чтобы не отпугнуть оставшиеся три с половиной компании от своих систем, бздуны теперь сообщают о проблемах иносказательно.
P. P. S. Ну и шутка «в тему».
80 лет назад в Москве родился замечательный советский автор, актёр, бард и песенник Владимир Семёнович Высоцкий. Он оставил яркий, неизгладимый след на творческом небосклоне советского кино, театрального и песенного искусства. Очень много людей воспитаны на его песнях и фильмах. Я сам в молодости слушал их с удовольствием. В своих ролях и произведениях Высоцкий умел передать накал, кипение жизни, не оставляя равнодушным никого, заставляя зрителя сопереживать, влиться в жизнь персонажей гения.
Многие из нас до сих пор помнят, смотрят и слушают Высоцкого. Его произведения бессмертны, как и он сам.
*nix-системы предоставляют развитые средства настройки пользователюской среды под различные потребности. Одна из задач такой настройки — указание регионального стандарта, с которым хочет оперировать пользователь. Например — чтобы графический системный интерфейс отображал сообщения на родном пользователю языке (был локализован), а ввод осуществлялся на английском. Локализация означает приспособление программы или операционной системы к кодировке и стилям печати времени, даты, денежных единиц принятых в данной стране. Иногда применяют сокращение «l10n». Буквы «l» и «n» — начало и окончание слова «localization», а цифра 10 — количество букв между ними. Есть ещё сокращение i18n — «internationalization».
Показать
POSIX-совместимые системы имеют специальный стандарт (RFC 3066) определения локали — идентификатора, определяющего региональные настройки пользовательского интерфейса, такие как язык, страна, часовой пояс, набор символов и т. п. Он имеет следующий вид:
[language[_territory][.codeset][@modifier]]
Например — ru_RU.CP1251, el_GR.UTF-8 или en_US.iso88591. Существует особое имя для региональных настроек POSIX: C — нейтральное значение по умолчанию, C.UTF-8 — для новых POSIX-систем с поддержкой UTF-8.
Многие системные программы для определения языка сообщений и вида кодировки используют установленные переменные окружения. По умолчанию переменные LC_ALL и LANG имеют пустые значения, а все остальные — значение «POSIX». В русифицированных системах при настройке локали указывается определенная кириллическая кодировка, например, UTF-8 (Unicode) или реже CP1251 (русскоязычная кодировка Microsoft Windows) или KOI-8 (русскоязычная кодировка UNIX).
Имя переменной | Описание |
LC_ALL | Переменная LC_ALL, если установлена, определяет всё сразу: язык сообщений, кодировку, вид даты и т. п. |
LANGUAGE | Переменная LANGUAGE используется в основном программами из проекта GNU |
LC_CTYPE | Переменная LC_CTYPE, если не установлена LC_ALL, определяет кодировку символов. В отсутствии LC_CTYPE и LC_ALL, для определения типа кодировки используется переменная LANG |
LC_COLLATE | Переменная LC_COLLATE используется в отсутствии LC_ALL для определения алгоритма сортировки. В отсутствии LC_COLLATE для этого используется переменная LANG |
LC_MONETARY | Переменная LC_MONETARY используется, если отсутствует LC_ALL, для определения вида денежной единицы. Если LC_ALL и LC_MONETARY не установлены, то используется переменная LANG |
LC_NUMERIC | Переменная окружения LC_NUMERIC используется, если не установлена переменная LC_ALL, для определения национального формата печати чисел (например, с плавающей точкой или запятой). Если не установлены LC_ALL и LC_NUMERIC, то используется переменная окружения LANG |
LC_TIME | Переменная окружения LC_TIME используется, если не установлена LC_ALL для определения формата даты и времени. Если не установлены переменные LC_ALL и LC_TIME, то используется переменная LANG |
LC_MESSAGES | Переменная LC_MESSAGES используется в отсутствии LC_ALL для определения языка информационных и диагностических сообщений и интерфейса. Если LC_ALL и LC_MESSAGES не установлены, то используется переменная LANG |
LC_PAPER | Переменная LC_PAPER, если не установлена LC_ALL, определяет размер бумаги при печати. В отсутствии LC_PAPER и LC_ALL, для определения размера бумажного листа используется переменная LANG |
LC_NAME | Переменная окружения LC_NAME используется, если не установлена переменная LC_ALL, для определения формата отображения имён (фамилия пишется первой или последней и т. д.). Если не установлены LC_ALL и LC_NAME, то используется переменная окружения LANG |
LC_ADDRESS | Переменная LC_ADDRESS, если не установлена LC_ALL, определяет информацию о местоположении и формат адреса (страна указывается в начале или в конце адреса, где расположен почтовый индекс и т. д.). В отсутствии LC_ADDRESS и LC_ALL, для определения формата указания адреса используется переменная LANG |
LC_TELEPHONE | Переменная LC_TELEPHONE используется в отсутствии LC_ALL для определения формата телефонных номеров. Если LC_ALL и LC_TELEPHONE не установлены, то используется переменная LANG |
LC_MEASUREMENT | Переменная LC_MEASUREMENT используется, если отсутствует LC_ALL, для определения системы единиц измерения (метрическая, имперская и т. д.). Если LC_ALL и LC_MEASUREMENT не установлены, то используется переменная LANG |
LC_LC_RESPONSE | Переменная LC_RESPONSE используется в отсутствии LC_ALL для определения того, как на локальном языке отобрадаются ответы (типа Да и Нет, Y/N, и т. п.). В отсутствии LC_RESPONSE для этого используется переменная LANG |
LC_IDENTIFICATION | Переменная LC_IDENTIFICATION используется в отсутствии LC_ALL для определения общих метаданных о языковой информации. Если LC_ALL и LC_IDENTIFICATION не установлены, то используется переменная LANG |
LANG | Переменная окружения LANG используется для всего, что не установлено ранее переменными вида LC_* |
NLSPATH | Задаёт путь к файлам локализованных сообщений и справки |
TZ | Задаёт временную зону, используемую системой |
Из командной строки управление переменными осуществляется с помощью команд export и env. Чтобы увидеть, какие переменные из вышеописанных и как установлены, можно использовать программу locale. Посмотреть, какие файлы для локализации имеются в системе можно в каталоге /usr/share/locale/, а также выполнив команду locale -a.
[soul@etcetera:~]$ locale LANG="ru_RU.UTF-8" LANGUAGE="ru_RU.UTF-8" LC_CTYPE="ru_RU.UTF-8" LC_NUMERIC="ru_RU.UTF-8" LC_TIME="ru_RU.UTF-8" LC_COLLATE="ru_RU.UTF-8" LC_MONETARY="ru_RU.UTF-8" LC_MESSAGES="ru_RU.UTF-8" LC_PAPER="ru_RU.UTF-8" LC_NAME="ru_RU.UTF-8" LC_ADDRESS="ru_RU.UTF-8" LC_TELEPHONE="ru_RU.UTF-8" LC_MEASUREMENT="ru_RU.UTF-8" LC_IDENTIFICATION="ru_RU.UTF-8" LC_ALL="ru_RU.UTF-8" [soul@etcetera:~]$ locale -a C C.UTF-8 POSIX ru_RU.utf8 [soul@etcetera:~]
Проекты
OpenWrt и
LEDE, развивающие дистрибутивы для различных сетевых устройств, таких как маршрутизаторы и точки доступа, объявили о воссоединении (ссылка). В соответствии с ранее согласованным планом, Git-репозиторий OpenWrt заменён на содержимое репозитория LEDE, который послужит основой для дальнейшей совместной разработки.
Показать
Разработка объединённого проекта будет вестись под именем OpenWrt, но в соответствии с правилами LEDE, подразумевающими открытый процесс принятия решений с привлечением сообщества, прозрачность взаимодействия разработчиков, регулярный предсказуемый цикл подготовки релизов, первоочередное внимание стабильности дистрибутива, более либеральные правила приёма изменений и получения права коммита. Деятельность, связанная с решением юридических вопросов, сбором пожертвований и распоряжением активами (например, доменом и торговой маркой) нового совместного проекта OpenWrt делегирована некоммерческой организации SPI (Software in the Public Interest), которая также курирует такие проекты, как Debian, Arch Linux, X.Org, 0.A.D, FFmpeg, freedesktop.org и OpenEmbedded.
Старое содержимое репозитория OpenWrt перемещено в архив, но отсутствующие в LEDE патчи, отвечающие требованиям к качеству кода LEDE, будут перенесены в новый репозиторий. Сервисы и элементы инфраструктуры, запущенные в рамках домена lede-project.org, теперь доступны и через домен openwrt.org. Форумы и wiki пока остаются как есть, решение по ним ещё не утверждено.
Поддержка старых выпусков OpenWrt (до 15.05) будет прекращена, а для OpenWrt 15.05 будут предоставляться обновления с исправлением уязвимостей и серьёзных проблем. Поддержка LEDE 17.01 будет обеспечена в полном объёме. В ближайшие несколько месяцев ожидается формирование нового значительного релиза, который выйдет уже под именем OpenWrt.
Выбор в пользу кода LEDE сделан, так как последнее время все новшества и изменения создавались в данном проекте, а разработка OpenWrt практически остановилась после создания форка в 2016 году, когда из проекта ушла группа активных разработчиков, желающих поднять стабильность дистрибутива на новый уровень и избавиться от организационных проблем. Создатели ответвления, которое получило название LEDE, попытались воплотить в жизнь предсказуемый цикл разработки, более либеральные правила приёма изменений и прозрачный процесс принятия решений с привлечением сообщества и проведением публичных обсуждений. Весной 2017 года состоялся первый значительный релиз LEDE, который показал состоятельность проекта.
Новость с Опёнка
Пишем скрипт, содержащий код:
#!/usr/bin/env bash MAILTO=somebody@example.com WATCHPORT=80 TRESHOLD=500 NUMCONN=`netstat -antpu4 | grep :$WATCHPORT | wc -l` if [[ $NUMCONN -ge $TRESHOLD ]]; then DATE=`date` MAILBODY="Datestamp: $DATE\nServer port $WATCHPORT usage overload!\nCurrent port $WATCHPORT connections: $NUMCONN." echo -e $MAILBODY | mail -s "Server port $WATCHPORT usage overload!" $MAILTO fi
Скрипт циклически запускаем с помощью cron’а, например — каждую минуту:
* * * * * /path/to/script.sh
Прослушал брошюру К. Маркса
«Наёмный труд и капитал» — К. Маркс
Чудесное видео
Илья Муромец был родом из села Карачарова, что под городом Муромом. В то время здесь жили финно-угры, племя мурома (известно, что многие местные финно-угры до сих пор придерживаются веры предков, а соседи их — луговые марийцы — никогда не были христианами, сохранили жречество).
Показать
За то, что Илья Муромец был из племени мурома, говорит и его имя — искаженное финское Ильмаринен. Ильмаринен — это финский Перун, бог воин и кузнец, кователь. Впрочем, в этом селе могли жить и выходцы из Белогорья-Кавказа — карачаевцы. За свою непомерную силу, за ратные подвиги Илья Муромец, живший в 12 веке, почитался и славянами и финно-уграми воплощением Громовержца (финнами — Ильмаринена, славянами ведической веры — Перуна, либо Ильма, христианами — пророка Ильи).
В русских былинах об Илье Муромце образ богатыря слился с образом Перуна. В сущности, эти былины полностью сохранили тексты древних песен о Перуне. Рожденному в этот день вверяли люди вести суд честной и справедливый. «Коли первый день в году веселый (счастливый), то и год будет таков (и наоборот)».
В этот день гадают: очищают 12 луковиц от верхних чешуек, насыпают на каждую луковицу по кучке соли и кладут их на ночь на печь. На какой луковице за ночь соль повлажнеет, такой по счету месяц будет дождливый. Или вынимали из луковиц 12 чашечек, насыпали в них соль и ставили на окно в ночь под Новый год. Как влажнела соль или нет, тот месяц будет влажный, дождливый или сухой.
В этот день русская православная церковь также поминает святого Илью Муромца, мощи которого покоятся в катакомбах Киево-Печерской лавры. По свидетельству Кальнофойского, монаха Киево-Печерской лавры, жившего в 17 веке, Илья Муромец жил за 450 лет до него, то есть в 12 веке.