LINUX.ORG.RU

Как «прибить гвоздями» программу к конкретному дистрибутиву линукс?

 ,


0

3

Допустим, решил я написать программу для МСВС или Astra Linux, да так, чтобы она не запускалась ни в других дистрибутивах линукс, ни, тем более, в WSL.

Осуществимо ли сие?

Перемещено hobbit из general

★★★★★

Последнее исправление: Mischutka (всего исправлений: 1)
Ответ на: комментарий от Im_not_a_robot

Что мешает пользователю прописать в /etc/os-release всё, что нужно программе?

shell-script ★★★★★
()

Захотелось как в винде: «регистрации-активации». Но если хотя-бы чуть был в винде, то должен знать - все это «обходится на раз». В том числе и предложенный: «Чекать /etc/os-release».

Она и так не будет запускаться. Найдется какая-нибудь «lib*», которой там нет и привет.

andytux ★★★★★
()
Последнее исправление: andytux (всего исправлений: 1)

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

alex1101
()

если прога будет скомпилирована для мсвс (естественно динамическая линковка) - то, скорее всего, она нигде более и не запустится, из-за древности библиотек, хотя вот в 5.0 вкрячили glibc 2.5

Silerus ★★★★
()
Ответ на: комментарий от alex1101

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

shell-script ★★★★★
()

чтобы она не запускалась ни в других дистрибутивах линукс

Вы всерьёз надеетесь, что бинарник будет запускаться где-либо кроме системы на которой её разработали без кропотливой работы по кроссплатформенному портированию, компиляции и упаковке? 😃

raspopov
()

Забей,захотят - все равно запустят.

Dog ★★★
()

конкретному дистрибутиву линукс?

Уточни, что такое конкретный дистрибутив линукс. Вот убунту-сервер и кубунту это один дистрибутив или два?

ya-betmen ★★★★★
()

Пожалуйста, не делайте так. Лучше купите палету ящиков водки и езжайте с ними в тайгу на зимовку, но не делайте так.

kirill_rrr ★★★★★
()
Ответ на: комментарий от raspopov

дитрибутивы линукса достаточно сильно растут из одного корня ядра, библиотек и утилит.
я из rpm в убунту вкорячивал проги - работали.
максимум надо было доустановить требуемые пакеты, да и то названия были похожие.

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)
Ответ на: комментарий от Zhbert

Тогда надо проччитать os-release и выдать ошибку «не тот дистрибутив» если там неправильная строчка. Отчитаться о проделанной работе, убедить менеджера что всё строго согласно принятым стандартам.

kirill_rrr ★★★★★
()
Ответ на: комментарий от alex1101

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

А потом это поделие будет рандомно падать у пользователей. В лучших традициях вендософта. И ТС поест говен по полной. И заслуженно.

utanho ★★★★★
()
Ответ на: комментарий от pfg

я из rpm в убунту вкорячивал проги - работали

В генте большинство бинарных пакетов - деб.

utanho ★★★★★
()

С астрой вообще проблем нет. Там проприетарная DE и проприетарная система разделения прав. Достаточно проверить существование того и другого.

Что там в МСВС мне не ведомо.

Aceler ★★★★★
()

Чем никудышней программа, тем больше её автор озабочен «защитой».

utanho ★★★★★
()
Ответ на: комментарий от Zhbert

Тогда не вижу проблем сделать ключ запуска --os=os-name и положить в репу мсвс пакет в котором будет скрипт запуска app --os=msvs.

ya-betmen ★★★★★
()

Черкнуть мд5 сумму os-release и если файл редактировался, то падать, не?

SpaceRanger ★★★
()
Последнее исправление: SpaceRanger (всего исправлений: 1)

просто пиши максимально криво. Желательно ещё имя пользователя и локаль гвоздями прибить.

bo4ok
()

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

DumLemming ★★★
()

Лучше бордель открыть, по-моему, это гораздо больше способствует укреплению нравственности в обществе.

Но с другой стороны, мне кажется, что ТС решил просто набросить. Максимально незатейливо, но чтобы камни гарантированно полетели.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от Aceler

А это идея! Только не проверять наличие Fly, а привязать программу к какой-нибудь библиотеке, используемой лишь настольным окружением Astra Linux. Должна же быть чисто fly-специфичная библиотека.

Mischutka ★★★★★
() автор топика
Ответ на: комментарий от Mischutka

А когда ее выкинут/переименуют то страдать

sambo ★★
()

Допустим, решил я написать программу для МСВС или Astra Linux, да так, чтобы она не запускалась ни в других дистрибутивах линукс, ни, тем более, в WSL.

Да, достаточно сделать программу, которая не будет запускаться вообще нигде. Тогда она точно не запустится ни в других дистрибутивах линукс, ни в WSL. Запускаться в МСВС и Astra она тоже не будет, но этого в требованиях и не было.

i-rinat ★★★★★
()

Лучше этого не делать. Это решается лицензионным соглашением.

thegoldone ★★
()
Ответ на: комментарий от i-rinat

Запускаться в МСВС и Astra она тоже не будет, но этого в требованиях и не было.

Правда, а это тогда что?

... решил я написать программу для МСВС или Astra Linux...

Mischutka ★★★★★
() автор топика

Стандартный ответ на такие вопросы, разумеется: проверяй фичи, а не версии.

Если у тебя заказчик ставит задачу «запускаться только на МСВС» - это же тоже с чем-то связано, с какой-то конкретной фичей МСВС…

Это может быть связано, например, с сертификацией МСВС - но сертификация идёт прямо по бинарикам, значит берёшь хэши от версий библиотек, например (в смысле не версии, а именно хэш-сумма бинарика сертифицированной версии - так и должно проверяться если по уму).

Единственный минус - долго проверять. Как вариант делать какие-то промежуточные контрольные точки или хэшировать не всю поставку а некоторое количество «ключевых» вещей - но тут уж только экспериментировать по вопросу производительность/надёжность.

Scondo
()

Допустим, решил я написать программу

Осуществимо ли сие?

Нет

fluorite ★★★★★
()
Ответ на: комментарий от Mischutka

решил я написать программу для МСВС или Astra Linux

Там не написано «работающую программу». Просто «программу». Про работоспособность ничего не сказано.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Работоспособность — это параметр, заданный по умолчанию.

Ради интереса: у Вас были случаи, когда Вам ставилась задача написать неработающую программу?

Mischutka ★★★★★
() автор топика
Ответ на: комментарий от Mischutka

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

По сабжу: нет, невыполнимо. Ограничения всегда можно обойти. Вопрос лишь, сколько усилий придётся приложить.

Я думаю, тут AB-проблема. Для чего заказчику нужно, чтобы программа работала только в дистрибутиве N? Это нужно для какой-то цели. Если связано с какой-то безопасностью, то надо проверять не правильность дистрибутива, а наличие соответствующих фич/ограничений безопасноти. Если с конкретной версией и флагами сборки ядра — проверять версию и флаги ядра. Если целью ставится реклама дистрибутива, то это решается банально прямой рекламой.

CrX ★★★★★
()

А можно вопрос? Зачем впринципе прибивать к дистрибутиву? Это явная задача от заказчика, или таким методотом ты хочешь достичь чего-то другого? Если второе, то мне кажется, что задачу можно решить как-то по-другому

Aswed ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.