Yellow Leaf
42 subscribers
247 photos
120 links
Всякое около IT-шное.

Связь с автором: @moose_kazan
Download Telegram
Про имена интерфейсов в Linux

Командой "sudo amneziawg-go help" можно создать сетевой интерфейс с именем "help". А вот удалить его уже не так просто)

"sudo ip link delete help" показывает справку. Но решение всё же есть: "sudo ip link delete dev help". Вот это "dev" не является обязательным, но сильно меняет дело)
😁1
Задачка для пытливых умов

Я довольно долго руководил командой DevOps и частенько соискателям предлагал одну задачку. Тот кто возглавил команду после меня тоже считает эту задачку интересной. Так что предлагаю подумать над ней читателям)

Итак: какой-то шутник на машине с Linux выполнил команду:

chmod -x /bin/chmod


Как починить не перезагружая машину?)
Yellow Leaf
Задачка для пытливых умов Я довольно долго руководил командой DevOps и частенько соискателям предлагал одну задачку. Тот кто возглавил команду после меня тоже считает эту задачку интересной. Так что предлагаю подумать над ней читателям) Итак: какой-то шутник…
Ответ на задачку для пытливых умов

Сразу оговорюсь: если соискатель не знает решения то это не критично. Тут интересно посмотреть на сам поиск решения. Оценить способность думать и искать решение.

Напомню задачу:
Какой-то шутник выполнил команду:

chmod -x /bin/chmod

Как починить не перезагружая машину?


Теперь к решениям. На Linux и FreeBSD /bin/chmod обычно elf-бинарник. Для запуска elf-бинарников есть интерпретатор. На Linux это будет так:

/lib/ld-linux.so.2 /bin/chmod +x /bin/chmod


На 64-битной системе возможно надо будет так:

/lib64/ld-linux-x86-64.so.2 /bin/chmod +x /bin/chmod


Для FreeBSD 32-бит решение такое:

/libexec/ld-elf32.so.1 /bin/chmod +x /bin/chmod


Для FreeBSD 64-бит:

/libexec/ld-elf.so.1 /bin/chmod +x /bin/chmod


Ещё на многих Linux-системах установлен busybox. При его наличии можно так:

/bin/busybox chmod +x /bin/chmod


Возможно есть и другие варианты. Если знаете - пишите. Буду рад узнать что-то новое)
👍3
Про мессенджер MAX

Последние версии для Linux перевели с Electron на Qt6/QML с использованием WebEngine и вроде бы стало лучше. В окружениях на базе wayland оно даже масштабируется на HiDPI-экранах нормально.

Но при этом при наборе текста Ctrl+Backspace не делает ничего. Хотя во многих приложениях удаляет слово слева от курсора. А ещё если ширину окна уменьшить до меньше ~960dp интерфейс переключается в мобильный режим. В целом наверное не плохо, но 960dp для мобильного режима - многовато как по мне. У Telegram порог переключения ~720dp.

А вы им пользуетесь? Как оно вам?
👍1
В силу специфики работы есть потребность в использовании на локальной машине разных версий PHP. Штатно в Debian 13 идёт PHP 8.4, но на работе есть некоторое количество кода на 7.2.

В среде PHP-разработчиков достаточно известен Ondřej Surý, поддерживающий репозитории для разных дистрибутивов с различными версиями PHP и возможностью их параллельной установки.

К сожалению Андрей ограничил доступ к своим репозиториями с IP-адресов РФ. Но эта проблема имеет решение. А вот то что я пока не смог решить: Андрей не собирает пакеты под i386, но при этом кроме PHP в своих репозиториях держит ещё обновления некоторых системных библиотек. На системах с multilib это приводит к проблеме сломанных зависимостей.

Приходится выбирать: или PHP разных версий, или Wine и поддержка старых принтеров и сканеров.

В качестве обходного манёвра использую Docker. Примерно так:

docker run --rm -v $(pwd):/app -w /app php:7.2-cli php console migrate


Не так удобно, хотя и лучше чем ничего. Веселее станет если понадобятся модули, которые не включены в официальный образ PHP и надо будет собирать свой.
Если Telegram в РФ окончательно заблокируют то что вы будете делать? Уйдёте на другую площадку (какую?) или будете искать способы обхода блокировки? Используете ли вы какие-то сервисы туннелирования трафика и если да то какие?

Я постараюсь оставаться тут как можно дольше. К сожалению очень много завязано на эту площадку.
👍1
И снова про "chmod -x /bin/chmod":

Накидали ещё решений. Если установлена утилита install:

install -m 755 /bin/chmod /tmp/chmod
mv /tmp/chmod /bin/chmod


Ну и немного сомнительный путь, но имеющий право на жизнь:

Выбираем существующий бинарник, который нам не очень нужен прямо сейчас. Например "/usr/bin/telnet". И далее так:

cat /bin/chmod > /usr/bin/telnet
/usr/bin/telnet +x /bin/chmod


И дальше чиним уже /usr/bin/telnet
👍2
Оффтоп про политику и математику

Я устал. Очень хочется какой-то предсказуемости. Наше родное государство постоянно находит нарушения законов в тех или иных сервисах и почему-то вместо (или в дополнение?) к ловле нарушителей борется ещё и с самими сервисами. И нельзя быть уверенным что работающий сегодня полезный сервис вдруг не окажется завтра пристанищем мошенников и не будет заблокирован.

А теперь немного математики. Допустим что (по официальным данным) на выборы пришло 87 миллионов человек и 87.28% проголосовали за кандидата X. Это означает что 11 миллионов человек голосовали за кого угодно, но только не за кандидата X.

11 миллионов это суммарное население Татарстана, Чувашии, Нижегородской и Самарской областей. Ну или два Санкт-Петербурга. Это примерно каждый четырнадцатый человек в стране. Или каждый девятый из числа проголосовавших. И это тоже граждане страны и с их интересами тоже нужно считаться.

Даже если победитель выборов известен заранее на выборы всё равно стоит идти. Если вам нравится этот кандидат - ничего страшного если вы отдадите за него свой голос. А если нет - то вы сможете показать что вы есть и что с вами тоже нужно считаться.

Это я всё к чему: осенью будут выборы в государственную думу РФ. Это легальная возможность высказать своё отношение к тому что происходит в стране. Я не призываю голосовать за или против кого-то конкретного. Я считаю что все мы взрослые люди и каждый способен сам принять решение. Я просто хочу заниматься любимым делом. Надеюсь что такая вот математика мне поможет)
👍3👎1🔥1
Чего мне не хватает в спецификации desktop-файлов так это возможности указывать переменные окружения. Конечно их можно подставлять прямо в строку запуска, но это не очень удобно. Хочется прямо в desktop-файле иметь возможность писать что-то такое:

[Environments]
GDK_SCALE=2
LANG=en_US


А в диалоге редактирования свойств desktop-файла предусмотреть отдельную вкладку для переменных окружения и при запуске такого файла эти самые переменные передавать приложению.

Начинал писать патч для KDE, но задача оказалась слишком глобальной. Может быть я бы её и вывез, но эта история "out of spec" и даже если патч будет готов - не факт что его примут. Понимаю что для начала нужна доработка стандартов XDG, но тут я не уверен что смогу такое продвинуть, да и не факт что оно кому-то нужно кроме меня.
Полезная утилита для Debian/Ubuntu

Недавно открыл для себя утилиту управлениям репозиториями extrepo. С её помощью можно легко находить и подключать дополнительные репозитории. Что-то вроде add-apt-repository из Ubuntu, но больше ориентирована на встроенный список репозиториев.

Использованием очень простое. Найти репозиторий:

extrepo search wine


Вывод будет примерно таким:

Found winehq:
---
description: WineHQ packages
gpg-key-checksum:
sha256: 012326dba01e3853f262af95b840d8e3539a23ede80be2e82f30a721d4678e26
gpg-key-file: winehq.asc
policy: main
source:
Architectures: amd64 i386
Components: main
Suites: trixie
Types: deb deb-src
URIs: https://dl.winehq.org/wine-builds/debian


Далее подключаем репозиторий:

extrepo enable winehq


Ну и далее всё как обычно)

Настройки утилиты расположены в /etc/extrepo/config.yaml. Из ценного там есть возможность включить поддержку репозиториев с non-DFSG лицензиями.
👍1
Про нейросети

Многие мои коллеги используют Cursor IDE или подключают Copilot, DeepSeek или что-то ещё. Я вобщем-то тоже не остался в стороне. У меня есть и зарубежные карты и зарубежные сервера, но мне немного лениво постоянно с этим заморачиваться, поэтому я в итоге начал использовать отечественные продукты, хотя они и не такие мощные как "зарубежные аналоги".

Я попробовал sourcecraft-ассистента от Яндекс, но он там существует как дополнение к платформе sourcecraft.dev и я так и не нашёл способа докупить токены без покупки других ресурсов на платформе.

В итоге я использую VSCode с плагином GigaChat от Сбера. Интересно что PHP-код он подсказывает гораздо лучше sourcecraft. Для борьбы с галлюцинациями хорошо помогают нормальные LSP: для PHP использую intelephense, для Perl - Perl::LanguageServer, для Go - gopls (а есть альтернативы?)).

Всё жду когда за Gigachat начнут брать деньги, но платить скорее всего буду. Собственный мозг не заменяет, но работу упрощает и ускоряет. А ещё многие картинки в этом канале сгенерированы ботом @gigachat_bot.

А вы пользуетесь нейросетями в своей работе? Какими и для каких сценариев?
Копировал файл на сервер по scp и получил сообщение:

** WARNING: connection is not using a post-quantum key exchange algorithm.
** This session may be vulnerable to "store now, decrypt later" attacks.
** The server may need to be upgraded. See https://openssh.com/pq.html


Это что-то новое)
TamTam попрощался со своими пользователями.

Сообщения пока ещё отправляются и доставляются, но вроде бы сегодня последний день его работы. Специально не закрываю приложение. Хочу посмотреть что будет с активными сессиями)

Ещё один убийца всех других мессенджеров никого не убил и сам тихонько умер)
Несколько лет назад довелось заполнять декларацию 3-НДФЛ. Пришлось использовать специальное приложение "Декларация 2023", которое было только под Windows. К счастью оно нормально запускалось под Wine.

Сегодня обнаружил что есть новая версия этого приложения под названием "Декларация 2025" (да, нейминг и версионирование у них довольно простые), которая существует в том числе и в версии для Linux.

Беглое изучения содержимого deb-пакета показало что:
1. Используется фреймворк SkiaSharp и значит скорее всего приложение написано на .NET.
2. При установке пакета запускается скрипт, который перебирая директории в /home пытается всем пользователям создать по ярлыку на рабочем столе, проворачивая при этом на детородном органе и спецификации XDG и возможность иметь домашний каталог не в /home.
3. В окружении wayland на HiDPI-мониторе интерфейс не масштабируется и выглядит очень мелким.
4. RPM-пакета нет. Кому надо - alien вам в руки.

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

Но в любом случае это огромный шаг вперёд, который можно только приветствовать.

P.S. Ссылку не даю чтобы не обвинили в ангажированности. Кому надо найдёт сам легко и быстро.
Два года назад, в декабре 2023, купил себе ноутбук Digma Pro Magnus M. Машинка для работы даже сейчас выглядит неплохо: 16.1" экран с разрешением 2K, 16GB памяти (почти сразу заменил на 32GB) и 512GB NVMe (сейчас 1TB NVMe + 1TB mSATA) и процессор Ryzen 9 5900HX.

В последнее время стал без всякого повода запускать вентиляторы на полную мощность. Мне это надоело и сегодня ночью я полез решать эту проблему. За два года работы в основном у меня на столе этот девайс двумя вентиляторами всосал столько пыли, сколько не всасывал ни один предыдущий ноутбук. Оба вентилятора были забиты полностью и потому ничего не охлаждали. Минут сорок потратил на чистку системы охлаждения.

Но систему охлаждения хотя бы можно почистить. Гораздо большей печалью оказался заметно вздувшийся аккумулятор. В итоге нашёл в китае и заказал. Срок доставки - месяц. Надеюсь за это время ничего больше не случится.

ЧСХ до этого был HP Probook G6 430, который сначала три года проработал у меня, а потом отправился служить моей жене. Пыли до сих пор столько не набрал и аккумулятор хоть и утратил часть ёмкости но как минимум не вздулся.

Вобщем пока я малость разочарован "отечественным" производителем.
Обнаружил в Debian интересное. С первого февраля apt не доверяет sha1-подписям. Но многие репозитории до сих пор используют sha1-подпись и при использовании apt такие репозитории игнорируются. Однако Discover из состава KDE абсолютно ничего не смущает и он вполне успешно использует репозитории с устаревшей подписью.

Отдельно интересен список репозиториев использующих устаревший алгоритм подписи. Среди них официальные репозитории Microsoft, Softmaker, Sublimetext, Яндекс, Окуляр-ГОСТ, DBeaver и многие другие. Т.е. в основном те, от кого меньше всего ждёшь такого спокойного отношения к безопасности.
Тут обнаружилось что пересланые в Max фоточки доступны по прямым ссылкам всем желающим. Пресс-служба мессенджера отбрехивается в духе "вывсёврёти". Защитники мессенджера настаивают что перебор всех вариантов слишком сложен и потому найти что-то затруднительно.

Я проверил и действительно можно достать прямую ссылку на картинку и картинка по ней доступна. Про возможность перебора ничего пока говорить не готов. Мне это не очень интересно.

Интересно другое: эдак ведь можно использовать Max как CDN: слать картинки друг другу и потом доставать на них ссылки и использовать. Не так удобно как в каком-то S3-совместимом хранилище, но зато бесплатно)

Ну и боюсь что всякие сумрачные люди уже продумывают схемы с использованием этой истории. Ведь мы по сути получаем хранилище, которое доступно даже на парковке во время ограничений интернета (через белые списки).
К - Костыль

Reg.Ru рассылает своим клиентам письма с уведомлением о том что GlobalSign теперь выпускает сертификаты не на 365 дней, а на 199. И потому при оплате за год будут выпускаться два сертификата: первый на 199 дней, и второй ещё на 166 после окончания основного. Выглядит жутко.

По-моему это скрытая реклама letsencrypt)
Yellow Leaf
Тут обнаружилось что пересланые в Max фоточки доступны по прямым ссылкам всем желающим. Пресс-служба мессенджера отбрехивается в духе "вывсёврёти". Защитники мессенджера настаивают что перебор всех вариантов слишком сложен и потому найти что-то затруднительно.…
Попробовал передавать через Max файлы вместо картинок.

Плохая новость: файлы доступны по прямой ссылке вида:

https://fd.oneme.ru/getfile?sig=....&expires=1773273131002&clientType=6&id=351856972&userId=5179147

Хорошая: есть защита от перебора. При попытке перебирать идентификаторы получаем ошибку "invalid signature".

Но в любом случае получается есть возможность сформировать ссылку на какой-то зловред, которая будет открываться всегда. А доставлять её можно например в СМС. Ну или ещё как. Что очень и очень плохо.
Кейс с картинками в Max показал что не все разработчики знают как защищать картинки и прочие файлы от не санкционированного доступа в веб.

Тот же Telegram в веб-версии использует ссылки вида https://web.telegram.org/some-key и даже не смотря на статичность этого some-key доступ имеют только те кто должен его иметь. Сделать это можно по разному. Мне нравится вариант на базе nginx. Делается это примерно так:

1. Описываем именованный location с типом internal (доступ к таким location снаружи закрыт) примерно так:

location @private {
internal;
root /var/www/private;
}


Далее описываем основной location и правила рерайта в нём:

location / {
root /var/www/public;
rewrite ^/files/(.*) /getfile.php?key=$1 last;
}


PHP использовать не обязательно. Обработчик можно написать на чём угодно. Важно чтобы этот обрабтчик:

1. Находил по ключу в БД путь к файлу
2. Смотрел права доступа на файл в БД
3. Проверял имеет ли запрашивающий файл пользователь достаточно прав (на основе cookie и/или заголовков)
4.1 При отсутствии разрешения отдавал ошибку 403
4.2 При наличии разрешения отдавал заголовок:

X-Accel-Redirect: @private/path/to/file


Здесь используется фича прокси-модуля в nginx: заголовок X-Accel-Redirect не отправляется клиенту, а указывает серверу что отправить клиенту в качестве ответа.

Таким образом запрашивая ссылку https://your.domain/files/somekey пользователь либо получит ошибку 403, либо получит файл. При этом реальное местоположение файла раскрыто не будет и доступа по прямой ссылке не будет.

P.S. Если будет интересно расскажу как в таких системах реализуется загрузка файла и что делать если веб-приложение работает на одном домене, а хранилище файлов находится на другом.
👍1