В инструментарии для запуска изолированных контейнеров runc, применяемом в Docker и Kubernetes, найдена уязвимость CVE-2024-21626, позволяющая получить доступ к файловой системе хост-окружения из изолированного контейнера. В ходе атаки злоумышленник может перезаписать некоторые исполняемые файлы в хост-окружения и таким образом добиться выполнения своего кода вне контейнера. В runtime LXC, crun и youki, альтернативных runc, проблема не проявляется. Уязвимость устранена в выпуске runc 1.1.12...Подробнее: https://www.opennet.me/opennews/art.shtml?num=60545
[сообщение отредактировано модератором]
>Уязвимость вызвана утечкой внутренних файловых дескрипторов.Вот и "гениальная" идея передавать файловые дескрипторы в дочерний процесс выстрелила. Ради возможности проворачивать всякие форк-трюки сделали дыру.
Кстати, утилита runc написана на безопасном языке Go
Если ты про дескрипторы, то язык тут ни при чём.
Если про гонку, то гошечка от неё не защищает
Дак и Си никогда не причём, это все процессор и контроллер памяти
Это да. Если компиляторы сишки будут бить разработчика десятком киловольт при любой попытке использовать указатели или динамически аллоцировать память — сишка станет безопасным языком.
Без динамического выделения памяти вообще жизнь станет совсем тяжёлой. Даже Pascal может в динамические массивы.
Любителей Turbo Pascal можно пересадить на Turbo Basic. Такой же синий экран, но куда более безопасный язык.
Почему именно Турбо вспомнил? Есть вполне живой Free, который, наверное, в Linux даже более востребован, чем Windows.
При всей нелюбви к Паскалю, таки использую, для небольших приложений, типа загрузкиков и конфигураторов устройств, ибо Лазарус собирает нативные приложения под Mac,Win,Linux с минимумом усилий.
Еще забавно, что студент вообще без знания Паскаля может на нем что нибудь написать полезное с минимумом подсказок.
> Любителей Turbo Pascal можно пересадить на Turbo Basic. Такой же синий экран,
> но куда более безопасный язык.А еще можно взять выключенный компьютер и подобрать монитор или телек рисующий синий экран без сигнала. Совсем безопасно станет, и без всяких труб.
Единственный безопасный метод запуска программ на небезопасных языках — не запускать эти программы.
> Единственный безопасный метод запуска программ на небезопасных языках — не запускать
> эти программы.Ну я и предложил - не включать его. Решает в том числе и эту проблему, начиная прямо с boot ROM и UEFI. И кстати проверьте что сетевой шнур - отключен от розетки! Иначе какая-нибудь пакость типа ME - все равно пролезет ведь. Только полное отключение питания, только хардкор.
Кстати такое можно неиронически устроить - с помощью системы сборки Cmake, подключая некий файл "forbidden.h" с переопределёнными функциями к любому другому. Тем самым можно запретить небезопасные функции и писать как на Расте, не переписывая код на Раст.
https://iq.opengenus.org/ban-use-of-c-functions/
https://stackoverflow.com/questions/32773283/cmake-include-h...
Тут несколько аспектов.1. Есть масса простых утилит, где не важно что и как, важно чтобы оно просто отработало на тех полутора примерах для которых написано.
2. Есть всякие анализаторы которые делают примерно тоже - возмущаются по делу и просто так на эти функции.
3. Та реализация что представлена генерит 3 строки на каждое вхождение, это не удобно.
В целом я согласен что srtcpy() и прочие функции для работы со строками без указания размера буфера не безопасны и не должны использоватся в современном коде.
Выкидывать strncpy() - глупо.
Но лично я бы предпочёл чтобы в компиляторы добавили варнинг про это, вместо этого туда нынче засунули самый бесполезный в мире варнинг -Wunsafe-buffer-usage чтобы подчеркнуть неисправимую неполноценность С и подтолкнуть к С++ и гнили.
ну вот кстати я слабо понимаю пользу от strn*Зачем нам огрызок строки и что с ним делать если была нужна вся строка? Это вот уже плохие данные и чреваты уязвимостью дальше.
В большинстве реальных ситуаций с копированием строк ты сначала меряешь, потом выделяешь под копию место, не влезло - плюешься ошибкой, потом туда копируешь уже точно зная длину. И ошибки происходят потому что просто неправильно померяли - результат ты радостно запихнешь и в функцию с n.А если ты вообще длину не знаешь по какой-то причине - а вынужден предполагать, по данным извне - то с тем же успехом можно пользоваться memcpy.
При этом strcpy и memcpy эффективны, ложатся в одну команду процессора, а вот варианты с n - нет, в процессоре не бывает комплексных проверок.
P.S.
#define BUF *buf
%s/strcpy(buf,string)/strncpy(BUF,string,sizeof(BUF))/g
Сасамба. 1998й год.Уровень людей считающих что функции с n модно-надежно-безопастно. Сейчас такие программируют на безопастных йезычках примерно так же вот.
> И ошибки происходят потому что просто неправильно померяли - результат ты радостно запихнешь и в функцию с n.Что, чёрт возьми, ты такое несешь.
n - это длинна твоего буфера, к-й тебе известен.
И как это вот оно так получается-то, что без конца при этом попадают мимо?А я тебе скажу как - то что ты думаешь что тебе "известно" - внезапно, оказывается несовпадающим с действительностью.
И, повторяю для полных дол..ов - что будем делать если даже правильно все посчитали, нигде не ошиблись - но оно - вот?
Вы всегда можете пропатчить/заменить strncpy() на нечто будет вызывать abort() (аварийно завершать процесс), если вам это так надо :)Вот такой макрос помогает понять когда функция сфейлилалась:
#define IS_SNPRINTF_FAIL(__rc, __buf_size) \
(0 > (__rc) || (__buf_size) <= (size_t)(__rc))
Но всё равно есть куча применений где пофик что оно могло сфейлится, или понятно сразу что сфейлится там просто не возможно, потому даже strcpy() часто безопасно применять.> При этом strcpy и memcpy эффективны, ложатся в одну команду процессора
Вы считаете это смешно?
Даже на z80 memcpy() требовал более 1 инструкции, тк нужно было в регистры записать аргументы.
А для х86 эффективные реализации memcpy() довольно развесистые, с переходом на SIMD где это имеет смысл.
> Вы всегда можете пропатчить/заменить strncpy() на нечто будет вызывать abort() (аварийно
> завершать процесс), если вам это так надоочевидно что так скорее всего не надо, а надо как-то аккуратно отменить операцию и сообщить пользователю или кому-то выше по стеку приложения - где сломалось и почему так вызывать не стоило.
> или понятно сразу что сфейлится там просто не возможно, потому даже strcpy() часто безопасно
> применять.именно об этом и речь - как правило мы уже померяли строку до того как с ней работать и либо либо буфер ей выделили подходящий, либо поделили под имеющиеся, либо думаем какую метнуть в морду ошибку.
(а вот применение где "и таааак сойдет" мне вообразить довольно сложно, что бы это могло бы быть?)> А для х86 эффективные реализации memcpy() довольно развесистые, с переходом на SIMD где это
> имеет смысл.и им лишняя проверка тоже совершенно никчему.
Потому что jnz БЕЗ отдельной операции сравнения у нас есть наверное в любой архитектуре, кроме совсем уж странных, а "jnz но если еще и вон там образовался нолик то не" как-то не просматривается.
У меня лично работа со строками обычно идёт как работа с буферами сырых данных (те указатель + размер, нуль никто не ищет), а всякие strncpy() почти не используются, snprinf() юзаются вон с тем макросом, обычно чтобы нагенерить ответ.
> а вот применение где "и таааак сойдет" мне вообразить довольно сложно, что бы это могло бы быть?Иногда и на С пишут какие то проги типа как на Shell Script нечто, для того чтобы сделать простую работу или проверить что оно работает.
https://github.com/rozhuk-im/sec-omc-coder
Упадёт такое - да и пофиг, нужно оно раз в году для одного файла.
Или я как то писал удалятор временных файлов под венду, и кидал в автозагрузку. По сути это легко можно было заменить на .cmd файл или .sh под не вендой, но мне тогда в голову как то не пришла такая идея и я написал на С :)Точно так же один знакомый на PHP писал консольные утилиты которые что то там делали с текстовыми файлами, потому что PHP для него основной язык.
> https://github.com/rozhuk-im/sec-omc-coder
> Упадёт такое - да и пофиг, нужно оно раз в году для одного файла.Вопрос: что сие за штука? Что за omc и самсунги? Такое описание как будто все знают о чем это. Самсунг производит что угодно - от аккумуляторов до морских кораблей, это хардварная версия Гугла.
> srtcpy() и прочие функции для работы со строками без указания размера буфера не безопасны и не должны использоватся в современном коде.Плосы встречного дорожного движения обозначаются разделительной полосой или бетонным отбойником вдоль проезжей части.
Бетонный отбойник гарантированно исключает выезд на встречную полосу.
Включая ситуации, когда в крайнем левом ряду внезапное препятствие (ДТП), времени на экстренное торможение нет, правый ряд занят, а встречка свободна.
Добро пожаловать в безопасный, дивный мир. ;-)
>Бетонный отбойник гарантированно исключает выезд на встречную полосу.В бетонном отбойнике нет unsafe. И вылет на встречную он не гарантирует.
В точку!Безопасность движения - это, сначала, мастерство водителей, а разметка дорог потом.
Надёжность программ - это, сначала, мастерство программистов, и "безопасный" ЯП потом.
>>Бетонный отбойник гарантированно исключает выезд на встречную полосу.
> В бетонном отбойнике нет unsafe. И вылет на встречную он не гарантирует.Ну вот хрустовский panic() это типичный бетонный отбойник. И хотел ли ты его получить в случае если кернел линуха не смог вооон там в аллокацию памяти - большой такой вопрос. Может лучше было зафейлить сискол с каким-нибудь -ENOMEM или чем там, да и хорен с ним - по сравнению с падежом всего кернела с грохотом то? Конечно, в панике кернел в довольно безопасном стостоянии, но...
На память об этом безопасные хрустики придумали try* костыли на свои конструкции (чем это так отличается от остальной динамической аллокации, с которой боролись?!). Изящно так получилось, совсем не похоже на костыль и на то с чем так пафосно боролись. Оказывается постоянно убиваться о бетонный отбойник то - это такое себе. Надо же!
Нужна не абстрактная безопасность а работоспособность и производительность.
При этом работоспособность иногда включает в себя и вашу "безопасность", если это является целью работы програмы.А эта ваша "безопасность" похоже на кастрацию, когда ничего в языке сделать нельзя, да он ещё тебя поучает и отвественность за ошибки типа с тебя снимает.
В общем пока вот такие хотят безопасности, веганствуют и запрещают оружие, нормальные люди покупают очередной ствол, жарят шашлык и пишут прогу на С которая делает то что им нужно.
Мне почему-то кажется, что вы ездите на автомобиле, не пристёгиваясь ремнём.
Вам действительно кажется :)
Я езжу В такси, пристёгиваясь там где таксисты не убрали ремни.
Как насчёт того, что пристёгивание ремнём влияет на производительность поездки (добавляет +2 секунды в начале и в конце)?
В вашем представлении, это должен быть очень серьёзный оверхед.
Функция перевозки - доставить пассажира до места целым, очевидно что не пристёгивание может повлиять на целостность :)
Водитель обычно не ждёт когда пристегнутся, по крайней мере здесь обычно так, и поскольку он не стартует сразу до сотки (да тут и погонять негде) то это не существенно.
> Как насчёт того, что пристёгивание ремнём влияет на производительность поездки (добавляет
> +2 секунды в начале и в конце)?
> В вашем представлении, это должен быть очень серьёзный оверхед.Ну, если телепортатор перекидывал меня через половину глобуса за секунду - 2 секунды на пристегнуться, и 2 на отстегнуться будут, очевидно, подбешивать...
> При этом работоспособность иногда включает в себя и вашу "безопасность", если это является целью работы програмы.Корректность программы -- это составная часть работоспособности. А если мы под "безопасностью" понимаем safety в стиле раста, то это составная часть корректности. К киберсекурити это имеет лишь косвенное отношение.
> А эта ваша "безопасность" похоже на кастрацию, когда ничего в языке сделать нельзя
Не лезь в программирование, это не твоё. Попробуй сисадмином устроиться, там надо не столько уметь, сколько знать, то есть декларативное знание важнее процедурного. Может тебе лучше зайдёт.
> Нужна не абстрактная безопасность а работоспособность и производительность.В общем, вам нужно, чтобы вашу прогу не просто могли ломануть, а могли это сделать тысячу раз в секунду, чтобы каждый китайский ботнет подсадил по своему трояну.
Правда, после этого производительность становится так себе, потому что система начинает майнить сразу несколько криптовалют.
> Это да. Если компиляторы сишки будут бить разработчика десятком киловольт при любой
> попытке использовать указатели или динамически аллоцировать память — сишка станет
> безопасным языком.Зачем так сложно? Статический анализатор и какой-нибудь misra checker в билд пайплайн - и попробуй-ка сгавнякай.
> Если про гонку, то гошечка от неё не защищаетТам у Гошки ключик есть полезный для этого, -race называется
> -raceКоторый найдёт только те гонки, что происходят регулярно, да и их не всегда.
>> -race
> Который найдёт только те гонки, что происходят регулярно, да и их не
> всегда.Если вы посмотрите на то, на что я коментировал, то уверен, что вы поймете о чем речь.
Изпользуйте как можно меньше го-рутин с шаред обьектами, разбивая логику на тестируемые юниты, Mutex, WaitGroup и каналы с shared ресурсами is must have, а не глобальные флаговые переменные в надежде только на -race и все будет пучком, как впрочем не только с Го, а и любыми другими ЯП.
> как впрочем не только с Го, а и любыми другими ЯП.Речь шла о том, защищает ли go от гонок данных, ответ - не защищает.
Если в Rust компилятор требует от тебя доказательства что гонок данных нет, то в golang тебе вручную нужно следить за тем что у тебя оптимально блокировки/атомики расставлены.
В сложном Rust коде это также позволяет более чётко разделять владение ресурсами, что позволяет проводить рефакторинг без риска где-то разломать хрупкие concurrency инварианты.
> Речь шла о том, защищает ли go от гонок данных, ответ - не защищает.В смысле сам язык? Автоматом? А такие вообще есть?
Го предоставляет достаточно инструментария чтоб не делать гонок, а значит если програмист умеет пользоваться языком, знает как работают операциоунные системы, то Го вполне даже защищает и
-race кстати, вполне хороший помощник если написанно достаточно грамотно и тесты написанны не для отмазки а с душой.Если же кто то думает, что сляпает программу и проверит с -race, то определенно это заблуждение и это относится на сколько я знаю ко всем существующим языкам.
> Если в Rust компилятор требует от тебя доказательства что гонок данных нет,
> то в golang тебе вручную нужно следить за тем что у
> тебя оптимально блокировки/атомики расставлены.как только понадобятся сырые указатели и включится ансайв, то он ни чем не будет отличаться о своих товарищей по цеху
> В сложном Rust коде это также позволяет более чётко разделять владение ресурсами,
> что позволяет проводить рефакторинг без риска где-то разломать хрупкие concurrency инварианты.Я далеко не против против Раста, но его изпользование и поддержка на сегодняшний день обходятся дороже чем тот же Го || java. Не все синьоры (а то и принципалы) смогут быстро прыгнуть на растовый код, когда кодовая база наработана десятилетиями на других языках. Держать специально только растовиков, - очень накладно, потому как действительно глубоко понимающих этот язык не так уж и много
> В смысле сам язык? Автоматом? А такие вообще есть?Ну написал же - Rust
> Го предоставляет достаточно инструментария чтоб не делать гонок, а значит если програмист
> умеет пользоваться языкомC предоставляет достаточно инструментария чтобы не делать выходов за границы буфера и use after free, а значит если программист умеет пользоваться языком... Ну как бы уже понятно
> как только понадобятся сырые указатели и включится ансайв, то он ни чем
> не будет отличаться о своих товарищей по цехуБудет, поскольку unsafe не выключает гарантий языка, и более того, большая часть кода unsafe не использует.
Ну и без unsound кода ты не можешь получить гонки данных, т.е Rust таки тебя защищает.> но его изпользование и поддержка на
> сегодняшний день обходятся дороже чем тот же Го || java.Смотря для чего, там где тебе нужно работать в режиме реального времени go/java тебе не подходят из-за сборщика мусора. А Rust позволит тебе расставить атомики в строго нужных местах, и гарантирует что ты ничего не пропустил.
Также если у тебя не какой-то веб бекенд, а что-то, где реально важна корректность исполнения, корректность в Rust стоит на первом месте в отличии от golang (Примеров много, несколько штук упомянуты тут например https://fasterthanli.me/articles/i-want-off-mr-golangs-wild-...)Да и в целом не очень сложно собрать команду Rust разработчиков, их уже достаточно много чтобы выполнять проекты любой сложности, тут скорее проблема что компаний использующих Rust на всех не хватает)
Особенно если есть предубеждения относительно криптовалют и HFT.
> Смотря для чего, там где тебе нужно работать в режиме реального времени go/java тебе не подходят из-за сборщика мусора.Вот это наверное самое главное - use the right tool for a job.
Что свелось по большому счету к С vs Rust, если это реал тайм, то определенно раст будет надежней (при условии, что раст програмист не дергается между проектами, а програмирует на нем каждый день), но там, где это не ринг ноль, не реал тайм, затраты на изпользования раста и что более важно его суппорт пока что дороже.
> Да и в целом не очень сложно собрать команду Rust разработчиковХелло-вордщиков, - да навалом
> их уже достаточно много чтобы выполнять проекты любой сложности
К сожалению у нас с вами разный опыт, большинство "растовиков" косячат так же как и с другими языками, есть которые действительо шарят и глубоко понимают язык и системы, но очень уж много хайпо-пиплов. Как только начинают топить за раст только, это первый признак, что у человека мало опыта, в отличие от действительно тех, кто владеет многими языками и выбирют тот инструментарий, который больше подходит под конкретные задачи.
И это разговор больше про новые проекты, а то, что написанно и работает десятилетиями, переписывать все на безопасный язык, - на это не пойдут даже монстры, дешевле уплатить отмазку, беря риск, если что что-то пойдет не так.
Поняли, если дырявая прожка написана на безопастном язычке, тут же оказывается что "язык тут ни при чём". Все что нужно знать об умственных способностях проповедников святой безопастности.
Именно. Так как безопасный язык не допускает языко-зависимых дыр (например, переполнения буфера), то остаются только дыры в логике программы.
Ты все равно не выловишь все memory огрехи в C/C++ статическими анализаторами, а в Rust такие ошибок тупа нет. Нужно максимально ошибки человеческого фактора перекладывать на компилятор, потому что это позволяет повысить качество софта в среднем, вне зависимости от квалификации и внимательности программистов.
> Кстати, утилита runc написана на безопасном языке GoБезопасТном, я б сказал, глядя на аж 6 CVE за присест.
> Кстати, утилита runc написана на безопасном языке GoПоэтому там хотя бы нет переполнений буфера.
Зато то, что там есть в силу особого подхода к погромированию - куда хуже.
Ничто не может быть хуже переполнений буфера, с учетом того, что любая программа на сишке содержит их буквально в каждом килобайте бинарного кода.
Ахтунг, у нас уникум который проверил каждую программу на Си, и в каждой нашел переполнения буфера. Или он балабол, что куда более вероятно.
Любой разумный человек, если вы ему покажете прогу, написанную на сях и использующую динамическую аллокацию памяти и заявите, что там нет уязвимостей, скажет вам, что вы балабол.Просто потому, что ни одной такой программы в истории человечества не зафиксировано.
@аноним выше
Хуже переполнений буфера может быть буфер переполнений.
А вообще давай, покажи хотя бы на kernel32.dll - где они там в каждом килобайте?
> Хуже переполнений буфера может быть буфер переполнений.И то, и другое — синонимы термина "C programming language".
> А вообще давай, покажи хотя бы на kernel32.dll - где они там в каждом килобайте?
Я вашего труЪ олдскул юникса не разумею.
Да не, у тебя потупее имя было! (С) ОднаждыЛюди делают ошибки, прикинь! Кто бы мог подумать? Это что же - Дарвин прав и мы не дети богов а всего то придвинутые обезьяны? Какой Ёзык не дай - всё равно ошибки есть :)
> Какой Ёзык не дай - всё равно ошибки есть :)Просто при прямой работе с памятью их выходит в десятки раз больше, чем без.
> И то, и другое — синонимы термина "C programming language".Очередной студент освоил питон/раст и все остальное ка-ка & олд скульное ? :)
> Очередной студент освоил питон/раст и все остальное ка-ка & олд скульное ? :)Там про какой-то kernel32.dll говорили. Явно про самый труЪ юниксовый юникс от компании Мокрый Софт, без этих ваших ржавых докеров.
>> Очередной студент освоил питон/раст и все остальное ка-ка & олд скульное ? :)
> Там про какой-то kernel32.dll говорили. Явно про самый труЪ юниксовый юникс от
> компании Мокрый СофтЯ про: "синонимы термина "C programming language" если что...
> без этих ваших ржавых докеров.
докеры вообще-то, совсем совсем - не ржавые :)
> Я про: "синонимы термина "C programming language" если что...Хороший препод в универе сразу скажет в начале курса что-то вроде "Как бы вы не старались писать на сишке без переполнений буфера, вы не сможете, каким бы гением вы ни были". И такие люди, как правило, не являются фанатами новомодной фигни.
> докеры вообще-то, совсем совсем - не ржавые :)
Это был лёгкий сарказм над "труЪ олдскульными программистами", для который всё, что не kernel32.dll — то модный ржавый игого-докер в кубернетисе под системд с вяленым, смузи-смузи-смузи.
>> Я про: "синонимы термина "C programming language" если что...
> Хороший препод в универе сразу скажет в начале курса что-то вроде "Как
> бы вы не старались писать на сишке без переполнений буфера"Препод в юнивер в большинстве случаев очень далек от реальностей продакшена, единицы которые действительно следуют индустрии, остальные же хорошие спикеры про хайп.
> Это был лёгкий сарказм над "труЪ олдскульными программистами", для который всё, что не kernel32.dllПонятно :)
>буфер переполненийДвумерный массив?
>покажи хотя бы на kernel32.dll - где они там в каждом килобайте?
Тут чтобы что-либо показать, как бы, нужно иметь kernel32.h, kernel32.c, как минимум.
Ну можно хотя бы от 2000 винды взять - они утекали.
Двумерный массив - это ложь.
>> Кстати, утилита runc написана на безопасном языке Go
> Поэтому там хотя бы нет переполнений буфера.Как оказалось от д@o2#$ов в программировании это не помогает и они ухитряются не то что свою память профакать - а вообще изолированный от них хост подставить, разломав абстракцию к чертям.
>в образе контейнера можно настроить запуск "/proc/self/fd/7/../../../bin/bash" и через выполнение shell-скрипта перезаписать содержимое "/proc/self/exe", которое ссылается на хостовую копию /bin/bashКакая детсадовская ошибка! А кто-то утвержает, что контейнеры - production ready.
Кто-то утверждал, что OpenBSD можно в проде использовать. И до, и после обнаружения функци remote shell в OpenSMTPD.
Этак что же, и exim с sendmail'ом низзя? Дила...
Этадругое! (С)
Нет, то же самое.
Хотя и меньше Тео-пафоса про "наши лучшие специалисты делают самую безопасную в мире ОС, безжалостно жертвуя функциональностью, чтобы достичь высочайшей защищённости".
> Этак что же, и exim с sendmail'ом низзя? Дила...Exim — точно нет. Его писали такие же "специалисты", как и в команде Тео. Единственный плюс им в карму — они не так сильно злоупотребляли маркетинговыми лозунгами про "суперзащищённость".
sendmail — вроде можно, но лучше не надо. Формат конфигов у него так себе, хотя это и вкусовщина.
>> Этак что же, и exim с sendmail'ом низзя? Дила...
> Exim — точно нет. Его писали такие же "специалисты", как и в
> команде Тео. Единственный плюс им в карму — они не так
> сильно злоупотребляли маркетинговыми лозунгами про "суперзащищённость".
> sendmail — вроде можно, но лучше не надо. Формат конфигов у него
> так себе, хотя это и вкусовщина.Оу. Т.е. про шлимыл вы примерно ничего не знаете, да?
Прочитал про его настройку, посмотрел конфиги, выбрал postfix.
> Прочитал про его настройку, посмотрел конфиги, выбрал postfix.Ну, это вы совершенно правильно поступили - но прикол тут в том, что у sendmail'а история проблем с безопасностью, гм, спе-ци-фич-ная - оно дырявое by design даже по меркам ранних 90х - так что говорить про sendmail "вроде можно" в контексте обсуждения сесурити весьма и весьма забавно.
> Кто-то утверждал, что OpenBSD можно в проде использовать. И до, и после
> обнаружения функци remote shell в OpenSMTPD.Запись в kernel mode хоста из виртуалки-гуеста тоже ничего так, норм было. В каком-нибудь несекурном пингвине я даже и не знаю - было ли такое хоть когда.
...при том с фиксом они тоже ухитрились обгадиться по первости, за что получили недвусмсленный стеб насчет security circus от NetBSD'шника который нашел этот позор.
А сколько еще подобных "секретиков" и "куличиков" там заложено?!
Покажете хоть один, если их там так много, а вы такой умный?
Это знаменитая аналитика общими словами и под лозунгом "ну что вы не понимаете?"
> Покажете хоть один, если их там так много, а вы такой умный?э... ну вообще-то cveшек с убеганием из контейнера - по паре в год минимум.
Правда эта совсем уж шедевральная, обычно они все же более замысловаты.
Вот только все эти дыры, кроме сегодняшней — из-за кривой реализации namespaces и/или eBPF в ядре.
> Вот только все эти дыры, кроме сегодняшней — из-за кривой реализации namespaces
> и/или eBPF в ядре.мифы и легенды опеннета, рулонами по 54 метра на вес.
Открывать список cve дыркера, где нет ни слова про ведро, конечно же не будем.
> Открывать список cve дыркера, где нет ни слова про ведро, конечно же не будем.И где там убегание из контейнера при его выполнении?
'S' for security!
Ну, если запускать этот код с SSD, то должно быть безопасно. Вдвойне.
Гораздо секурнее булет эмуляция без паравиртуализации. Контейнеры - костыли, слишком много хаков в их реализации. Эмулятор создает виртуальное окружение, которое с хостом никак не взаимодействует.
милый опеннетовский дypaчок... если оно никак с хостом не взаимодействует - после запуска ты видишь только чорный пречорный экран. И попасть внутрь не можешь совершенно никак. Ну не взаимодействует же - как ты туда попадешь.Кому нужен такой чорный-пречорный ящик (еще и с нулевой производительностью, поскольку все современные эмуляторы двигаются в ровно противоположную сторону - к паравиртуализации и еще большей интеграции с хостом) - придумай сам.
Ну как это. Если есть возможность исполнить произвольный код, то он просто пихнёт котовый код с очередным выходом на минус третье кольцо и пошатает потенциальные сферические центрифуги в вакууме. Виртуализация это не эмуляция, ты, опеннетовский дурачок, этого не осознаёшь. И то, в эмуляторах вроде того же bochs находили уязвимости, так что и эмуляция не панацея.
> милый опеннетовский дypaчок... если оно никак с хостом не взаимодействует - после запуска ты видишь только чорный пречорный экран. И попасть внутрь не можешь совершенно никак. Ну не взаимодействует же - как ты туда попадешь.Ну логично же. Отрубить доступ к сети, файлам и устройствам, а лучше вообще все syscall-ы заменить заглушками. Трушно, олдскульно, полностью безопасно, абсолютно бесполезно.
Ты как-то смешал PV и контейнеры.
Контейнеры - это вообще костыль и подпорка в виде в основном разделения таблиц внутри ядра, никакой виртуализации там и близко нет.
Суть в итоге та же - запустить несколько экземпляров ОС на одной железке. Виртуализация избавляет от вагона узкоспецифичного секса, но даёт больший оверхед.
Суть далеко не та же.
В контейнерах нет никаких "экземпляров ОС", они все ворочаются на одном ведре.
Потому что надо использовать podman и закопать докер
Да... он конечно тоже использует crun и runc смотря что настроить. Сколько ж тебе шляпа за пиар платит]?
Кому-то стоит подтянуть теорию про современную контейнеризацию, а то начинает шкалить даже настроенный на ононимов опеннета кринжометр.
Podman затрагивает?
Если не заставишь использовать crun - да.
кому нужны эти контейнеры? чтобы что? сэкономить 3 цента на виртуализации?виртуализации хотя бы аппартно поддерживается вплоть до шифрования памяти гостевых ситем
и это не совсем надежно и дыры были в том числе
а это что? иллюзия изолированности?
Тебе не нужно, проходи мимо
Дома на мамкином компе ничего вообще не нужноПодрастешь, пойдешь работать, поймешь, что задачи бывают разные и где-то именно контейнеры лучший выход, а где-то виртуализация, а еще где-то вообще только голое железо и никаких гвоздей
Для разных задач разные инструменты лучше подходящие под твои нужды
ты клоун? вопрос был простой как валенок, какие такие задачи не покрываются виртуализацией, которая хотя бы предусматривает безопасное исполнение на уровне железа?чтобы решить что-то подобное на чисто программном уровне браузеры обмазываются сандбоксом, линуха селинуксом и аппармором и все равно иногда свистит
Ок, я тебе покажу - но чур ты идешь гуглить, спрашивать чатгопоту (и перепроверять что она не нанесла х-ни) - САМ.syslogd_program="jail / syslog 192.168.1.1 $syslogd_program" # да, нам нужно принимать логи извне
(и да, ты мог бы сделать это и в линуксе с помощью cgroups, правда, с небольшим опозданием - команда в том виде в котором я ее тебе показал - 1999го года, но даже команды для этого уже не входят в стандартные дистрибутивы. Иди ипппись с нескучными декларативными конфижками системдряни, и даже не думай что-то посложнее отлаживать запуском вручную.)
Что мешает принимать/отправлять любые логи в/из виртуалки?
Команда jail даёт +100 к понтам, а в случае с виртуалкой её некуда приткнуть.
По своему умеренному опыту работы со всякими докерами - большое удобство разворачивания определённого окружения для разработки/тестирования/отладки/сборкиВместо плясок с куевой горой установочников, пакетов, сериптов и версий, скармливаниям файл настроек
Ждёшь. Получаешь то, в чём можно делать делаНо докеры и прочее особо не были про безопасность. Они были про упрощение плясок в некоторых специфических ситуациях
> По своему умеренному опыту работы со всякими докерами - большое удобство разворачивания
> определённого окружения для разработки/тестирования/отладки/сборкидля выкрасить и выбросить, угу.
Ну и не разворачивания а копипасты. Разворачивал за тебя тот самый васян что оставил тебе контейнер - в истории которого чаще всего оказывается FROM: srach и COPY vasyan.100g.tar /
Т.е. оно конечно отлично воспроизводит локалхост васяна, где у него "Всеработает", но воспроизведению само по себе - чаще всего не подлежит.
Так и живем.
> Т.е. оно конечно отлично воспроизводит локалхост васяна, где у него "Всеработает", но воспроизведению само по себе - чаще всего не подлежит.Вы, видимо, очень далеки от практики, раз путаете такие простые вещи. Докер как раз и позволяет одной командой полностью воспроизвести рабочее окружение. Практически все методы без докера не позволяют точно воспроизвести условия запуска программы.
> Докер как раз и позволяет одной командой полностью воспроизвести рабочее окружениеВасяна.
> не позволяют точно воспроизвести условия запуска программы
Докер не воспроизводит ядро и его настройки.
> воспроизвести рабочее окружение
Только никакого графического вывода он не может, мог кое как с Х11, с вейландом - всё.
> Практически все методы без докера
Nix и Guix позволяют или не позволяют?
> Вы, видимо, очень далеки от практики, раз путаете такие простые вещи. Докер
> как раз и позволяет одной командой полностью воспроизвести рабочее окружение. Практическитого самого васяна - да. Вместе со всеми его косяками и глупостями.
> все методы без докера не позволяют точно воспроизвести условия запуска программы.
заставляя васянов писать софт работающий не только на их единственной и неповторимой системе где они сами не знают как и что за чем тут понаставлено и почему оно при этом заработало. Просто методом тыка. Шаг влево - шаг вправо - это мы не проходили, это нам не задавали.
А васяны так не могут и не хотят. Поэтому нате вам vasyan.100g-of-shit.tar и даже и не думайте туда лазить.
И плевать что внутри все из соплей и клея и вон та библиотека при попытке открыть картинку заодно ее исполнит.
Если у вас возникла необходимость настолько точно воспроизводить условия - что-то в вашей программе совсем-совсем не так.
> Если у вас возникла необходимость настолько точно воспроизводить условия - что-то в
> вашей программе совсем-совсем не так.Вы видимо совсем разработкой софта не занимались. Иногда знали бы что проблема бывает порой только в кастомерской конфиге, и только с их данными/параметрами, непонятно откуда вынутыми, но уж что есть.
А по другому вы можете год плясать кан-бан и все будет как бы ЗБС.
Хочешь простой пример который ты хрен воспроизведешь? Фйэсбук и база на 30 терабайт. У тебя такой нет - и ты поднапряжешься ее создать, пожалуй. А оно на 20-м терабайте, оказывается, ФС ломало. Потому что фэйсбук первый кто такое файло всерьез активно ворочал на весь глобус. Но у них не было нужды трансферить конфигу другим - иногда очень круто что разработчики ФС прямо в той же фирме и работали.
> Вы видимо совсем разработкой софта не занимались. Иногда знали бы что проблемаВсе разрабатывают и всё работает, но у вас как всегда проблемы.
А если речь о некастомерской инфре - тут вообще ой.> Хочешь простой пример который ты хрен воспроизведешь? Фйэсбук и база на 30
И при чём тут пользовательская конфигурация?
> Все разрабатывают и всё работает, но у вас как всегда проблемы.Да неужели? Вы точно разработкой софта занимались, с таким то видением мира? А багзила например редхата, или даже линукскернела - куда я самолично эн багов вкатил - мой глюк чтоли? ORLY? Число багов на kloc конечно меняется от проекта к проекту - но вот нулевым не бывает. Так что в любой более-менее крупной программе почти гарантировано есть баги.
Есть несколько областей где в силу очень тщательных и специфичных подходов это минимизируется, как то авиация, автомотивщики и прочее критичное управление. Но за это воздается другими времянками и стоимостью разработки и это не лечится: комплекс продвинутых мероприятий не бывает нахаляву.
> А если речь о некастомерской инфре - тут вообще ой.
Смотря что под этим понимать. В случае с багами которые лезут у кастомера - подстава в том что повторить это на бис в локации разработчика может и не получиться.
>> Хочешь простой пример который ты хрен воспроизведешь? Фйэсбук и база на 30
> И при чём тут пользовательская конфигурация?При том что это был 1й "юзер" файлухи с таким конфигом, активно кантуемые файлы по 30 терабайт на дороге не валяются! Больше ни у кого конфигурации не было - ну никто и не узнал что будет ДО фактического запрыга на грабли уже в рамках эксплуатации. А если файло менее 20 Тб - то проблема просто никогда не проявляется, удачи в поимке и воспроизведении.
И такого странного гамна - можно много где откушать. Это совершенно обычное явление в софтострое. "У вас" - это у кого именно? Я вот багу в работе с DMA контроллером вкатил разок. В силу нетривиальности предмета бага - было поймано аж git bisect. Это щитово?
> А багзила например редхата, или даже линукскернелаСовет на 100500 баксов - попробуйте в контейнер запихать :D
>> А багзила например редхата, или даже линукскернела
> Совет на 100500 баксов - попробуйте в контейнер запихать :DДа линукс сам себе контейнер так то. Еще и в более 9000 ипостасей, от namespaces до UML какого-нибудь, который вообще, толи виртуализатор, толи нет - поди разбери эту внеклассовую хрень.
> И такого странного гамна - можно много где откушать.Главное - не обляпаться.
Я предпочитаю кушать в более чистых местах.
>Хочешь простой пример который ты хрен воспроизведешь? Фйэсбук и база на 30 терабайт.А я не знал, что докер умеет тридцать терабайт к системе пришивать, всю жизнь думал, что nfs или nbd этим занимаются.
>>Хочешь простой пример который ты хрен воспроизведешь? Фйэсбук и база на 30 терабайт.
> А я не знал, что докер умеет тридцать терабайт к системе пришивать,
> всю жизнь думал, что nfs или nbd этим занимаются.Это просто как пример бага который без "конфигурации кастомера" заманаешься воспроизводить и чинить. У вас же нет с наскока активно ворочаемой базы на 30 терабайт, так? Ну вы и и не узнаете что там в файлухе при этом случается, соответственно :). А как тогда чинить?!
Поэтому баг долго и счастливо жил в режиме неуловимого Джо - и был всем похрен. Больше просто не было таких файлов ни у кого. Это не значит что сие валидный повод ФС факапнуть.
А чтобы на это посмотреть - надо или - вот - в интерьере, или немало времени на воссоздание убить, что не тривиально. А если файло будет менее 20 Тб то вызвать баг вообще никогда не получится. Но вы об этом заранее не знаете же. И можете долго и безрезультатно танцевать кан-бан.
>Докер как раз и позволяет одной командой полностью воспроизвести рабочее окружение.install.sh тоже позволяет
> Вы, видимо, очень далеки от практики, раз путаете такие простые вещи. Докер
> как раз и позволяет одной командой полностью воспроизвести рабочее окружение. Практически
> все методы без докера не позволяют точно воспроизвести условия запуска программы.Пендеж. Виртуалка с системой и прогой кастомера :) намного точнее. Если тот конечно морально готов на такую щедрость.
подожди но если стоит задача автоматизации разворачивания, то она уже решена большинством ISPты заказывая виртуалку не ожидаешь ведь, что ее бородатый админ руками для тебя ставить пойдет с банкой пива?
тоже скармливается скрипт установки и ты получаешься свою виртуалку через пару минут
и если это единственное преимущество, то в чем я не прав?
> ты заказывая виртуалку не ожидаешь ведь, что ее бородатый админ руками для
> тебя ставить пойдет с банкой пива?
> тоже скармливается скрипт установки и ты получаешься свою виртуалку через пару минутну вот теперь представь что тебе нужна виртуалка для redis, виртуалка для mongo, виртуалка для твоей поделки на нескучном язычке, виртуалка для вебсервера
Вопрос в студию - не зае...шься ли ты писать скрипты установки под это все? Заодно, учти, тебе надо в конфигах всей этой ерунды правильно настроить адреса, пароли и явки - то ли вручную, то ли опять на каждый чих скриптовать (завтра придет другой васян, ему не нужен редис, ему нужен rabbit)
Ну и то что эти виртуалки надо обслуживать как целые операционные системы - следить за логами, пока не поломали, следить за местом, за доступностью, про обновления ладно, забьем, докероиды так же забили еще на этапе проектирования той поделки.Понятно что наиболее простой способ решить проблему - послать подальше и виртуалки, и дыркеры, и просто установить весь софт в одну систему, где будут и обновления, и единственная точка где надо следить за всем. Но тут нам на помощь приходят модные современные разработчики, не слышавшие про обратную совместимость, и очень скоро выясняется что в одну он не устанавливается потому что зависимости разные. Причем в каждом втором случае окажется что НЕТ такой системы где они выполняются, и надо поверх системных поставить пачку левых библиотек, ломающих систему к хренам - зато васянская софтина работает.
скрипт ставит голую ось (Minimal), остальное ставишь сам, есть конечно опции, но я обычно беру Minimal и дальше ставлю все что мне нужнонельзя настроить банальный MySQL не выбрав ему размер страницы, размер пула, кодировку по умолчанию utf8mb4
а что там у васяна в контейнере - я хз
> скрипт ставит голую ось (Minimal), остальное ставишь сама, так ты нам всем пое6аться принес?
Ну а вот чувак 20дырчатый тут пробегал - представь себе потратил НОЛЬ секунд на "ставишь сам". За него уже все поставили и даже настроили как надо.
А ты бы до сих пор настраивал 18ю виртуалку, а к скрипту на нескучном язычке так бы еще и не приступил даже - все силы и время ушли бы у тебя на полировочку глюкал.
ты тормоз, перечитай ветку
Ну так-то возможность поставить unattended уже давно сделано.
Второй вариант - всякие ансиблы с терраформами, которые сделают пост-инсталл ровно так, как тебе надо.
ну так нахрена мне унатендед понаставленные двадцать виртуалок в которых самому надо все конфигурить и смотри-не-перепутай адреса?> Второй вариант - всякие ансиблы с терраформами, которые сделают пост-инсталл ровно так, как тебе
> надо.гораздо быстрее будет все же сконфигурить все 20 вручную.
Не, стоп, в унаттендед много чего может быть. Вплоть до конфигурации и адресов.
> Не, стоп, в унаттендед много чего может быть. Вплоть до конфигурации и
> адресов.ну как ты это себе представляешь в вариации для 20 штук одного клиента?
И вообще, щас принято cloud-init'ом стереть ssh ключи на каждой перезагрузке и прилепить первый попавший айпишник, вот тебе и конфигурация. А как ты потом это в общую кучу будешь собирать - всем пофигу.
А, так вот почему количество дол... простите, разрабоччегов с dyndns увеличилось.
>пачку левых библиотек, ломающих систему к хренамФлаг --prefix в configure. И patchelf в зубы.
>>пачку левых библиотек, ломающих систему к хренам
> Флаг --prefix в configure. И patchelf в зубы.ффперед, с песнями. Дай угадаю - ты не разработчик софта ни разу.
configure еще какое-то выдумал, бумер ср-ный. Вон, ninja и этот, как его... иди ищи где у него там какой-то "prefix"
>иди ищи где у него там какой-то "prefix"грепнуть
и смотри еще, второй момент, образ кто-то должен подготовить?т.е. все равно конфигурирование присутствует, только не тобой
тебе приходится доверять еще одному участнику
хорошо это не про безопасность, но тогда я никак не пойму почему на этому пытаются строить продакшен системы?
>По своему умеренному опыту работы со всякими докерами - большое удобство разворачивания определённого окружения для разработки/тестирования/отладки/сборкиТ.е. ты не научился пользоваться пакетным менеджером
>Вместо плясок с куевой горой установочников, пакетов, сериптов и версий, скармливаниям файл настроек
и шеллом, как и принимать скрипты от твоего админа
>>По своему умеренному опыту работы со всякими докерами - большое удобство разворачивания
>>определённого окружения для разработки/тестирования/отладки/сборки
> Т.е. ты не научился пользоваться пакетным менеджеромкак бы мне так воспользоваться пакетным менеджером чтоб в системе появилась версия openssl на единичку выше штатной, не подскажешь?
И чтоб не сразу начать ее переставлять, кстати.
Причем мне на посмотреть одну-единственную хрень, а потом уже не нужна.
Или вот та самая хрень на впихоне которую я тут добрыми матерными словами вспоминал, потому что таки переставлять почти пришлось (только не надо мне тут рассказывать что я не умею. Это сказочники ничего сложнее хеловротов не умеют. Там не просто хрень на впихоне, а ей подавай wxWidgets. Кто плавал - тот знает, а местные эксперты обойдутся без подробностей.)
>как бы мне так воспользоваться пакетным менеджером чтоб в системе появилась версия openssl на единичку выше штатной, не подскажешь?У меня слака стоит, там это тривиально. installpkg и все дела. Необходимость поставить именно ту самую версию либы часто высосана из пальца, таких допустимых версий обычно несколько.
>Причем мне на посмотреть одну-единственную хрень, а потом уже не нужна.
Ну смотри, я тебе не запретил.
>Или вот та самая хрень на впихоне которую я тут добрыми матерными словами вспоминал
Сорян, не слежу за твоими похождениями.
>>как бы мне так воспользоваться пакетным менеджером чтоб в системе появилась версия openssl на единичку выше штатной, не подскажешь?
> У меня слака стоит, там это тривиально. installpkg и все дела. НеобходимостьА, ну да - скачать и make install. Но извини, не всем нравятся помойки.
> поставить именно ту самую версию либы часто высосана из пальца, таких
> допустимых версий обычно несколько.и еще поправить систему сборки (неизвестно заранее какую и точно вот не configure.in) где она гвоздем прибита. И потом обнаружить что нет, не угадал - все же нужна другая.
> А, ну да - скачать и make install. Но извини, не всем
> нравятся помойки.Ну правильно, кроме контейнеров тебе и снапшоты поди тоже не вариант, да? И вот нафиг тебе тогда твой летающий утюг ZFS, если ты даже не можешь ни инстанс системы на разнос скроить, ни вернуть быренько в чистый вид после экспериментов? На форуме хвастаться? Это тема.
> и еще поправить систему сборки (неизвестно заранее какую и точно вот не
> configure.in) где она гвоздем прибита. И потом обнаружить что нет, не
> угадал - все же нужна другая.Да вообще капец, нерешаемая проблема.
>> А, ну да - скачать и make install. Но извини, не всем
>> нравятся помойки.
> Ну правильно, кроме контейнеров тебе и снапшоты поди тоже не вариант, да?нет, тоже не вариант. Я не хочу потерять ВСЕ что я делал на этой машине с момента снапшота. Мало ли что я там еще делал.
Я хочу ТОЛЬКО смахнуть мусор оставшийся от вот конкретно этой программы.> И вот нафиг тебе тогда твой летающий утюг ZFS, если ты
боюсь человеку не понимающему элементарных вещей, объяснять сложные бесполезно.
> Да вообще капец, нерешаемая проблема.
В рамках одной системы - да, часто нерешаемая. Или решение такое что лучше б его не было.
> нет, тоже не вариант. Я не хочу потерять ВСЕ что я делал
> на этой машине с момента снапшота. Мало ли что я там еще делал.
> Я хочу ТОЛЬКО смахнуть мусор оставшийся от вот конкретно этой программы.Правильно, а бутануть нулевую VM и сделать в нее send конфиги - ты тоже видимо не умеешь, да? А я вот с урезаной версии своего десктопа :D с тобой тут болтаю. Такая разница.
Могу за пару минут еще 1 такой же нарезать - в нем сделать какие-то эксперименты, а если не понравится - окей, я просто сотру ту виртуалочку. И весь "срач в систему".
Видишь как все на самом деле просто? И занимает - несколько минут. Если не быть ветеран-юникс-тормозом, забыть, нах, твой безблагодатный линейный менеджмент систем без клонирования конфиг, древовидных историй, снапшотов/виртуализаций и орудовать как современный человек, а не австралопитек эпохи становления интернета из 1995-го.
>> И вот нафиг тебе тогда твой летающий утюг ZFS, если ты
> боюсь человеку не понимающему элементарных вещей, объяснять сложные бесполезно.Если твоя технология для тебя не работает и время не экономит - и правда бесполезно. Я использую технологии для улучшения эффективности и никогда не пойму п@нт без результата.
>> Да вообще капец, нерешаемая проблема.
> В рамках одной системы - да, часто нерешаемая. Или решение такое что лучше б его не было.Честно говоря не понимаю зачем тебя тогда работодатель держит. У него все настолько ЗБС что ему не нужны те кто проблемы решает, а нужны те кто - создает?
> Правильно, а бутануть нулевую VMдаже на промышленной инфре ни разу не быстро и эффективно.
В отличие от банального docker run или compose up - не требующего ни "конфигов", ни клонирования системы и ожидания когда же она загрузится наконец-то.
> Могу за пару минут еще 1 такой же нарезать - в нем сделать какие-то эксперименты, а если не
> понравитсяа если понравится - пердолиться с тристашешнадцатой виртуалкой пожизненно, да? Ставить обновления, не забывать следить за местом и левой деятельностью внутри и еще мильен с тыщами задач обычного администрирования обычной системы
У меня примерно так живет десяток виндовых - там да, чтобы поэкспериментировать с чем-то, приходится полноценную винду заново заводить, и она остается если эксперимент планируется продолжать. И не то чтобы я этому особо-то рад, но проще чем чистить единственную. А обещаная индусами внутривиндовая псевдоконтейнеризация что-то не взлетело, уже лет пять не слышно о ней.> Видишь как все на самом деле просто? И занимает - несколько минут.
а docker run - секунд. И не требует пердолинга с древовидными историями и клонированиями конфигов (ой, адрес тоже склонировался и доступ пропал)
Я вот без понятия чего и как тут за годы понаконфигурено - и не имею ни малейшего желания это вспоминать. Это делается ОДИН раз а не пердолингом с совершенно ненужной автоматизацией ненужного.
> Если твоя технология для тебя не работает
технология zfs для меня работает. Но она не предназначена для чистки системы от одноразовых экспериментов с новым для меня софтом. А для чего - любителю костылепердолингов я пожалуй поленюсь объяснять.
> Честно говоря не понимаю зачем тебя тогда работодатель держит.
это не единственное чего ты не понимаешь со своим колхозным подходом. Гонору при этом - как будто ты что-то умеешь.
>А, ну да - скачать и make install.installpkg, alien, tar xf.
>Но извини, не всем нравятся помойки.
Кто-то шелл считает помойкой и выбирает докер. Такое подсознательное доверие к доброму дяденьке вендору.
>и еще поправить систему сборки (неизвестно заранее какую и точно вот не configure.in) где она гвоздем прибита. И потом обнаружить что нет, не угадал - все же нужна другая.
У тебя там сверху был пакетный менеджер, а сейчас кастомная система сборки на ту самую версию? В показаниях путаешься.
>>А, ну да - скачать и make install.
> installpkg, alien, tar xf.installpkg опять поставит то что уже есть в твоем дистре. А нужна другая версия. И не поверх старой чтоб не сломать систему.
Остальное это уже просто смешно.Скажи, ты что-нибудь кроме браузера в дуалбутике с виндочкой вообще в линуксе осилил?
> Кто-то шелл считает помойкой и выбирает докер. Такое подсознательное доверие к доброму
> дяденьке вендору.пошли разговоры о важном...
> У тебя там сверху был пакетный менеджер, а сейчас кастомная система сборки
Еще раз, медленно: иногда бывает нужно не то что тебе ставит пакетный менеджер, а то чего в нем либо нет либо не той версии. Если бы хоть что-то кроме браузера в своей трашвари запускал хоть иногда - ты бы это хорошо понимал, потому что для нее нет миллиона ppaшечек и obs'ных репо. (впрочем, надо быть очень смелым и отважным чтоб на рабочей системе оттуда что попало запускать)
У меня в хоум проекте сейчас ~20 контейнеров. Ты предлагаешь городить 20 виртуалок с огромным оверхедом по cpu/ram/hdd? Экономия вообще не 3 цента, с виртуалками цена этого проекта вырастет в разы.
И во-первых, cgroups вполне себе изолируют, во-вторых, контейнеры во многом про удобную оркестрацию, масштабирование, доставку-обновление.
обновись на четвертую версию. Эта несет х-ню.(нет никакого оверхеда по cpu (обожежемой!) ram и hdd. Есть даже выигрыш за счет использования прямого маппинга блоков а не этажерки layered fs еще и написанной левой задней ногой (сколько там уже - третья попытка все переписать заново и опять фэйл - ну не умеют игогошники в ядро)
> И во-первых, cgroups вполне себе изолируют
а теперь перечитаем новость... изолировали-изолировали да не выизолировали. И так с дыркером каждый раз. Отдельно доставляет коллекция уязвимостей вида "рут в контейнере ненастоящий, но ой..."
> оркестрацию, масштабирование, доставку-обновление.
то есть набор бессмысленных баззвордов.
А на деле имеем просто отдельную операционную систему в контейнере, только без обновлений и отслеживания уязвимостей.
> Есть даже выигрыш за счетахаха
> а теперь перечитаем новость... изолировали-изолировали да не выизолировали. И так с дыркером каждый раз. Отдельно доставляет коллекция уязвимостей вида "рут в контейнере ненастоящий, но ой..."
ну да, багов с выходом из виртуального окружения не бывает, гипервизоры они на святом духе работают и написаны не на дырявой Сишечке
> то есть набор бессмысленных баззвордов.
базвордов для кого? это реальность более-менее сложных проектов
> ну да, багов с выходом из виртуального окружения не бывает, гипервизоры они
> на святом духе работают и написаны не на дырявой Сишечкеэтот ии зациклился, несите нового.
Тебя только что мордочкой в лужу ткнули с твоей недырявой игогошечкой. Причем не требующей в полнолуние на ивана купалу как только расцветет папоротник принести в жертву двухголового белого козла, как обычно устроены "выходы из виртуального окружения", а любой васян справится.
>> ну да, багов с выходом из виртуального окружения не бывает, гипервизоры они
>> на святом духе работают и написаны не на дырявой Сишечке
> этот ии зациклился, несите нового.Ты что, только ща просек что так можно было? Берешь 2 ботов, отправляешь их чатиться друг с другом. В какой-то момент владелец ботов начинает замечать что с этим была какая-то подстава... :)
> с огромным оверхедом по cpu/ram/Этот Огромный Оверхед - сейчас с вами в одной комнате?
> У меня в хоум проекте сейчас ~20 контейнеров
Кто в армии служил - в цирке не смеётся.
> контейнеры во многом про удобную оркестрацию, масштабирование, доставку-обновление
Вас покусал менеджер. Если прививку быстро не сделаете, то будет слишком поздно.
возвращайся как закончишь настраивать свой lamp-wordpress-php бложик
а у меня 16 виртуалок под VMWare, у меня вопрос, у тебя все 20 контейнеров одновременно запущены?допустим да, но я не верю в такие сценарии для хоум проекта )))
а если ты собрался эмулировать жесткий прод, то врядли тебе нужно всего 3гб оперативкии какой там оверхед? запущенный роки линух 9.3 жрет 261MB памяти (без декстопа)
т.е. таких 20 виртуалок + хост система спокойно уместятся на 8 гигов, а у меня нет машин с рамом < 32 GB
я конечно согласен, что в целом сама идея чуть менее требовательна к ресурсам, но разница настолько минимальна, а возможности настолько разительно отличаются не пользу контейнеров, что я не вижу смысла их ПОВСЕМЕСТНОГО использования, только для очень специфических задач
давай представим ситуацию, как ты собираешься например обновить контейнер до новой версии, который должен сохранить свое состояние? ну например базу данных? если мы говорим о виртуалке, то схема будет та же что в проде на дедикейтед сервере, а что с контейнером?
> а у меня 16 виртуалок под VMWare, у меня вопрос, у тебя все 20 контейнеров одновременно запущены допустим да, но я не верю в такие сценарии для хоум проекта )))да, запущено постоянно: тг бот, реакт приложение, рест апи, rabbitmq, redis, etc. Страничный наколенный питон скрипт вышел из под контроля и вырос за пол года
> обновить контейнер до новой версии, который должен сохранить свое состояние? ну например базу данных?
volumes для хранения данных.
Просто меняешь версию контейнера условной бд в compose-файле, делаешь docker compose pull && docker compose up. Скачивается новый образ и бд перезапускается, downtime пара секунд.> запущенный роки линух 9.3 жрет 261MB памяти (без декстопа)
Ну т.е. на 20 контейнов/вм это почти 5ГБ только на виртуализацию без приложений.
> не вижу смысла их ПОВСЕМЕСТНОГО использования, только для очень специфических задач
мне наоборот непонятно зачем использовать вм если внутри не винда или еще что-то экзотическое. Большую часть задач можно решить изоляцией и контейнерами, они ничего не стоят совсем. Вм для запуска приложений-сервисов - оверкилл имхо.
Если в приоритете безопасность, то намного предпочтительнее выглядит виртуализация, особенно написанная не для административных задач, а для решения вопросов изоляции: https://muen.sk/
чтобы не строчить полотна, спрошу тогда всего один вопрос> Просто меняешь версию контейнера условной бд в compose-файле, делаешь docker compose pull && docker compose up.
ты вот это вот потащишь в продакшен?
> ты вот это вот потащишь в продакшен?конечно нет, достаточно разок задуматься как он 20 контейнерам будет вручную раздавать ip адреса и прописывать внутри каждого всех остальных. И так каждый раз, потому что понадобится больше одного инстанса.
Он потащит в k8s где есть autodiscovery с автоматическим масштабированием одинаковых кубиков если оно надо.
Компостер - это для домашних силосных куч.
> Компостер - это для домашних силосных куч.Вроде ясно написал, что это хоум проект. В проде это будет либо сварм, либо k8s/k3s (если проект не сдохнет).
Контейнерам не надо раздавать ip адреса вручную, в рамках одно сети они видят друг друга по именам из коробки.
В swarm режиме между нодами автоматом поднимается L2 оверлей сеть, контейнеры опять же прозрачно видят друг друга.У тебя очень поверхностное понимание как всё это работает судя по комментариям.
> У тебя очень поверхностное пониманиедорогуша, я не для тебя писал, а для человека искренне не понимавшего что с виртуалочками так просто у него не выйдет.
Впрочем, с другой стороны - у меня виртуалка была бы наверное ровно одна, и на ней крутились бы в рамках операционной системы обычные сервисы, так что этих проблем бы и не возникло. С обновлениями безопасности, с контролем что и как там делается, а не нате-на-лопате на от...сь. Ну да, версии всего были бы не только что из под хвоста, но мне и не нать.
Собственно, мои петпроекты примерно так и были устроены. Если еще я раскошелюсь на отдельную виртуалку, а не всуну пятый проект рядом с четвертым. Дыркер там без надобности покамест.
> ты вот это вот потащишь в продакшен?а ты виртуалки каким-то волшебным способом обновляешь или dnf update && reboot? в чем принципиальная разница кроме перезапуска одного приложения вместо целой ОС.
> а ты виртуалки каким-то волшебным способом обновляешь или dnf update && reboot?
> в чем принципиальная разница кроме перезапуска одного приложения вместо целой ОС.вообще-то в том что ос во-первых перезапускать при любом обновлении не нужно, во-вторых у тебя в дыркере нет никаких апдейтов. Когда ты проснешься и заметишь что там внутри очередной log4j давно протух и червяки завелись - уже и хоронить будет нечего.
У тебя какие странные представления о контейнерах. Внутри обычный юзерспейс centos/ubuntu/alpine.., все компоненты обновляются ровно так же как в твоей ВМ.
Уровень компетенций понятен.
Угу. В контейнере. Обновляются."уровень (твоих) компетенций" - паняааатен.
>все компоненты обновляются ровно так же как в твоей ВМ.Шо, демон по крону внутри 20 контейнеров запускается по расписанию и обновляет контейнер аки барон Мюнхгаузен вытаскивал сам себя за волосы из болота?
Граждане с понятным уровнем компетенций, только тсссс...
Если тебе очень надо по крону - запихни в крон build && pull && up
У местных реально какие-то мистические представления о контейнерах.
>Если тебе очень надо по крону - запихни в крон build && pull && upХорошо. Где будет располагаться крон? Хорошо ли крону общаться с докером? Каким образом build автоматически обновит все зависимости?
> Хорошо. Где будет располагаться крон? Хорошо ли крону общаться с докером? Каким образом build автоматически обновит все зависимости?Друг, у тебя вопросы уровня "знаю про докер только название". Почитай хотя бы базовую информацию.
Т.е. ты ушёл от ответа.
> Если тебе очень надо по крону - запихни в крон build &&
> pull && up
> У местных реально какие-то мистические представления о контейнерах.т.е. крон хост системы?
а если контейнер еще Васян не обновил и там протухший log4j
кстати конкретно с этим его коментом я полностью согласен, чел слишком кипишной но иногда дело говорит
В живых контейнерах ничего не обновляют (хотя это возможно), они stateless.
Обычно билдятся образы на основе каких-то веток git твоего ПО и заливаются в docker registry (локальный или докер хаб). Это может происходить автоматически при пуше в мастер, по расписанию, по триггерам и т.д. И так же автоматом/полуавтоматом/по запросу эти образы выкатываться в прод или тестинг среду.Если у тебя какой-то вырожденный случай с условным nginx+index.html - можешь в докер файле указать тэг latest для образа и pull&&up-апать его в кроне хост системы. Когда в registry появится новая версия образа, она скачается и приложение перезапустится. Так не делают, но если хочется - то можно.
> в кроне хост системыНу то есть пшик.
>Когда в registry появитсяЕсли.
> Если.Тут самое главное не раскрыто - она появиться-то появится (если... ну если использовать только моднявые штуки, к примеру - вон у местной чатгопоты только они).
Только там - новая версия васян-приложения. Пусть того же nginx.А openssl - уж какая была, на момент срабатывания так любимого недоделанными пайплайна. И если в ней слуцилась ачередная heartbleed - никто тебе не гарантирует что новая версия _nginx_ от нее свободна. Это новая версия - nginx, и она не будет пересобираться просто потому что в этажерке дыркеров какой-то нижний кирпичик тоже поменяли.
Еще смешнее если тебе как раз новая и не подходит, нужна вот эта конкретная (такое - бывает, особенно с софтом чуть посложнее nginx). А старой нельзя пользоваться, она сама-то ок, но на базе ОС с дырой.
>>все компоненты обновляются ровно так же как в твоей ВМ.
> Шо, демон по крону внутри 20 контейнеров запускается по расписанию и обновляетэто кстати отдельный эпик. Когда мне понадобилось (нет, не обновляться) - я прочитал на стековерфлове десяток ответов "экспертов" местного уровня почему нет-ниможитбыть-инибудит.
Теперь у меня таки да - vixie cron внутридокерный (да, _правильно_ внутридокерный - с pid1, логом в stdout и прочими положенными _правильному_ контейнеру фичами, а не "операционная система в контейнере только вот с системдрянью не задалось что-то") - но вы не найдете его на докершитхабе.
>но вы не найдете его на докершитхабеВообще, есть.
https://hub.docker.com/layers/redmatter/cron/latest/images/s...
https://hub.docker.com/layers/gagara/cron/latest/images/sha2...
>Ну т.е. на 20 контейнов/вм это почти 5ГБ только на виртуализацию без приложений.А прикинь, что будет, если весь этот оверхед из копий glibc убрать.
>>Ну т.е. на 20 контейнов/вм это почти 5ГБ только на виртуализацию без приложений.
> А прикинь, что будет, если весь этот оверхед из копий glibc убрать.у него - ниче работать не будит, потому что это не копии а в каждом своя аналогов-не-имеющая версия, и только с ней кое-как работает.
А если это не так?
> А если это не так?чисто статистически невозможно. 20 контейнеров собранных 20 разными васянами - ну никак не могут оказаться на одинаковых версиях чего бы то ни было.
>тг бот, реакт приложение, рест апи, rabbitmq, redis, etcИ всё это для домашнего проекта, в котором хватило бы наколенного IPC на сокетах и нормальной базы данных, если вообще там транзакции нужны.
99% там хватило бы чрута.
И то, если хардкодить пути.
> И всё это для домашнего проекта, в котором хватило бы наколенного IPC на сокетах и нормальной базы данных, если вообще там транзакции нужны.Домашний с прицелом на монетизацию и масштабирование. Очередь сообщений нужна.
Ну то есть нормальный IPC и БД не масштабируются?
> Ну то есть нормальный IPC и БД не масштабируются?с IPC ты предлагаешь самому реализовывать обработку всего жизненного цикла сообщений: доставки/недоставки/возвращения в очередь в случае проблем/сохранения/восстановления и т.п.? Что-то мне это не интересно.
База есть - postrges, redis для кэша.
>обработку всего жизненного цикла сообщенийНу надо же, оказывается, распределённые транзакции - это сложно. А мы не знали.
>Что-то мне это не интересно.
Интереснее заявить, что распределённые транзакции у тебя целиком и полностью решаются очередью и каждый раз эту очередь подтирать-подмазывать, когда прорвёт. Или вообще спихнуть на девопса.
Особо порадовали три вещи рядом:
- хоум-проект
- 20 контейнеров
- оркестрацию, масштабирование, доставку-обновлениеРаскрою два секрета.
Если тебе на хоум-проект надо 20 контейнеров - всё очень плохо.
Если тебе на 20 контейнеров надо оркестрацию, масштабирование, доставку-обновление - всё тоже очень плохо.
> Если тебе на хоум-проект надо 20 контейнеров - всё очень плохо.не, ну если на каждый пихоноскрипт по контейнеру, а на некоторые еще и по два - то так и будет.
Реакт приложению у него отдельно, а рест-нескучноапи к нему - отдельно.
И конечно же рэббиты с редисами вперемешку (очень нужно и просто необходимо для петпроекта)> Если тебе на 20 контейнеров надо оркестрацию, масштабирование, доставку-обновление - всё
> тоже очень плохо.если настоящей чатгопоте (даже 4) поручить разрабатывать за тебя петпрожект - оно вот что-то такое наверное и наразрабатывает. Работать все равно не будет, но можно окружающих потчевать сказками про "обновления в контейнерах", всех двадцати. ("На самом деле, конечно же, никто и не думал там ничего обновлять!")
Примерно так :D
Потому что в таких вариациях обновишь один - сломаются 19.Ну и ещё да, надо же чем-то заниматься, а тут 20 контейнеров от васянов развёрнуты за секунду, потом можно потратить на оркестрацию-развёртывание втрое больше, чем было бы руками. Тоже тема. Главное нигде ничего не менять.
> Главное нигде ничего не
> менять.Не, ну чего это не менять-то?! Вон, новая :latest ! Срочна всем обновлятцо!
(поскольку она from: SRACH и copy 100gb.vasyan-shit.tar / - внутри бубунточка версии аж 14 - зато приложеиЮ самое распоследнее, пользуйтесь)
> Раскрою два секрета.Я как бы в курсе, что такое контейнер (в отличие от тебя и нах/пох), что такое namespace и что контейнеров может быть сколько мне надо без особых накладных расходов. Контейнер-приложение ничем не отличается от просто приложения.
Что не так с потребностью в масштабировании и доставке? Ты же ничего не знаешь ни про проект, ни про мои цели, просто пер*шь в лужу и портишь воздух.
> Контейнер-приложение ничем не отличается от просто приложения.Отличается. Как минимум - признак криворукости и требований к фазе луны.
Единственное, про что реально контейнер - это про экономию памяти.
Всё остальное вполне себе доставляется и масштабируется и без них.
>У меня в хоум проекте сейчас ~20 контейнеров.Резюме набиваешь?
>>У меня в хоум проекте сейчас ~20 контейнеров.
> Резюме набиваешь?в девляпсы все равно не пройдет - там надо хотя бы первые 20000
В менеджеры вот может.
>кому нужны эти контейнеры?Тем кто разрабатывает маштабируемое и постоянно обновляемое ПО.
>чтобы что?Чтобы была быстрая и воспроизводимая доставка, маштабирование.
>сэкономить 3 цента на виртуализации?Как будешь в свои безопасные виртуалки монтировать файловые системы? Через 9p? Расскажи о своём успешном практическом опыте. Какова производительность postgres в сравнении с хостовой системой? Сколько там центов, я не расслышал.
>а это что? иллюзия изолированности?Докер вообще не про изоляцию. Он на 100% про доставку.
Если бы докер вместо добавления изоляции чуть чуть бы её портил - им все так же продолжали бы пользоваться. Потому что он реально обеспечивает потребности жизненого цикла ПО и решает бизнесу проблемы.
> маштабируемое и постоянно обновляемое ПОрасскажи мне как ты собрался маСштабировать мультимастер базу данных? мы же говорим про ScaleOut?
> Как будешь в свои безопасные виртуалки монтировать файловые системы? Через 9p? Расскажи о своём успешном практическом опыте. Какова производительность postgres в сравнении с хостовой системой? Сколько там центов, я не расслышал.
Так мне даром не нужен этот цирк, вообще в виртуалку можно прокинуть хоть физический диск.
Речь о том что виртуалка эмулирует окружение дедикейтед сервера.
Если тебе требуется собрать кластер, то только из дедиков, а не порезать 8 физических ядер на 16 HT ядер назвать это унылое говно vCPU и заказать таких 4 штуки по 4 vCPU с шареными ресурсами и построить на них "кластер", клоуны ))))а если захостить эту шляпу где-нибудь на AWS так еще и переплатить от 5 до 20 раз в легкую
> Докер вообще не про изоляцию. Он на 100% про доставку.
нахрен не нужное, автоматизировать доставку в пределах нужных задача можно посредством любого CI солюшена, и докер там не причем
а вот изоляция машин на одном хосте, где по соседству может крутится хрень дяди Васи - это боль любого недедикейтед решения, но смузиебам пофиг, они верят в сказку про золушку и красиво впрягают это бизнесу
> Потому что он реально обеспечивает потребности жизненого цикла ПО и решает бизнесу проблемы.
отличная чушь маркетолога, но не спорю - продается на ура, только не забываем что бум доткомов тоже был фееричным
> маСштабировать мультимастер базу данныхЯ не использую мастер-мастер.
И не понимаю к чему этот вопрос? Кроме разве что для бравирования собственной некомпетентностью и откровенной глупостью.
Если ты хочешь сказать что существует что-то что плохо маштабируется, то от заворачивания в докер оно автоматически не становится менее маштабируемым. И проблемы его маштабирования остаются одинаково сложными и с докером и без него.
Что это по твоему доказывает? Невозможность маcштабирования вообще? Ох уж эти индуктивные выводы.
Если мне потребуется масштабировать бекинг сервисы я воспользуюсь паттерном operator в k8s и если нужно напишу свой CRD и контроллер вокруг маштабируемого ресурса. А что будешь делать для масштабирования ты, мальчик? Мышковозюкать? Такая (твоя) работа сама по себе не масштабируется => ценность тебя как специалиста крайне мала. Вас нужно толпы таких мышковозюкателей, а значит вы просто расходные винтики, резьба сорвалась - на помоечку.
> хоть физический дискМожешь перфокарту воткнуть. Разрешаю.
> какой-то шизоидный бред про какие-то дедики и AWS
> сам придумал - сам самого себя (придуманое) победил
> ???
> ПЕРЕМОГА!Мы живем в on-premise облаке. Ну как "облаке", для его админов это датацентры, отдельные кластера виртуализации, сети, схд. Мы же просто деплоим тераформом и не задумываемся куда оно разворачивается. Не переживай так сильно, маленький, антиаффинити и по хостам и по СХД мы умеем.
> автоматизировать доставку в пределах нужных задача можно посредством любого CI солюшенаМог бы вообще написать: автоматизировать доставку задача автоматизации. Абсолютно то же самое, смысловое наполнение нулевое. (впрочем как и весь твой остальной коммент)
ПыСы: ты очень удивишься когда узнаешь что такое "доставка" в ci/cd.
> какой-то бред про изоляцию машинЗабавно как у психически больных в голове живет одновременно 2 противоположные правильные мысли:
- та бесплатная изоляция которая есть у докера (хоть он и не про изоляцию вовсе) - она очень дырявая, нельзя ей пользоваться.
- все сервисы проекта надо запускать на самом хосте в одном network, pid и т.д. неймспейсах.
---
Твоим клонам ниже мне отвечать лень, сорян. Совершенно не интересно. Ни какой разницы в аргументации. Из пустого в порожнее.
> Тем кто разрабатывает маштабируемое и постоянно обновляемое ПО.Как обходились до того как на нас свалилось это счастье? Не, не в курсе? Мир начался с докера?
> Чтобы была быстрая и воспроизводимая доставка, маштабирование.
Для этого не нужен дыркер. Для этого надо писать масштабирующийся софт.
>>сэкономить 3 цента на виртуализации?
> Как будешь в свои безопасные виртуалки монтировать файловые системы? Через 9p? Расскажиникак не будет монтировать - зачем это делать? В дыркере это делают от безысходности, он же каждый день новый - "масштабируется и обновляется" же ж.
А в вм обновляется только софт, данные где были там и остались.
> о своём успешном практическом опыте. Какова производительность postgres в сравнении с
> хостовой системой? Сколько там центов, я не расслышал.около трех. Это ж опять же не дыркер с его на коленке наг08няканой уже ТРЕТЬЕЙ по счету полуработающей layered fs.
Но если у тебя постгрез упирается в производительность, а ты все еще его держишь в дыркере, а не в отдельной специально для него тюненой виртуалке (или уже даже на bare metal, для постгреза это бывает нужно) - тебе лечиться надо а не в it работать.
И да, он нихрена не "масштабируется" и варианта "насвинячьте мне тут еще десять инстансов постгрезов, у вас же микроархитектура и сплошной k8s" пааачимута не работают. Наверное девляпса надо уволить, оборзел и не работает. Он еще мне вчера, представляешь, заявил, что если выключить его поделку - то что-то там рухнет и восстанавливать будет долго. Это как так? У нас же кластеры-шмастеры и высокораспределенная среда?!
> Докер вообще не про изоляцию. Он на 100% про доставку.
внезапно он именно про изоляцию. Но, увы, изоляцию дерьма. Вот тот самый vasyan.100g.tar неплохо изолирует от соседнего, другого васяна. Но безопасности эта изоляция никому не добавляет.
Доставку, сюрприз, мы умели за двадцать лет до появления дырчатого недоразумения.
Но тогда девелоперов за самовольные нужные-важные апгрейды чего либо из системного софта или ручное ковыряние в системных каталогах - больно п-дили по рукам. И заставляли трудиться в нечеловеческих условиях, когда продукт их творчества должен был работать не только на их личном десктопчике.
Что мешало им "творить" откровенные фекалии. А теперь ничего не мешает, прям с виндочки с wslчиком и творят, наслаждайтесь.
и здесь согласен
Абсолютно таки да.
Дыркер - это про тяпляпство, где софт сделан ногами и дятлы рискуют порушить цивилизацию вот прямо сейчас.
Поэтому такой фанатизм и идёт - просто иначе тяпляперы мгновенно потеряют место под солнцем.
Ну и всё остальное - fuck't.
В нулевых в Gentoo пакетный менеджер мог создавать минимальное окружение необходимое и достаточное для запуска сервиса:
# emerge --configure пакет
Оно создавало chroot с настроеного сервиса и подправляло init скрипт для запуска в chroot.
При обновлении и изменении настроек надо было незабавать дергать:
# emerge --configure пакет
Сегодняшние пионеры функцию configure{} с ебылдов выкинули. Лично поддерживаю ее для себя у некоторых пакетов.В средине нулевых, к chroot прикрепили "изоляцию" ядро запрещало CAP для этого chroot, которые использовались для выхода с изолированого окружения и прочие шалости:
"Chroot hardeninggrsecurity's chroot hardening automatically converts all uses of chroot into real jails with confinement levels equivalent to containers. Processes inside a chroot will not be able to create suid/sgid binaries, see or attack processes outside the chroot jail, mount filesystems, use sensitive capabilities, or modify UNIX domain sockets or shared memory created outside the chroot jail."
https://en.m.wikibooks.org/wiki/Grsecurity/Appendix/Grsecuri...
....CONFIG_GRKERNSEC_CHROOT_FCHDIR=y
If you say Y here, a well-known method of breaking chroots by fchdir'ing to a file descriptor of the chrooting process that points to a directory outside the filesystem will be stopped. If the sysctl option is enabled, a sysctl option with name "chroot_deny_fchdir" is created.
Как выглядит ebuild со старым вариантом configure ?
Не помню уже, Более 20 лет прошло. Надо найти portage-200?.tar.bz2 и посмотреть функцию configure {} например в ебылде для bind."Это другое" *-chroot.sh скрипты для создания chroot и иниты для запуска в chroot: https://wiki.gentoo.org/wiki/Chrooting_proxy_services возможно *-chroot.sh похож на старую функцию configure в ебылдах.
Ишшо pacman есть, который нормальный, а не арчевский.
а в подмане?
Я нашёл уязвимость в Dockerdocker run -v /:/dir1 debian rm -rf /dir1/*