LINUX.ORG.RU

Сообщения olegd

 

64 бита, WINE и ODBC

Форум — General

Требуется запустить под CentOS 7 64-битную виндовую программу, которая работает с PostgreSQL через ODBC. (Библиотека для Постгре называется psqlodbc.) Это вообще возможно?

Если действовать в лоб, в чистый дефолтный Вайн 4.0.4 поставить эту программу и psqlodbc, при обращении к Postgre выскакивает ошибка, что ODBC не установлен. Если листать документацию, всюду требуют ставить через winetricks ряд библиотек, в том числе mdac28, которая только 32-битная. Заменить Вайн на 2-архитектурный и поставить mdac28 в 32-битный префикс можно, но тогда программа, ради которой всё затевалось, вообще не запускается.

Можно ли в одном префиксе использовать и 32-битные, и 64-битные программы? Можно ли как-то заставить работать 64-разрядный ODBC? Имеет ли смысл скомпилировать более новые версии Вайна и staging?

 , ,

olegd
()

ФСТЭК и ИСП РАН приглашают искать уязвимости в ядре Linux

Новости — Linux в России
Группа Linux в России

Замруководителя Федеральной службы по техническому и экспортному контролю (ФСТЭК) сообщил, что создаётся Технологический центр исследования безопасности ядра Linux, и что компании, делающие решения на базе этого ядра приглашаются участвовать в его работе.

Ранее ФСТЭК объявляла тендер на создание Технологического центра, в котором победил Институт системного программирования им. В.П. Иванникова (ИСП РАН). Планируется, что в 2022 году начнётся «опытная эксплуатация» этого центра, а в 23-м — «промышленная». Там будут работать и сотрудники ИСП РАН, и представители других разработчиков продуктов на базе Линукса. На общественных началах или «на возмездной основе». Это должно помочь делающим продукты на Линуксе обеспечить поиск уязвимостей на должном уровне, на что сейчас средства есть не у всех.

Пока участников рынка просят добровольно поучаствовать «интеллектуальным вкладом». За это обещают возможность «использовать исследования центра при сертификации своих продуктов». Доступ будет соответствовать вкладу.

Заявленная цель существования центра — устранение ошибок в исходных текстах. Потому что ведущие мировые разработчики слишком часто фокусируются на добавлении новых фич в ущерб повышению надёжности.

Директор разработчика ОС «Аврора» говорит, что уже выделили инженеров для постоянной работы «в интересах центра».

Ведущий разработчик «Базальт СПО» говорит, что российские разработчики «боятся идти на коммуникацию из-за конкуренции». Поэтому посреднику в лице центра будут больше доверять.

Начальник отдела перспективных исследований и специальных проектов Astra Linux сказал, что центр сэкономит разработчикам время и удешевит разработку. Укажет, на каких версиях ядер сосредотачиваться, поможет унификации решений.

Сотрудник ИСП РАН А. Хорошилов подчеркнул, что делать разработку закрытой и отрываться от международного сообщества не будут.

>>> Подробности на РБК

 ,

olegd
()

Логи WINE

Форум — General

Пишет ли Вайн логи куда-нибудь помимо консоли (stdout или stderr)? Виндовые программы при серьёзных ошибках могут создавать «Windows NT Events», которые потом видны в «Event Viewer». А где видно эти события в Вайне? Только в консоли, из которой запускается?

 

olegd
()

WINE и повышение привилегий

Форум — General

Некоторые виндовые программы требуются права админа для определённых операций и выводят диалог, в котором требуется нажать кнопку с символом Windows для подтверждения повышения привилегий (и иногда ввести логин-пароль админа). Такая фича появилась в Висте. Имхо, так гораздо лучше, чем постоянно работать под админом. Чаще всего это встречается в инсталляторах.

Но как объяснить такой программе, запускаемой под Вайном, что она уже имеет нужные права? Потому что у меня всё падает при попытке вывести этот диалог. Гугление по «wine elevate privileges», «wine elevate permissions» и подобному даёт только настоятельные рекомендации не запускать Вайн ни под рутом, ни под sudo. Всё правильно, но не то.

Существует ли способ обойти этот диалог?

Проблема оказалась в привязке к IE. Диалог не выводится.

 

olegd
()

Сетевой путь к заданному файлу

Форум — General

Имеется смонтированная сетевая директория. Samba или NFS. Существует ли простой как basename способ получить путь к файлу или директории в ней относительно сервера? (Помимо парсить скриптом вывод mount и сравнивать с заданным путём и $PWD.)

Пример:

$ mount | grep samba
//192.192.192.100/Data on /home/user1/samba type cifs (rw,relatime,vers=2.1,cache=strict,username= . . .
$ show_true_path ~/samba/user1/storage/
//192.192.192.100/Data/user1/storage/

Что-нибудь такое есть?

 , ,

olegd
()

Аналог «file version» из portable executable

Форум — Talks

У виндовых исполнимых файлов и библиотек в формате Portable Executable есть куча метаданных, например «file version». Существуют ли подобные записи для формата ELF?

Нашёл упоминания какого-то BuildID, но это хеш, который не позволяет по номеру оценить старшинство версий, и ссылки битые.

Кто-нибудь заморачивался хранить в исполнимом файле номер версии? Если да, можно ссылку на стандарт?

 ,

olegd
()

Неинформативное сообщение об ошибке

Форум — Talks

Пытаюсь на свежеустановленной Убунте 20.04 смонтровать виндовую шару. Получилось как здесь:

sudo mount -t cifs -o username=user //192.168.0.106/shared /home/user/point
mount: /home/user/point: cannot mount //192.168.0.106/shared read-only.

Угадайте, в чём была проблема?

Ответ: не установлен пакет cifs-utils.

 , ,

olegd
()

Перейти на открывающий или закрывающий тег

Форум — General

Пример. Редактирую XML. Или HTML. Ставлю курсор на тег <div>. Нажимаю клавишу (или комбинацию), попадаю на соответствующий ему </div>. Нажимаю другую (или даже ту же) – перехожу на соответствующий ему <div>.

Или даже лучше. Ставлю курсор между <div> и </div>, внутри которых нет других парных тегов, нажимаю и прыгаю на тег, начинающий или кончающий текущий блок.

Какие редакторы так умеют? Пока нашёл только первую половину желаемого в vim matchit по %. (И не заработало.)

 , ,

olegd
()

Что такое свёртка?

Форум — Talks

Определение свёртки через интеграл знаю. Коммутативность, ассоциативность, линейность – знаю. Что она чередуется с умножением при преобразованиях Фурье, знаю. Но чего-то для полного понимания не хватает. Что-то ускользает на грани осознания.

Как бы вы описали, что такое свёртка, и для чего она нужна, в 2-3 словах?

 

olegd
()

Интуитивный интерфейс

Форум — Talks

https://github.com/grafana/grafana/issues/14629#issuecomment-548380370

Ловушка для админов-самоучек, тренирующихся на локалхосте. При создании дэшборда в поле URL серым шрифтом вписывается адрес слушаемого сервера по умолчанию. Но если попытаться сохранить без изменений, выдаёт ошибку Bag Gateway. Все параметры верны, но ошибка, хоть ты тресни.

Решение: в это же поле нужно руками вбить этот же URL, ярко-белым шрифтом. Потому что серый текст – это только подсказка, он не считается.

P.S. Для непонявших: «интуитивный» в саркастическом смысле.

 ,

olegd
()

Какая разница между Graylog и Elastic Stack?

Форум — Talks

Чем различаются с точки зрения пользователя Graylog и Elastic Stack? Что удобнее? Что в каких случаях стоит внедрять?

 

olegd
()

Зачем нужны keystore и truststore? На примере Apache ActiveMQ.

Форум — Admin

Какая разница между keystore и truststore? Keystore хранит на сервере сертификаты и ключи, которыми сервер шифрует то, что раздаёт? А truststore хранит информацию, каким чужим сертификатам можно доверять, когда сервер заходит на другие сервера как клиент? Но с точки зрения keytool принципиальной разницы нет, формат одинаков?

В дистрибутиве Apache ActiveMQ имеется 4 таких файла: broker.ks, broker.ts, client.ks, client.ts. broker.ks используется сервером, если включены доступ по SSL к REST, веб-интерфейсу, STOMP, WebSockets и т.п.? client.ts используется клиентскими программами на Java? А для чего нужны 2 остальных? SSL/TLS предусматривает вариант, когда клиент даёт серверу свой сертификат, и тот его принимает или не принимает?

P.S. Ещё вопрос туда же. Сертификат выдан на *.domain.ru. Я делаю как в https://wavemotiondigital.com/2014/03/07/convert-your-wildcard-ssl-to-jks-java-keystore-format/:

openssl pkcs12 -export -name my.domain.ru -in ca_bundle.pem -inkey domain.ru.key -out keystore.p12
keytool -importkeystore -destkeystore broker.ks -srckeystore keystore.p12 -srcstoretype pkcs12 -alias my.domain.ru

и всё нормально работает для https://my.domain.ru. Но когда я добавляю те же сертификаты под другим алиасом:

openssl pkcs12 -export -name my.subnet.domain.ru -in ca_bundle.pem -inkey domain.ru.key -out keystore2.p12
keytool -importkeystore -destkeystore broker.ks -srckeystore keystore2.p12 -srcstoretype pkcs12 -alias my.subnet.domain.ru

на https://my.subnet.domain.ru Хром ругается. Как сделать, чтобы работало для обоих доменов?

 , , , ,

olegd
()

Расширения сертификатов

Форум — Admin

Есть ли какие-либо писанные правила, в файлах с какими расширениями распространяют сертификаты для цифровых подписей? Пока нагуглил, что для самого распространённого PEM обычно используют *.cer, *.cert, *.crt, *.ca-bundle и *.key, а для виндового PFX – *.pfx, *.p7b и *.p7s. Но всё это на уровне сложившихся практик. RFC листал, но не нашёл сведения всего воедино.

(Причина вопроса – столкнулся сегодня с проблемой, что user-friendly GUI неспособно работать с файлами, если автор не знал, что бывают такие расширения. Автор, естественно, спросил «а как правильно?»)

Заранее спасибо.

 

olegd
()

Сравнить XML

Форум — Development

Требуется написать скрипт (на внутрикорпоративном скриптовом языке) для сравнения 2 файлов данных в формате XML и вывода списка различий. Есть API для работы с XML, где есть функции GetRootElement, GetFirstChild, GetNextSibling, GetFirstChildByName, GetNextSiblingByName, GetParent, GetElementTag, GetAttributesCount, GetAttributeByName, GetAttributeByIndex и т.д.

Проблема в следующем. Файлы следует считать одинаковыми, если они отличаются только порядком атрибутов внутри тегов или порядком элементов на одном уровне иерархии.

Вопрос: как лучше сравнивать?

Я сделал следующее.
Для сравнения атрибутов в паре элементов:

  • перебрать все атрибуты в 1-м теге, для каждого искать совпадающие во 2-м теге;
  • перебрать все атрибуты во 2-м теге, проверить, что каждый есть в 1-м.

Для проверки равенства пары элементов из 2 файлов:

  • сравнить тег;
  • сравнить атрибуты;
  • составить 2 списка детей;
  • сравнить число детей;
  • рекурсивно сравнивать каждого из детей из 1-го файла с каждым из детей из 2-го файла, отмечая в списках совпадающих; исключать из дальнейшего сравнения тех, для кого нашлась пара.

Для сравнения файлов:

  • взять корневые элементы и рекурсивно сравнить.

Как-то оптимизировать можно?

Ответ: Сканировать файл (обход дерева в глубину или ширину), собрать все возможные пути (xpath) в список, сортировать, сравнить. При этом атрибуты каждого узла также сортируются и добавляются в соответствующее место пути. Код сократился почти втрое.

 

olegd
()

JSON и экранирование символов

Форум — Development

При знакомстве с JSON возник вопрос: как регламентируется экранирование прямой косой черты /? Если я правильно понимаю спецификации на https://www.json.org/json-en.html, экранировать обязательно: \/. Но все примеры на том же сайте – https://json.org/example.html – не экранируют. Есть ли какое-то правило, когда экранировать, когда – нет?

 

olegd
()

Какие нестандартные названия вам встречались?

Форум — Talks

«Огнелис», «Громоптиц», «Жирнолис», «Аутглюк» широко известны и неинтересны.

Сейчас переутомлённый настройкой почты админ порадовал меня названием «Птицелис».

А какие нестандартные названия встречались вам? И не только Thunderbird и Firefox.

 , ,

olegd
()

Извлечь из стринга пары ключ-значение

Форум — Development

Скрипт на Groovy вызывает внешнюю функцию, которая берёт с сервера набор данных в виде пар ключ-значение и возвращает их скрипту в виде такого многострочного стринга:

{
  "TEST_NAME" : "test1",
  "SUCCESS" : "False"
}

Как из неё проще всего извлечь данные? Пока нужно только проверить условие SUCCESS = True, но в дальнейшем может понадобиться что-то более сложное. В идеале требуется простой способ превратить такой стринг в Map, не требующий внешних библиотек. Парсить регулярными выражениями? Или есть более простые способы?

Если интересны подробности, это потребовалось для взаимодействия Дженкинса с ActiveMQ. Груви начал изучать только вчера. Так как скрипты выполняются с кучей ограничений, не думаю, что позволит импортировать groovy.json.JsonBuilder/JsonSlurper.

Ответ: позволил :)

import groovy.json.JsonSlurper

node {
    stage('Start process') {
        sendCIMessage failOnError: true, 
            messageContent: '', 
            messageProperties: '', 
            messageType: 'Custom', 
            overrides: [], 
            providerName: 'Sender'
    }
    stage('Get answer') {
            def messageContent = 
                waitForCIMessage checks: [], 
                    providerName: 'Receiver', 
                    selector: 'TEST_NAME = test1'
                    timeout: 1
            echo messageContent
            def jsonSlurper = new JsonSlurper()
            def map = jsonSlurper.parseText( messageContent )
            if (map.SUCCESS == 'True')
                print 'succeeded'
            else if (map.SUCCESS == 'False')
                print 'failed'
            else 
                print 'wrong answer'            
    }
}

 ,

olegd
()

Отключить ANSI при выводе логов Докера

Форум — Admin

По ходу работы Дженкинс запускает docker logs. В логе в вывод программы в произвольных местах добавляется куча мусора наподобие

←[2J←[?25l←[m←[H

(символ 0x1b заменил стрелкой, чтобы движок ЛОРа не ругался)
Гугл находит множество жалоб на подобное несколько лет назад и ключи командной строки, отключающие ANSI-форматирование. Но в современных версиях они не работают. Даже исходников, куда добавляли возможность отключать эскейп-пследовательности по ссылкам из багов нет.

Нашёл упоминания, что вывод идёт через библиотеку Logrus, которая автоматически определяет, когда следует красиво форматировать, когда нет. Но в моём случае (извращения с Вайном) что-то не срабатывает.

Как принудительно отключить добавления эскейп-последовательностей?

P.S. Проверил /var/log/containers/. По умолчанию лог хранится в виде файла JSON, в котором нет никакого форматирования Esc-последовательностями. Они добавляются только при выводе через docker logs.

P.P.S. После обновления Дженкинса и плагинов мусор в логи добавлять перестало. Надеюсь, надолго.

 ,

olegd
()

Jenkins и Samba

Форум — Admin

Понадобилось грузить файлы из Дженкинса на виндовый файловый сервер. Нашёлся специальный плагин для этого: https://plugins.jenkins.io/publish-over-cifs Но при попытке проверить соединение появляется непонятная ошибка:

ERROR: Exception when publishing, exception message [Exception when testing config. URL [smb://172.30.0.58/share/], Message: [Failed to connect: 0.0.0.0<00>/172.30.0.58]]

Поискав, обнаружил обсуждение от 2017 года – https://groups.google.com/forum/#!topic/jenkinsci-users/O-DH2XUBRt8 – где говорится, что плагин использует библиотеку jCIFS, которая не понимает новый диалект и требует даунгрейдить SMB до версии 1, уязвимой к WannaCry. Но скоро её заменят на SMBJ.

Поискав в исходниках – https://github.com/jenkinsci/publish-over-cifs-plugin – нашёл упоминания jCIFS в 7 местах, и ни одного SMBJ.

По-прежнему, глухо? Средствами Дженкинса не реализуемо?

 , ,

olegd
()

svn diff для непоследовательных коммитов

Форум — General

Я хочу увидеть, что изменилось в файлах в результате нескольких коммитов. Для одного коммита достатчно команды:

svn diff -r 1201:1202 svn.test.com/svn/big_project/little_subproject/ --diff-cmd meld

или

svn diff -c 1202 svn.test.com/svn/big_project/little_subproject/ --diff-cmd meld

Но если задать несколько ревизий с -c или несколько пар с -r, получаю ошибку:

svn: E205000: Multiple revision arguments encountered; can't specify -c twice, or both -c and -r

Вариант вида svn diff -r 1201:1212 не устраивает – между 1202 и 1212 коммитили много, и интересующие строки затеряются.

Существует ли простой общепринятый способ посмотреть изменения сразу нескольких коммитов? Пока не придумал ничего лучше, чем вручную собирать список изменённых файлов, делать для каждого дифф для каждой ревизии, применять их к новейшей ревизии и сравнивать.

 ,

olegd
()

RSS подписка на новые темы