
Розробка наступної версії systemd 256 виконується і наразі завершено майже на 80%. і один змін кандидата, які будуть представлені У цьому випуску бере участь той самий творець systemd «Леннарт Поттерінг», який у публікації на Mastodon оголосив про впровадження нова утиліта під назвою «run0».
Цей інструмент Він представлений як більш безпечна заміна sudo і працює як доповнення до команди systemd-run. Ключовою перевагою є те, що він усуває необхідність використовувати виконуваний файл із прапорцем SUID, що може бути ризикованим. Згадується, що run0 призначений для більш безпечного запуску процесів з ідентифікаторами інших користувачів.
Поеттерінг стверджує, що введення замінника sudo відбувається тому, що центральна проблема sudo полягає в його природі SUID, потенційно загрожуючи безпеці. У відповідь на це, починаючи з systemd 256, ми прагнемо працювати з привілеями незалежно від втручання непривілейованих кодів. Використання прапора SUID у sudo для зміни ідентифікатора несе додаткові ризики, оскільки процес SUID успадковує контекст виконання, який включає багато властивостей, якими керує непривілейований користувач.
Процеси SUID є сторонніми концепціями: вони викликаються непривілейованим кодом і успадковують контекст виконання, призначений і керований непривілейованим кодом. Під контекстом виконання я маю на увазі велику кількість властивостей, які сьогодні має процес у Linux, від змінних середовища, властивостей планування процесів, призначень контрольних груп, контекстів безпеки, переданих файлових дескрипторів тощо.
Ці властивості може включати змінні середовища, дескриптори файлів, параметри програміста та групові прив’язки. Навіть незважаючи на те, що деякі з цих властивостей автоматично видаляються ядром для процесів SUID, а інші видаляються самою програмою, у складних програмах SUID, як-от sudo, усе ще виявляються вразливості через необережне поводження із зовнішніми даними, на які впливають непривілейовані користувачі.
На відміну від цього, run0 не використовує SUID і натомість просить системного адміністратора запустити оболонку або процес із певним ідентифікатором користувача, Після цього він створює новий псевдотермінал (PTY) і обробляє передачу даних між ним і поточним терміналом (TTY). Така поведінка більше нагадує запуск через ssh, ніж традиційний sudo. Привілейований процес працює в ізольованому контексті, створеному процесом PID 1, а не процесом користувача, що означає, що він не успадковує властивості середовища користувача, за винятком змінної середовища $TERM, яка пересилається. Крім того, пересилання контролюється за допомогою списку явно дозволених властивостей, дотримуючись підходу білого списку, а не чорного списку.
Polkit відповідає за авторизацію та визначення можливостей користувача в run0, тоді як класична мова правил (/etc/sudoers), яку використовує sudo, не підтримується цим інструментом. Функціональність запуску програм з іншими привілеями вбудована в systemd-run, а команда run0 створюється як символічне посилання на systemd-run, забезпечуючи інтерфейс командного рядка, подібний до sudo.
Але досить усіх цих розмов про безпеку. Цей інструмент також набагато цікавіший у використанні, ніж sudo. Наприклад, за замовчуванням він відтінить фон вашого терміналу в червонуватий тон, поки ви працюєте з підвищеними привілеями. Це має діяти як дружнє нагадування про те, що ви ще не відмовилися від привілеїв, і позначає вихід усіх команд, які були запущені з належними привілеями
Додаткова функція run0 є візуальна індикація того, що ви працюєте з підвищеними привілеями. Це досягається встановленням червонуватого фону в терміналі та додаванням червоної точки до заголовка вікна. Після завершення запуску з підвищеними привілеями крапка зникає, а фон повертається до нормального. Крім того, run0 підтримує всі параметри запуску. "systemd-run", як параметр "--property", що дозволяє встановлювати довільні конфігурації для системних служб, наприклад "CPUWeight=200 MemoryMax=2G IPAccounting=yes".
Якщо вам цікаво дізнатися більше про це, ви можете ознайомитися з деталями У наступному посиланні.