В пакете sudo, применяемом для организации выполнения команд от имени других пользователей, выявлена уязвимость (CVE-2025-32463), позволяющая любому непривилегированному пользователю выполнить код с правами root, даже если пользователь не упомянут в конфигурации sudoers. Проблеме подвержены дистрибутивы, использующие файл конфигурации /etc/nsswitch.conf, например, возможность эксплуатации уязвимости продемонстрирована в Ubuntu 24.04 и Fedora 41...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=63505
04/01/2025: Vulnerability report sent to Todd Miller (Sudo maintainer).07.05.2025 В Ubuntu 25.10 решено задействовать аналог sudo, написанный на Rust https://opennet.ru/63197-ubuntu
В Ubuntu оказывается неспроста начали менять sudo на sudo-rs.
В целом логичный шаг после замены дыряшечных coreutils, но да, забавно.
Мудро то оно может и да, но похоже что этот вид багов вполне можно и на rust допустить
Да, тут никаких переполнений буфера, use-after-free итп нет, ошибка логическая, никакой язык программирования от этого не спасёт
Сишники выдохнули с облегчением: наконец-то уязвимость, которая не вызвана некорректной работой с памятью! И раст объявляется автоматически плохим, потому что "именно от этой уязвимости бы не спас". Вот такой вот полет сишной мысли.
Комментатор на opennet пишет:> Да, тут никаких переполнений буфера, use-after-free итп нет, ошибка логическая, никакой язык программирования от этого не спасёт
и тут же прибегает хрусто-фанатик, жалуйющийся на каких-то сишников, который теперь выдыхают слишком свободно:
> Сишники выдохнули с облегчением: наконец-то уязвимость, которая не вызвана некорректной работой с памятью! И раст объявляется автоматически плохим, потому что "именно от этой уязвимости бы не спас". Вот такой вот полет сишной мысли.
Анон совсем не сектант, видящий везде атаку на своё божество, единственно верный ЯП rust, да... Не сектант!
Растобесие оно такое.
Это платные. У них набор нарративов. Стройность нарратива - не метрика. Количество - метрика.
>Анон совсем не сектант, видящий везде атаку на своё божество, единственно верный ЯП rust, да... Не сектант!Разумеется в мире только два языка c/c++ и rust. Ни ocaml, ни go, ни haskell, ни java, ни кучи других языков попросту не существует. А если Idris или ATS вспомнить, то сишников вообще инфаркт хватит.
>и тут же прибегает хрусто-фанатик, жалуйющийся на каких-то сишников, который теперь выдыхают слишком свободно:Правильно и делает. Поскольку сишник выдыхающий свободно - это сишник, активно препятствующий развитию типизации. Если о том, чтобы использовать беззнаковые числа в качестве указателей плохо, уже даже крестовики начали, то вот идея, что строка не годится для файловых путей и тем более для корней файловой системы - вот тут уже загвоздка.
Вот вам самый простейший пример:
Eio_main.run (fun env -> Eio.Path.read_dir (Eio.Path.(Eio.Stdenv.cwd env / "../")))
Данный код прямо в рантайме проверит, есть ли возможность писать по данному пути, и выкинет ошибку, так как осуществляется выход за границы разрешённой облоасти. Попрошу заметить, что данную проверку с помощью символических ссылок вы не обойдёте. Да, здесь есть куда расти, но кодеры на ocaml уже сделали важнейший шаг вперёд, который сишники не сделали и за полвека - догадались перестать использовать сырые строки. Но сишники хотят плодить баги, ибо у них даже строк до сих пор нет, что уже о специальных типах говорить.
> хрусто-фанатикНе вижу в его словах ничего связанного с хрустом. Он точно фанатик?
Так и есть. Как Сишник, я счастлив.
Здесь использование юниксового легаси говна nsswitch, есть большая вероятность что в новом софте такая дрянь не будет поддерживаться и проблемы не будет.
А что будет вместо?
Очень даже может спасти. Rust прививает хорошие практики программирования. Отсюда и логику проще увидеть. Я бы ещё функциональщину рассмотрел, Haskell там...
С другой стороны, если какой-то класс ошибок полностью предотвращён, остаётся больше времени для поиска и предотвращения ошибок из других классов. Помимо этого наличие встроенного мощного анализатора и прочей инфраструктуры так же помогает в отлавливании ошибок. Даже такие штуки, как единый стиль форматирования кода, вносят свою лепту.Так что при сравнимых трудозатратах, код на Rust будет содержать меньше логических ошибок. Возможно на языках вроде Haskell в этом плане ситуация ещё лучше, там нужно быть аутистом высшего порядка, что в свою очередь является порогом входа. Это работает и в другую сторону. Языки вроде JavaScript в среднем содержат большее число логических ошибок и для подобных языков обязательно нужны средства вроде сборки мусора. Среднее качество этих программистов ниже и вероятность, с которой они начнут портить память, стремится к единице.
> Мудро то оно может и да, но похоже что этот вид багов
> вполне можно и на rust допуститьНе правда, по мнению opennetовцев Rust не умеет динамическую линковку, а тут баг как раз с ней
Шах и мат, эксперты.
> не умеет динамическую линковку
Во-первых, у Rust нет стабильного ABI, что требует при его использовании перекомпиляции всей системы и всех установленных в ней приложений при выходе новой версии компилятора, что на практике не реализуемо. Но C ABI он поддерживает. Само собой, как только начинается C ABI, сразу заканчивается встроенный в Rust механизм безопасной работы с памятью.Во-вторых, даже в случае Rust ABI, в его текущем виде, при динамическом связывании нет поддержки дженериков.
Во-третьих, баг не с динамическим связыванием, а с алгоритмом его использования.
К сожалению, сообщество Rust очень мало уделяет внимание этой проблеме. Пожалуй, только разработчики Rеdox озабочены этой проблемой. В первую очередь Anhad Singh, за что я ему очень благодарен. Но его решение всё же является костылем через C ABI, а не средством, предоставляемым компилятором.
>и всех установленных в ней приложений при выходе новой версии компилятора, что на практике не реализуемо.Более чем реализуемо. Но разумеется не в допотопных арчах и дебианах.
Ну да. Я слышал о гентушниках, пересобиравших мир с LibreOffice, KDE и т.п. по несколько суток. Естественно, обычны были ситуации, когда оно просто так не собиралось. Сколько процентов таких пользователей?И точно знаю, что больше половины населения планеты скачивать по сотне гигабайт кем-то пересобранных всех своих приложений с системой каждые три месяца позволить себе не могут. Это не считая того, что подавляющее большинство поставщиков программного обеспечения, включая компьютерные игры, пересобирать и распространять свои продукты бесплатно не станут. Особенно с учетом того, что переход на новую версию Rust компилятора и stdlib часто приводит к необходимости правки кода.
>Я слышал о гентушникахБинарный кеш изобретён.
>больше половины населения планетыЭто кто?
>скачивать по сотне гигабайт кем-то пересобранных всех своих приложенийДаже если пересобирать буквально весь софт, сотни гигабайт не будет. Посмотрите на размер ISO образов, там даже восьми гигабайт за раз нет.
>с системой каждые три месяца позволить себе не могутДля условной убунты или дебиана, замораживающих версии на весь релиз это вообще никак не повлияет.
>Это не считая того, что подавляющее большинство поставщиков программного обеспечения, включая компьютерные игры, пересобирать и распространять свои продукты бесплатно не станут.nix давным давно изобретён, когда несколько библиотек сосуществуют без ручного вмешательства.
>Особенно с учетом того, что переход на новую версию Rust компилятора и stdlib часто приводит к необходимости правки кода.У раста давным давно изобретены editions. Хватит людей вводить в заблуждение.
Рекомендую, хотя бы изредка смотреть в календарь. 1970-ые давно прошли.
>>Я слышал о гентушниках
> Бинарный кеш изобретён.И чем он поможет, если необходима полная перекомпиляция?
>>больше половины населения планеты
> Это кто?Это те ~5 миллиардов населения планеты, которые не имеют доступа к широкополосному интернету. Поинтересуйтесь тарифами на мобильный интернет хотя бы в РФ. А к проводному интернету в РФ имеют доступ менее 40 миллионов человек. Тоже явно меньше половины населения страны.
>>скачивать по сотне гигабайт кем-то пересобранных всех своих приложений
> Даже если пересобирать буквально весь софт, сотни гигабайт не будет. Посмотрите на
> размер ISO образов, там даже восьми гигабайт за раз нет.Вы пользуетесь исключительно голой системой? У той же Ubuntu 24.04 размер репозитория больше 2ТБ. Со сторонними репозиториями будет на порядок больше.
А на NAS у сына только дистрибутивы игр уже в 4 ТБ не помещаются.
Особенно интересно узнать, что Вы предлагаете делать с программными продуктами, которые необходимы в работе, но уже давно не поддерживаются по причине прекращения деятельности их производителя? Закупать новый МРТ за 100 миллионов рублей только потому, что в какой-то системной библиотеке обнаружена уязвимость, а поставщик свой софт уже пару лет как не обновляет?
Ваш призыв к столь глобальному вендор-локу уж очень сильно противоречит идеологии opennet.> nix давным давно изобретён, когда несколько библиотек сосуществуют без ручного вмешательства.
Исключительно благодаря стандартизированному C ABI. Вы вообще понимаете разницу, между сменой версии библиотеки и глобальному изменению ABI во всей системе и всех приложениях?
>>Особенно с учетом того, что переход на новую версию Rust компилятора и stdlib часто приводит к необходимости правки кода.
> У раста давным давно изобретены editions. Хватит людей вводить в заблуждение.Редакции редакциями, а крейты - крейтами. Ошибки и уязвимости даже в stdlib исправляются исключительно в новых версиях. Не говоря уже о прочих крейтах.
Вы вообще на Rust ведете разработку или только теоритезируете? Мне, как минимум, дважды в год приходится вносить правки в свой код из-за необходимости переходить на новые версии крейтов.
Последний сюрприз был в Rust 1.85, когда core::ffi::c_char из i8 превратился в u8.
>И чем он поможет, если необходима полная перекомпиляция?Это может быть проблемой только для тех, кто поддерживает бинарный кеш, но не для конечных пользователей.
>Это те ~5 миллиардов населения планеты, которые не имеют доступа к широкополосному интернету.Теперь осталось как-то выяснить, у кого из них есть компьютеры, при чём не на 98 винде.
>Поинтересуйтесь тарифами на мобильный интернет хотя бы в РФ.Тарифы в РФ довольно щадящие, в некоторых обласях сразу 100 Гб за месяц можно купить, без дополнительных пакетов. Так что ищите другие страны.
>А к проводному интернету в РФ имеют доступ менее 40 миллионов человек. Тоже явно меньше половины населения страны.Опять же, нужно узнать, скольки из них вообще используют компьютеры. Ибо у одних компьютера не будет, будет только смартфон, а у кого-то и смартфона не будет.
>Вы пользуетесь исключительно голой системой? У той же Ubuntu 24.04 размер репозитория больше 2ТБ. Со сторонними репозиториями будет на порядок больше.Я сомневаюсь, что легко будет найти человека, который будет использовать все эти 2 Тб за раз. Тем более, что в репозитории будет куча софта на других языках, типа python, java, и так далее.
>Особенно интересно узнать, что Вы предлагаете делать с программными продуктами, которые необходимы в работе, но уже давно не поддерживаются по причине прекращения деятельности их производителя? Закупать новый МРТ за 100 миллионов рублей только потому, что в какой-то системной библиотеке обнаружена уязвимость, а поставщик свой софт уже пару лет как не обновляет?Ну а сейчас что вы делаете? Я крайне сомневаюсь, что кто-то сейчас будет трогать мрт лишний раз, так как денег за это не платят. Тем более, что самостоятельное вмешательство в код для мрт может как окирпичить сам аппарат, так и нарушить целостность кода, за которой следит защита от пиратов. Много вы условный фотошоп или идею патчите?
>Ваш призыв к столь глобальному вендор-локу уж очень сильно противоречит идеологии opennet.Хватит придумывать вендорлок там, где его нет.
>Исключительно благодаря стандартизированному C ABI.Си ABI здесь совершенно не причём. Nix умеет собирать воспроизводимые окружения так, чтобы несколько библиотек с разными ABI могли сосуществовать вместе, на одной машине. Там требования к коду минимальны, типа номеров системных вызовов, abi условного xorg-а. У вас просто будет столько версий библиотек, сколько нужно, чтобы запустить всё это дело.
>между сменой версии библиотеки и глобальному изменению ABI во всей системе и всех приложениях?Если api поменять, то abi тоже неизбежно изменится. Можете даже не надеяться, что если код под qt4, не собирающийся под qt6, сохранит abi.
>Мне, как минимум, дважды в год приходится вносить правки в свой код из-за необходимости переходить на новые версии крейтов.Крейты не зависят так сильно от версии компилятора. Можно обновить версию компилятора, не меняя трейты, можно обновить трейты, не меняя версию компилятора. Всегда есть какой-то минимальный диапазон, в пределах которого можно пользоваться двумя разными версиями компилятора.
> Я сомневаюсь, что легко будет найти человека, который будет использовать все эти 2 Тб за раз.Спасибо, что доказали, что Вы демогог или слишком глупы, что отличить 5% от 100%:
>>>скачивать по сотне гигабайт кем-то пересобранных всех своих приложений
На том дискуссию можно считать завершённой )
> Во-вторых, даже в случае Rust ABI, в его текущем виде, при динамическом связывании нет поддержки дженериков.И как ты это видишь?
Есть библиотека:
pub fn print_smth<T: Display>(value: &T) {
println!("{value}");
}
pub fn init() {
print_smth("The library has been initialized");
}Библиотеку собрали, print_smth для нужд библиотеки мономорфизировало для &str
Внешний пользователь хочет передать в этот метод u32
Вопрос - откуда в этой библиотеке возьмётся мономорфизация print_smth для u32?
> И как ты это видишь?Для начала нужна хотя бы поддержка RTTI в ABI. И речь далеко не только о POD типах.
В Rust сейчас нет способа указать, для каких типов должен быть скомпилирован код в динамически загружаемой библиотеке. И нет встроенных средств рефлексии, чтобы во время выполнения выяснить, какие типы поддерживаются в динамически загружаемой библиотеки. Крейт rtti в данном случае лишь костыль.
> Для начала нужна хотя бы поддержка RTTI в ABI. И речь далеко
> не только о POD типах.Ну допустим для динамической диспатчеризации добавят RTTI (Хотя для Rust это и не нужно, у тебя же нет иеархии классов)
Что делать со статической? И какое это отношение имеет к генерик типам (шаблонам в случае плюсов)?
> Хотя для Rust это и не нужно, у тебя же нет иеархии классовНо есть виртуальные таблицы и дженерики. Отсюда и этот костыль https://docs.rs/rtti/latest/rtti/
Или этот https://docs.rs/vtable/latest/vtable/> какое это отношение имеет к генерик типам
Читйте внимательней:
>> для каких типов должен быть скомпилирован код в динамически загружаемой библиотеке.
>> И нет встроенных средств рефлексии, чтобы во время выполнения выяснить,
>> какие типы поддерживаются в динамически загружаемой библиотеки.В рамках идеологии Rust вполне реализуема поддержка дженериков в динамически загружаемой библиотеке, пусть и с ограничением не только на реализованные трейты, но и на типы, для которых будет скомпилирован код. Причем, с развитым RTTI можно поддерживать не только POD типы, но и структуры и перечисления, налагая определенные требования на присутствие только некоторых полей или типов в них.
Этой истории не первый год. Например, два года назад определенные попытки предпринимались joshtriplett в виде эксперимента с crabi https://github.com/rust-lang/rfcs/pull/3470
Но воз и ныне там (> шаблонам в случае плюсов
Шаблоны в C++ превращаются в боль на крупных проектах, когда малейшая правка требует многочасовой перекомпиляции всего кода. Поэтому я веду речь не о шаблонах, а об аналоге Itanium ABI для Rust.
> Но есть виртуальные таблицы и дженерики.Но ты же понимаешь что эти вещи ортогональны?
Там где у тебя generic типы - там у тебя статическая диспатчеризация
fn print_smth<T: Display>(v: T) {...}
fn print_smth(v: impl Display) {...}
Оба случая идентичны, и тут у тебя в рантайме никогда не будет vtable
В плюсах аналогом будет
template<typename T>
void print_smth(const T& v) {...}Никакой RTTI тебе тут не поможет, шаблон должен инстанцироваться в каждой библиотеке что хочет вызывать эту функцию
fn print_smth(v: &dyn Display) {...}
А вот тут уже будет vtable, и в плюсах код выглядит так:
interface Display {...}
void print_smth(Display& v) {...}
Тут уже действительно будет RTTI, и плюсовое ABI (которого, напоминаю, по стандарту не существует) это описывает, однако это не то как пишется большая часть Rust библиотек, в Rust таки почти везде применяется статическая диспатчеризация.
В плюсах у тебя конечно vtable всегда с собой есть, потому что не факт что девиртуализация в оптимизаторе gcc/llvm сработает, однако в Rust это не так, и vtable есть только тогда, когда она используется
Более того, в Rust у тебя инстансы структур с собой vtable не имеют, когда требуется vtable - оно передаётся вместе со структурой в fat pointerе
> Этой истории не первый год. Например, два года назад определенные попытки предпринимались joshtriplett в виде эксперимента с crabi https://github.com/rust-lang/rfcs/pull/3470
> Но воз и ныне там (Только это совсем не то, про что ты говоришь
Оно не избавляет от необходимости явно описывать внешние функции, потенциальное crABI не будет дефолтом
Это лишь идея про то, что основные структуры в языке должны иметь какое-то стандартное представление, чтобы их можно было передавать через FFI boundary не конвертируя туда-сюдаОднако это всё рушится о то, что Rust намеренно не стабилизирует такие вещи, чтобы можно было всё оптимизировать, и это самое crABI всё равно требует данные туда-сюда копировать, чтобы структуры были совместимы с вещами вроде niche optimizations, и это "ABI" по итогу будет лишь удобным способом такие конверсии автоматизировать.
И зачем оно в таком случае нужно, если есть условный bindgen, который уже умеет это автоматизировать, но при этом не требует создавать некий crABI и поддерживать его на уровне языка?
Тут программист не в звездочках заблудился а в слешах. Это пофиксят в NGR (NextGenRust), пока же раст как обычно бессилен. Программист победил.
А как это поможет если sudo-rs такой же комбайн как sudo?
Но безопасТный комбайн.
Все в порядке, он не такой же.
Авторы заявляли что конечной их целью является поддержка дефолтного конфига популярных дистрибутивов.А там root = (ALL) ALL
и больше ничего нет.
Ну, разработчики doas не смогли и этого...
А они и не спят!(и да, удивительно уродский синтаксис, при том что синтаксис конфига это единственное достоинство как раз sudo, и даже описание его есть в виде, готовом к скармливанию в транслятор. Но нет, надо было вот то череззадничное нечитаемое в принципе притащить.)
> А они и не спят!
> (и да, удивительно уродский синтаксис, при том что синтаксис конфига это единственное
> достоинство как раз sudo, и даже описание его есть в виде,
> готовом к скармливанию в транслятор. Но нет, надо было вот то
> череззадничное нечитаемое в принципе притащить.)Не, ну если (В след за авторами) предполагать, что правил у тебя будет - ну вот ДВА (И те - дефолтные) - то жить наверное можно; а вот портянка этого вперемешку - боль, конечно. Еще и нет возможности из conf.d правила заинклудить ансибляторам на радость, ага.
Хотя - кто крупный haproxy крутил - такого не боится ).
Одно с другим не связано. Здесь логическая ошибка. Rust никаким образом здесь не помог бы.
Этот баг вызван не ошибкой в работе с памятью. Тут rust никак не помог бы.
"Безопасная работа с памятью" как-то обезопасит от детских ошибок с выбором не того файла?
> В Ubuntu оказывается неспроста начали менять sudo на sudoТут раст не причём. Вообще не по делу комментарий
Я начинаю видеть некоторую мудрость людей из OpenBSD, породивших doas.
Да, doas рулит, а для рядовых задач и вовсе хватает su.
> Да, doas рулит, а для рядовых задач и вовсе хватает su.Как бы это сказать... su _принципиально_ не подходит для задач, отличных от "однопользовательских локалхостов" по причине невозможности гранулярного управления полномочиями и отсутствию какого-либо вменяемого аудита.
doas в этом плане несколько лучше - но малопригодный для автоматизированной работы синтаксис или хотя бы отсутствие возможности заинклудить свои правила из отдельного файлика в conf.d изрядно портят впечатления.
Их мудрость в том, что вышеупомянутый косяк sudo изначально в опене не работает в виду отсутствия условий для этого :)
Это настолько феерично, что я никогда в жизни не поверю, что это не закладка.
Поражает воображение, насколько ВСЁ дырявое..
Так что согласен про закладки. Иначе, нужно быть полными лохами, чтобы за столько десятилетий не закрыть их все, раз уж пишешь этот софт с умным.
Не факт. Это скорее следствие так называемой "bazaar" методологии разработки. Вместо того, чтобы пользоваться системными либами, оно само тупо лезет в этот файл. А поскольку это, как водится, делается "напролом" - вот и косяки прут косяками.
И ещё отсутствия достаточного количества юнит-тестов (не тестов всей программы). На языках типа C/C++ это делается сложнее чем языках без управления памяти. А значит часто забивают.
> На языках типа C/C++ это делается сложнее чем языках без управления памяти.Абсолютная глупость.
Ни в коем случае, сэр.
Закладка, внедренная под предлогом новой фичи.
Скажу наивность - microsoft давно владеет sudo. Нынешний разработчик, Todd C Miller, является иноагентом ^W^W давно понял в чем суть опенсорца и получает финансирование от мелкомягких. Причем опенбсдшники это давно поняли и выкатили doas. Тут закладка, тут не ошибка.
> Скажу наивность - microsoft давно владеет sudo. Нынешний разработчик, Todd C Miller,
> является иноагентом ^W^W давно понял в чем суть опенсорца и получает
> финансирование от мелкомягких. Причем опенбсдшники это давно поняли и выкатили doas.
> Тут закладка, тут не ошибка."I also work on OpenBSD"(С), ога. Ох, это другое!
Уязвимость - жуть.Только что проверил полностью пропатченную Fedora 42:
./pown.sh
woot!
[root@zen /]# id
uid=0(root) gid=0(root) groups=0(root),39(video),63(audio),1010(testuser) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023Жаль, нет такой для Android.
Любая админ утилита вообще это шкатулка-разгадайка. Можно напхать туда "ребусов" как такой условный пароль до рут данной утилиты и эксплуатировать для себя.
>./pown.sh
>woot!
>[root@zen /]# idЯ так понимаю, что root создается внутри чрута woot, в котором (сюрприз!) необходимо иметь права записи и удаления. Т.е. для поднятия привелегий требуется уже иметь их.
Как обычно очередной академический "сферический конь".
"Но в песне не понял ты, увы, ни...чего"(С)
А если все-таки попробовать включить голову и подумать (с)
"... да и было ли ему чем?"(С)
chroot - это всё равно, что папку через cd сменить, он рута не изолирует от ресурсов системы от слова совсем. После чрута в пустую папку (только с нужными файликами для взлома жепы), делаете mount -t devfs devfs /dev и получаете доступ ко всем девайсам подключенным к системе.
>После чрута в пустую папку ... делаете mountТы хоть понимаешь, что такое chroot? Откуда в пустой папке возмется mount?
В школу, за парту.
>>После чрута в пустую папку ... делаете mount
> Ты хоть понимаешь, что такое chroot? Откуда в пустой папке возмется mount?ну так положи его туда!
За чем дело стало?
Сам то пробовал этот скрипт?
Я вот попробовал, и у меня корневая директория доступна под рутом
Потому что chroot не сработал, но root выполнил зловред из папки доступной для записи пользователю.
И к чему это? Мне пофиг как сработает, рут появился в руте. Изначально вопрос был chroot, который я вообще не заметил в скрипте
> И к чему это? Мне пофиг как сработает, рут появился в руте.
> Изначально вопрос был chroot, который я вообще не заметил в скрипте"Молчи, смерд! Мы обсуждаем идеального, метафизического таракана!"(С)
Коллеги, так сколько там лап у животного? Аристотель писал, что 8...
нет там chroot, ты понял неправильно.
Сколько не обновляйся все равно пользователя, извиняюсь за выражение, отымеют
по такой логике и заборы не нужны, их же перелезут кому припрёт
> позволяющая любому непривилегированному пользователю выполнить код с правами rootТы должен был бороться со злом, а не примкнуть к нему!.. (c)
Впрочем ничего нового)
В ляликсе уже сколько утилит и разных способов, а вот и ныне тем.
Есть примеры, где через подобные "уязвимости" своровали данные/навредили инфраструктуре.Не в сферическом вакууме это все не работает. Т.е. в реальном мире никто не будет локально прописывать ребусы, чтобы завладеть своим же серваком))
Это все уже давно устарело.. а данные копятся уже в облачных хранилищах, где манипуляции с вашими данными никак не зависят. есть ли какой то эксплоит или нет.
Т.е. те же облачные сервисы это удаленная ОС. А на локальный корень Вашего ПК им абсолютно равнодушно.
Ну вот есть такой kernel.org, ага. Там с годик назад выяснилось, что вот на Самом Главном Сервере через интерактивный ssh тусовалось 100500 дiдов и у пары из них вот ключики того-с. Утекали-с.
если ключи были не беспарольные и пароль не похож на словарный, то можно плюнуть.
> если ключи были не беспарольные и пароль не похож на словарный, то
> можно плюнуть.https://www.opennet.dev/opennews/art.shtml?num=61186
"И так сойдет!"(С)
/etc/os-release:VERSION="24.04.2 LTS (Noble Numbat)"
sudo 1.9.15p5-3ubuntu5.24.04.1 amd64...
sudo: you are not permitted to use the -R option with woot
...сп#здели
Так я не понял, если пользователя упомянуть в sudoers то он и так получает root. А без упоминания sudo, из под этого пользователя, запустить не получится?
Нет. Он может быть упомянут в sudoers для выполнения одной единственной команды, а не для root доступа.
Читайте внимательнее. Это другая уязвимость - заодно исправленная.
А в sudo-rs есть такая уязвимость?
Растовые утилиты никому не интересны.
Там много других - ещё не выявленных. Сложнее компилятор - больше непредсказуемости. Ассемблерный листинг программ, написанных на Rust читать, анализировать, проверять намного сложнее. чем GCC.
Вдобавок, могу привести такой тезис: Зачем Вы показываете мне этот открытый код, если за компилятор стоит непонятный backend?
а как там run0 поживает?
Приближается к run1. А дальше синхронизация с нумерацией версий systemd.
Уже давно везде внедрён. Правда создавали её в первую очередь для systemd-run, а не для прямого использования
Ты что-то путаешь, потому что run0 это как раз обёртка над systemd-run с интеграцией polkit для поднятия привилегий, и она предназначена для людей (она даже tty в красный перекрашивает)
Гремучая смесь.
первую же мою попытку применения run0 dnf на последнем 10 клоне красношляпы пресёк selunux.
> первую же мою попытку применения run0 dnf на последнем 10 клоне красношляпы
> пресёк selunux.Значит политики неправильные. Для run0 даже правила не нужны особо сложные, потому что это не suid, и работает он намного проще с точки зрения безопасности
Ты прав
Я почему-то был абсолютно уверен, что это часть systemd-run
Жесть, детская уязвимость которую может эксплойтнуть любой школьник и поставляется со всеми серверами мира. Расчехлили еще один бэкдор красношляпы.
Это с какими "всеми" ? В дебиане такого нет ! Да и во фряхе тожеж.
Супергерой,спасающий мир от свежего софта, опять успел вовремя?(в целом, конечно, для sudo НУЖЕН такой супергерой)
Во фре была похожая уязвимость лет 10 назад в ftpd.
Да уж знатный фейл. Запускать что-то с привилегиями root не из соответствующих каталогов.
Где были эти "миллионы глаз"?
Не первая ошибка, только... никто от sudo не отказался после прошлой ошибки. Как-то не удобно. До сих пор есть множество сценариев и рекомендаций использовать sudo вместо su. И я пока особо не видел где-то сценариев для настройки/установки чего-либо где бы sudo заменили на run0 или sudo-rs. Впрочем алиас никогда не поздно сделать.
> Не первая ошибка, только... никто от sudo не отказался после прошлой ошибки.Ну я начал планомерно выпиливать после sudoedit.
К сожалению, на мультиюзерных хостах от него не получится отказаться. А площадь атаки уменьшить стоит. Поэтому вероятно таки придется везде ставить самодельный пакет с минимумом включенных при сборке вреднофич.
> Впрочем алиас никогда не поздно сделать.
неработающий. Потому что обе под[д]елки несовместимы ни по синтаксису, ни по возможностям.
Принцип - зачем использовать дополнительно потенциально уязвимое ПО, если можно обойтись без него.
> я пока особо не видел где-то сценариев для настройки/установки чего-либо где бы sudo заменили на run0 или sudo-rs.Я сейчас раскрою тебе секрет. Только ты никому не говори. Если ты сделаешь su, перед началом сценария, а потом из всех команд сценария удалишь sudo, то всё просто магически сработает.
>> Я сейчас раскрою тебе секрет. Только ты никому не говори. Если ты сделаешь su, перед началом сценария, а потом из всех команд сценария удалишь sudo, то всё просто магически сработает.Читать научись для начала.
Да всем по...современный ИТ (любой, на любой ОС, хоть open-source, хоть корпоративный) это дырка на дырке. Нет времени думать, нужно делать фичи.Однако есть и нормальные альтернативы - https://github.com/LeChatP/RootAsRole
RootAsRole. Ой, на Rust 😱😱😱
Всего лишь следствие капитализма и корпоративизации отрасли. Изначально айти была академической, но слишком молодой, чтобы выработать лучшие практики. Сейчас же лучшие практики есть, но в угоду kpi и прочей дряни, что на качество кода забивают.
Иными словами, принцип неопределенности: либо медленно и качественно, либо быстро и плохо.
> Сейчас же лучшие практики естьМожно парочку ссылок того, что вы считаете лучшими практиками? А то я столько споров видел, когда обе стороны считали, что именно их практика - лучшая. А по факту просто способ сидеть и 90% времени тратить на рефакторинг, по сути сводящийся к "мне так читабельнее, а кто против - неправ".
Это где-то нет стандарта кодирования? В котором все и прописывается, а кто не соответствует - депремируется и правит код...
В смысле "где-то нет"? Речь же шла не о случайных стандартах кодирования, которые, да, есть везде. И везде свои. Речь шла о "лучших практиках". Лучшие - они для всех одинаковые. И вероятно, хотя бы с минимальной аргументацией "лучшести".
> Однако есть и нормальные альтернативы - https://github.com/LeChatP/RootAsRoleЧто-то 17 мая там коммиты подозрительно закончились. Хотя до этого активненько шло.
Автор закончил [s]школу[/s] университет.
да, я тоже хотел написать - экзамены же ж в школах.
Если б университет - наоборот, было бы экстенсивное развитие, чуваку ж надо на собеседованиях показать свой шитхаб.Ну ладно, может поступит куда и сделает из него курсовик.
так и чего не написал, раз экзамены?
This project was initiated by IRIT and sponsored by both IRIT and Airbus PROTECT through an industrial PhD during 2022 and 2025IRIT Computer Science Research Institute of Toulouse
Финансирование/грант/PhD закончился.
Но насколько я помню там всё сделано (3.0.0 версия).
А, от оно чего. Про phd-то я и не подумал.> Но насколько я помню там всё сделано (3.0.0 версия).
вот это я понимаю, как стонхендж - на тысячелетия.
Не то что этот Тодд, каждые пол-года что-то доделывает.(это вот все потому что он кандидатскую не написал!)
На первое время можно бинарник sudo удалить/спрятать.
в нормальных дистрах уже обнова приехала
не приехала
Тебе же говорят, в нормальных дистрибутивахhttps://mirror.yandex.ru/mirrors/manjaro/stable/core/x86_64/...
$ cat /etc/hosts | grep yandex | wc -l
32
> любому непривилегированному пользователю выполнить код с правами root,
> даже если пользователь не упомянут в конфигурации sudoersНу спасибо убунта, при том это уже не в первый раз. То им sudoedit какой-то спичил - и тоже рута всем раздавал, теперь это.
Элегантная дыра
sudo: invalid option -- 'R'по-видимому это ненужное-ненужно добавлено только в распоследних убунтах. И вероятно надо его выпилить отовсюду вместе с -h
А знаете, в чём причина вот таких косяков?
А причина - нарушение "Unix way", когда разрабатываются простые утилиты для простых задач. Изначально sudo разрабатывалась как простая утилита, но потом под тяжестью фич стала совершенно непростой
Это цена эволюции ... Вспомни динозавров.
> Изначально sudo разрабатывалась как простая утилита,нет. она изначально была очень неудачной и тяпляперами написанной. Ну им можно простить, в 80е все так делали.
А с тех пор как ей в одно жало стал распоряжаться тяпляпер Тодд (кстати, угадайте где еще он подвизается) там вообще все стало плохо (т.е. с девяностых аж - но я видел код до того, тоже был не айс). Плагины какие-то, какой-то нахрен ненужный sudoedit и так далее. Походу ему очень нужны бабки, а за поддержку несломанного не капает.А теперь вон и вовсе - добавил новую фичу с детской ошибкой. Сброс привиллегий должен всегда быть ПЕРВОЙ же операцией после chroot - по-моему это должны вбивать в голову еще на подготовительном факультете или в кружке "программирование хеловротов под юникс", с демонстрацией сотни примеров как это бывает, когда сделали неправильно (там и sshd отметился в свое время и еще дофига подобного).
>Сброс привиллегий должен всегда быть ПЕРВОЙ же операцией после chroot - по-моему это должны вбивать в голову еще на подготовительном факультете или в кружке "программирование хеловротов под юникс"Никто никому ничего не должен. Единственная причина, почему люди до сих пор не перешли на условный idris/ats - возможность писать абсолютно любой говнокод и не переживать об этом.
Да, sudo доверия нет, но от openbsd'шников я 100% ожидаю таких же проблем, так что doas - не замена. Не понятно чем теперь пользоваться.
> Да, sudo доверия нет, но от openbsd'шников я 100% ожидаю таких же
> проблем, так что doas - не замена. Не понятно чем теперь
> пользоваться.Ну они вряд ли затолкают в doas поддержку chroot с nsswitch.
кто бы мог им помешать? Ты в курсе где харчуется автор sudo?
(nsswitch, если что, обрабатывает libc. Просто она не рассчитана на запуск от рута в untrusted окружении - понадобился sudo чтобы этого добиться.)
Да я бы вообще ничему не доверял даже памяти, см когнитивные искажения. Там только про память больше 20 штук (где 20 число с потолка).
Глазам тоже не стоит доверять. Читал, что глаз видит и передает в мозг только часть картинки. Остальное (периферию) "додумывает" мозг. Вспоминается фильм "Вечное сияние чистого разума", где фирма стирала память о человеке, через воздействие на узлы, отвечающие за память об этом человек. Делала это фирма, когда человек спал. Таким образом, через воздействие на мозг во сне возможно искажение картинки, которую видит человек. )
> файл /etc/nsswitch.conf загружался в контексте нового корневого каталога, а не системного каталогаГы... какая прелесть!
А зачем пользователю нужны привилегии рута?Установку, настройку, обновление - все можно выполнить в рутовой консоли.
Ну у меня, например, стоит запуск openvpn от моего пользователя через sudo без пароля. То есть я хочу, чтобы у меня спрашивало пароль рута для установки/обновления софта, но НЕ для запуска впн. Но за 20 лет похожих кейсов было штук 5 максимум.
а зачем тебе openvpn от рута? Это же не дырявый положительно globalprotect.
От непривилегированного пользователя не запускалось. Вроде. Точно не скажу, настраивал последний раз уже лет пять назад.
А оно с маршрутами без рута как то не так работает :-/
> Установку, настройку, обновление - все можно выполнить в рутовой консоли.А зачем пользователю рутовая консоль? Установку, настройку, обновление - всё можно выполнить в консоли пользователя. Почему это удобнее - потому что не нужно дополнительно настраивать окружение рута (от шелла до .vimrc), и история не размазывается по пользователю и руту.
> А зачем пользователю нужны привилегии рута?
> Установку, настройку, обновление - все можно выполнить в рутовой консоли.Ну вот понимаешь - этих самых "пользователей", или, вернее, "администраторов" бывает больше одного. Есть вот "отдел инфраструктуры", который отвечает за VM+ОС, есть "отдел поддержки ИС" - который ведает собственно тем полезным, что в этой ИС вертится, у ИС есть СУБД, за которую отвечают вот вообще DBA - а где-то рядом гордо реет ИБ, которым "А можно всех посмотреть?!" ("Зойчем?!" они сами не знают, но ТАК ПОЛОЖЕНО).
И вот у всех этих нет, даже не товарищей, а отделов - есть определенная текучка кадров - и вот как ты себе представляешь замену пароля root'а при увольнении Уаси из "поддержки производственных систем" и как будешь отвечать на вопросы "А что Уася делал на этих серверах в последние две недели?" от г-д из ИБ (Доступ у них, напомню, есть - но лапки, лапки...) - я лично не знаю, но надеюсь HR тебе их не задаст.
"Коллеги, а как зайти на сервер-нахерн-был-ненужен.но.вот? - Там старый рутовый пароль! - Я пробовал, не пускает! - Не тот старый, а тот который до увольнения Васи в позапрошлом году! - А я тогда ж еще не работал! - Ща, найду пришлю. - А, ооок."И разумеется все эти пароли и ключи кучкой под ковриком (под десятком ковриков, на каждого по два), потому что запомнить и один такой невозможно, а с позапрошлого года их накопилось с десяток. И при аварии их надо вбивать быстро, пока она не эскалировалась до начальства.
И да, иногда еще хочется дать возможность техподдержке что-то посмотреть и может даже перезапустить, но не rm -rf / набрать.
Опять в однопользовательской локалхостной системе что-то ломается когда хостов или пользователей нужно больше одного. Новость-то в чём?
Хотя делов то, поставил систему и удалил sudo, а ещё под root'ом сделать chmod u-s /bin/su. Права root пользователю ни к чему, а рутовские дела делаются больше всего при установке, больше они не нужны.
root на каждый чих требуется в линуксах.
Технологией File CAP можно обойтись. Аккуратным DAC.Это современному сыстемды надо root.
А лет 15 назад ещё были лимоны GNU/Linux с изолированным init, который сам мониторитл пользовательские события и выключал перегружал комп.
Влажную уборку комнаты проводить надо регулярно.
А если серьёзно, то чем вы там занимаетесь в Линуксе, что надо регулярно под root'ом заходить?
У меня это несколько дней за целый год: обновления. Ну и когда только поставил, то /etc/fstab и всякие подобные конфиги под root'ом правятся, проги нужные ставятся и всё.
> Влажную уборку комнаты проводить надо регулярно.
> А если серьёзно, то чем вы там занимаетесь в Линуксе, что надо
> регулярно под root'ом заходить?
> У меня это несколько дней за целый год: обновления. Ну и когда
> только поставил, то /etc/fstab и всякие подобные конфиги под root'ом правятся,
> проги нужные ставятся и всё.Ну вообще конечно "да" - видел я место, где "интерактивный вход пользователя в систему" являлся "значительным нарушением информационной безопасности" и требовал вот прям отдельного расследования с заполнением соответствующих актов в процессе - но работать ТАК умеют\могут не только лишь все.
Причём здесь место работы? У меня именно на домашнем компе sudo удалён лично мною, а на /bin/su sticky bit поставлен в ноль (чтобы нельзя было из под пользователя выполнить su -).
На работе же если пользователю позволяется лезть в админку, то лучше по достижении минимально необходимого для лёгкого поиска работы опыта сразу же увольняться и искать нормальную работу.
> Причём здесь место работы? У меня именно на домашнем компе sudo удалён
> лично мною, а на /bin/su sticky bit поставлен в ноль (чтобы
> нельзя было из под пользователя выполнить su -).Да при том, что на твой комп всем пофиг от слова "совсем". Хоть с перфокарт управляй - никто слова дурного не скажет. А вот при попытке распространить сию практику могут обнаружить нюансики, ага.
> На работе же если пользователю позволяется лезть в админку, то лучше по
> достижении минимально необходимого для лёгкого поиска работы опыта сразу же увольняться
> и искать нормальную работу.Ну, администраторы - всего лишь категория пользователей с расширенными правами, не?
Вот для чего стоит попробовать создать нейросеть, так для выявления таких ошибок.
Правда я уверен уже создали и уже используют.
Не осилят. Они обработку ошибок одной функции не могут написать так, что бы придраться не к чему было.Ну не любят программисты ошибки обрабатывать. И делают это спустя рукава - вот нейронки и не могут это сделать нормально.
А я напоминаю, что эта уязвимость локальная, то есть на уровне проникшего в хату соседа с молотком.
Дык если бы сосед ... а тут мимкрокодил
ну как бы если подтвердится (пока на моих системах не получалось) что это таки работает от юзера, отсутствующего нафиг в sudoers вообще - то любое rce от nobody автоматически перерастает в катастрофу общесерверного масштаба.так себе в общем новость.
Как же замечательно на бсд-подобных системах с doas. Продолжайте использовать софт, в котором легаси идет уже с 80-ых годов, удачи.
На bsd системах только используется sudo. И на openbsd, да-да. Потому что к openbsd'шным поделкам доверия не больше чем к этому вот решету.
лучше использовать дырявый эксплойт от редхата, замаскированный под утилиту для получения доступа к пользователям?
Так в дефолтной настройке всё хорошо? Проблема только у нетакусиков??
>Уязвимость проявляется в конфигурации по умолчанию и подтверждена в выпусках sudo с 1.9.14 по 1.9.17 (потенциально затрагивает все версии, начиная с 1.8.33).
Вообще считаю, что sudo в базовой системе это дичь какая-то, продвинутая убунтоидами (видите ли, сложно запомнить пароль рута). Да, она имеет свои применения (разрешить пользователям отдельные команды от рута без пароля), но в конфигурации по умолчанию полностью заменяется обычным su с паролем рута. И никакой doas не нужен.
>но в конфигурации по умолчанию полностью заменяется обычным su с паролем рутаТолько в однопользовательских системах.
Добавить кого-то в sudoers - отдать ему рута. Ничто не мешает сделать дальше что угодно (при конфигурации по умолчанию). Можно просто дать пароль рута и всё.Для более разумного использования всё равно надо настраивать, тогда же sudo можно и поставить. Нафига оно в базе?
>Добавить кого-то в sudoers - отдать ему рутаВот чем хороши старые прожжёные эникейщики - 0% знаний, 100% уверенности. Нет это далеко не значит, как минимум список команд можно настраивать. Правда там будет целая проблема с аргументами, но да ладно.
>Можно просто дать пароль рута и всё.Пароль у рута один, пользователей, с повышенными правами может быть несколько. С sudo можно отозвать у одного пользователя за раз полономочия, с su - полномочия отзываются сразу у всех, так как рутовый пароль общий.
>Нафига оно в базе?Предполагается, что софт нормально написан, а не сетка рабица.
и тут мы вспоминает selinux с его MAC
Ну сорри если у тебя окно контекста составляет одно предложение. Я дальше явно написал, что это дело надо настраивать. В линуксе вообще много полезных вещей, которые надо настраивать. Но мы же не тащим всё в базовую систему? Кому надо, тот поставит и настроит.
> Ну сорри если у тебя окно контекста составляет одно предложение. Я дальше
> явно написал, что это дело надо настраивать. В линуксе вообще много
> полезных вещей, которые надо настраивать. Но мы же не тащим всё
> в базовую систему? Кому надо, тот поставит и настроит.Кому не надо - удалит, ага?
>Я дальше явно написал, что это дело надо настраивать.Что надо настраивать? Как только вы добавляете нового пользователя в группу sudo, всё настройка уже завершена, у двух пользователей уже два разных пароля.
> Пароль у рута один, пользователей, с повышенными правами может быть несколько. С sudo можно отозвать у одного пользователя за раз полономочия, с su - полномочия отзываются сразу у всех, так как рутовый пароль общий.И как часто такой функционал востребован на какой-нибудь убунточке? Как ты полагаешь, каков процент от общего числа инсталляций использует эту функциональность? Хотя бы 1% наберётся?
И из-за этого одного процента, 99% получают дефолтом переусложнённый, дырявый и ненужный им кусок софта.
Это антипаттерн для создания систем. Это как C, который делает 100% кода unsafe ради того 1% случаев, когда это действительно надо. Это мышление дидов из 70-х годов, от которого девелоперы unix до сих пор не могут излечиться.
>> Пароль у рута один, пользователей, с повышенными правами может быть несколько. С sudo можно отозвать у одного пользователя за раз полономочия, с su - полномочия отзываются сразу у всех, так как рутовый пароль общий.
> И как часто такой функционал востребован на какой-нибудь убунточке? Как ты полагаешь,
> каков процент от общего числа инсталляций использует эту функциональность? Хотя бы
> 1% наберётся?
> И из-за этого одного процента, 99% получают дефолтом переусложнённый, дырявый и ненужный
> им кусок софта.
> Это антипаттерн для создания систем. Это как C, который делает 100% кода
> unsafe ради того 1% случаев, когда это действительно надо. Это мышление
> дидов из 70-х годов, от которого девелоперы unix до сих пор
> не могут излечиться.Ну, предполагаю, что примерно 100% корпоративных инсталляций, да? Т.е. примерно "все", кто платит ).
>Как ты полагаешь, каков процент от общего числа инсталляций использует эту функциональность? Хотя бы 1% наберётся?Мне не нужно, значит никому не нужно - типичная логика тыжпрограммиздов с опеннета.
> Мне не нужно, значит никому не нужно - типичная логика тыжпрограммиздов с опеннета.Может быть это и так. Но ты не ответил на вопрос: каков процент инсталляций действительно полагается на функционал sudo так, что его нетривиально заменить на su?
Нет ответа, значит ты сам не знаешь? И заменяешь аргументы по сути на ad hominem? Нушо я могу сказать. Малаца. Гораздо интеллектуальнее чем "типичная логика тыжпрограммиздов с опенета".
>Может быть это и так.Не может быть, а так и есть.
>каков процент инсталляций действительно полагается на функционал sudoСам по себе процент не будет говорить вообще ни о чём. Есть школьник, поставивший gnu/linux в виртуалку поиграть, которому что su, что sudo - всё равно. Имеет смысл равняться на данного школьника или нет? А если целая школа школьников? А на админа в фирме, обслуживающего десяток заказчиков?
>Нет ответа, значит ты сам не знаешь?Такой ответ можно дать только если в 100% случаях будет включена телеметрия.
>Нушо я могу сказать.Ну я, например, использую, сразу на нескольких системах. Что дальше?
> Только в однопользовательских системах.Причем в этих системах всем наплевать на увизгвимости в суду - их wsl и так в безопастности, на него ходит только васян с локалхоста под виндой (а он и так рут)
Как же неудачно. Только добавили закладку, а её сразу нашли. Ничего, в следующий раз спрячут получше.
че то ссыкотно, красношляпка на 4 дня обновление инфраструктуры делает и из за этого ни koji ни bodhi недоступны. Страшно очень страшно. Если бы мы знали что это такое. 4 июля как раз у супостатов главный праздник. Обожаю конспирологию.
В debian 12 уже исправлено. Вообще sudo не использую
trixie опять запаздывает от остальных.
run0 замечательная замена sudo и намного безопасней
ложь
Нет sudo - нет проблем. Не стесняюсь залогиниться рутом, если чего надо поадминить.
Ну, заадминь там себе Remmina если такой умный. Даже интересно как вы такие в никсах живёте без VNC...
а ещё нужен gcc ?
Собери на другом компе и создай arхивчик
Переходим на run0? В secureblue только его и используют.
Позволю себе процитировать croco:Если вы из-под аккаунта с одними полномочиями осуществляете доступ к аккаунту с другими полномочиями, то с точки зрения безопасности компрометация первого автоматически влечёт компрометацию второго. Из этого следует, что в сеансе работы нельзя повышать полномочия. Понижать можно, повышать нельзя. Вообще нельзя, понимаете? Никаким способом. В этом плане sudo вообще попадает под категорический запрет, а su остаётся в системе (без suid-бита) для понижения полномочий при возникновении такой потребности. "Вместо" них пользоваться нельзя ничем, ssh root@localhost тоже делать нельзя. Если нужны права root'а, в систему следует изначально зайти под root'ом. Если машина локальная, то переключиться на текстовую консоль и на ней зайти. Если удалённый доступ, то ssh root@remote-host, только следует при этом понимать, что тот аккаунт, под которым вы работаете на своей рабочей станции и из-под которого делаете этот вот ssh root@somewhere, охранять надо аки зеницу ока, уж во всяком случае браузеры под ним гонять нельзя совершенно точно.
А уж как надо беречь root на такой станции — ну, можно не объяснять. Почему-то часто встречаются админы, которые уверены, что аккаунты серверов надо беречь сильно-сильно, а аккаунты на личных машинах "типа фиг с ними". Ну так вот они заблуждаются: компрометация любого аккаунта означает компрометацию всего, к чему из-под него осуществляется доступ. Компрометация личного админского ноута означает компрометацию всех серверов, которые он админит.
у меня довольно обширный опыт коллективного администрирования серверов, и я на собственном опыте знаю, что sudo совершенно не нужен (плюс к тому -- см. выше, он ещё и недопустим, притом категорически). Разумеется, сообщать пароль рута нельзя никому, пароли вообще никогда никто и никому сообщать не должен. Вообще, понимаете? Никогда, никто, никому. Человек сам себе ставит пароли и никогда их никому не говорит. Но это и не нужно, и sudo тут ни при чём.
Просто у каждого админа должен быть СВОЙ аккаунт с нулевым uid'ом. В коллективах, где работал я, обычно мы такие аккаунты называли с префиксом r_. Например, мой личный root на всех машинах назывался r_croco.
Что касается логгинга выполняемых команд -- польза от него несравнима с зияющей дырой в безопасности, которая открывается из-за наличия sudo.
А ещё -- если использовать криптоключики и authorized_keys, то можно обойтись и одним аккаунтом рута.
>Позволю себе процитировать croco:Его надо не цитировать, а забыть как кошмар.
>Из этого следует, что в сеансе работы нельзя повышать полномочия.В юниксе исторически почти всё требует root. Потом, со времением это немножко поправили, но далеко не до конца. Тот же самый ping без root прав послать не получится, потом это замаскировали через suid, а потом и через capabilities. Но сам по себе root из этого абсолютно никуда не делся.
>Если нужны права root'а, в систему следует изначально зайти под root'ом. Если машина локальная, то переключиться на текстовую консоль и на ней зайти.Это, мягко говоря, крайне неудобно, если вы занимаетесь хоть чем-то сдожнее, чем вбиванием apt update. Как например, этот персонаж планирует писать какой-то сложный текст, типа конфига или копировать приватный ключ? Будет запускать мессенджер под рутом?
>уж во всяком случае браузеры под ним гонять нельзя совершенно точно.А почему это только браузеры?
>у меня довольно обширный опыт коллективного администрирования серверовТот самый случай, когда опыт данного персонажа работает во вред. https://www.linux.org.ru/forum/talks/17863538
>Столяров эти рассказы воплотил в жизнь, начав писать CMS мечты и допустив постыднейшую ошибку в безопасности. http://stolyarov.info/node/428
>Вывод: Столяров — это классический, можно сказать, эталонный системный администратор из 90-х. Человек, который отказался развиваться, отринул курсы повышения квалификации и навсегда остался в сладком возрасте 20 лет в рамках того давно ушедшего социума, его стереотипов и правил.
>Книги Столярова — это книги 90-х, хотя они написаны через четверть века, в конце 2010-х. Это памятник эпохи начала массовой компьютеризации в России. Это надо понимать при работе с ними. Читая работы Столярова, надо давать «поправку на ветер», и всё будет хорошо.----
>Просто у каждого админа должен быть СВОЙ аккаунт с нулевым uid'ом.Давайте каждому админу дадим абсолютно полный доступ сразу ко всей системе.
>А ещё -- если использовать криптоключики и authorized_keys, то можно обойтись и одним аккаунтом рута.Ещё один вредный совет. У пользователя может быть несколько ключей, как он собирается проверять, что удалены сразу все ключи? Тем более, что редактировать authorized_keys через текстовой редактор - явно не лучшая идея.
Советы данного автора - вырожденны уже на сам момент совета, даже по меркам 90-ых, не имеют практической ценности, зато являются бессмысленными ртиуалами, в перемешку с мазохизмом.
> В юниксе исторически почти всё требует root.как и в винде - админа. (просто там есть удобный и довольно надежный механизм проверить что ты админ, и у тебя не увели еще сессию, а не этовотвсьо)
Потому что на самом деле этот рут - подтверждение того что тебе на самом деле можно это делать (трогать устройства, занимать привиллегированные порты и т д), а другого у нас нет.
Т.е. либо тебе доверили пароль, эквивалентный рутовому, либо процессу с которым ты работаешь доверили - запуском от имени кого-то кто такой пароль знает.
И страдать фигней совершенно незачем.
Мы не работаем постоянно от рута только затем чтоб оставались какие-то возможности контроля и логинга, и ненароком самому себе чего-нибудь не сломать. (был когда-то еще и софт ломавшийся при работе от рута, но сейчас такое 25 лет уже немодно)
Там где то и другое неважно, работай от рута, твоя wsl в безопастносте.> Советы данного автора - вырожденны уже на сам момент совета, даже по меркам 90-ых, не
> имеют практической ценности, зато являются бессмысленными ртиуалами, в перемешку с
> мазохизмом.+1
для sudo уже нужно отдельную группу создавать, кому им можно пользоваться)