LINUX.ORG.RU

В Ubuntu по умолчанию задействован sudo-rs, написанный на Rust

 , , ,


0

5

В ежедневно обновляемых экспериментальных сборках Ubuntu, отражающих развитие осеннего выпуска Ubuntu 25.10, вместо утилиты sudo по умолчанию задействован проект sudo-rs, написанный на языке Rust. Решение использовать sudo-rs в Ubuntu было принято в мае, но до последнего времени не было ясно, успеют ли разработчики реализовать в sudo-rs необходимые отсутствующие возможности до перехода Ubuntu 25.10 на стадию заморозки.

Для поставки sudo-rs в Ubuntu 25.10 были выполнены такие требования, как возможность работы в системах со старыми версиями ядра Linux (<5.9), поддержка механизма защиты NOEXEC и профилей AppArmor, исправление проблем со стабильностью, рецензирование пакета и его добавление в репозиторий main. Для возвращения классического sudo в Ubuntu-установках c sudo-rs можно использовать команду update-alternatives --set sudo /usr/bin/sudo.ws. В версии Ubuntu 26.10 в репозитории main планируют оставить только пакет sudo-rs. Что касается утилиты su, то в Ubuntu продолжает использоваться обычная утилита /usr/bin/su, но разработчики намерены в будущем начать эксперименты с использованием варианта su (su-rs) на языке Rust.

Замена системных компонентов производится в рамках инициативы по повышению качества системного окружения через поставку программ, изначально разрабатываемых с оглядкой на безопасность, надёжность и корректность. Поставка утилит, написанных на языке Rust, даст возможность снизить риск появления ошибок при работе с памятью, таких как обращение к области памяти после её освобождения и выход за границы буфера. Если не возникнет непредвиденных проблем, то утилиты на Rust будут задействованы по умолчанию в LTS-ветке Ubuntu 26.04.

>>> Подробности на opennet



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

На Си мне код писать или на Расте

На заборе... ;P ;))

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

Ода! Sudo с патчем Бармина! Да за этим же будущее! :)

gns ★★★★★
()

Интересно, насколько растет объем системы. Раст же все зависимости в юинарь сует. Сотня мелких утилит должна неплохо так раздуть образ.

usermod
()
Ответ на: комментарий от cetjs2

А зачем тащить компилятор раста для сборки базовой системы?

usermod
()
Ответ на: комментарий от Stanson

Именно Electronic Design Automation. Я как-то возился с софтом для оптического сканера фотошаблонов за много лямов, который с нанометровой точностью сканировал готовый фотошаблон и сравнивал скан с векторной картинкой, по которой ее изготавливали. Так формат этой векторной картинки насквозь пропиетарный. И там все было NDA обставлено. Давно это было, сейчас уже и масок-то кварцевых нет. Сплошная EUV litography на зеркалах :). И вряд ли ASML что-то в опенсорс выкладывает, сдается мне.

gns ★★★★★
()

лол, для сборки бинарнрка в 300кб из базового набора системы теперь нужно тащить гигабайт зависимостей.

а убунтята проглотят и еще попросят!

ann_lortemp2
()
Ответ на: комментарий от ann_lortemp2

Гигабайт зависимостей, написанных школьниками

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

Ну пару гигов это не так тяжело, особенно учитывая, что Убунта позиционируется как Винда среди Линуксов, то бишь «минимум действий от юзера, максимум от программиста». Мы как-бы не про Alpine говорим, где за каждый МБ удавиться можно.

Undeadguy
()
Ответ на: комментарий от gns

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

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

Я как бы тоже имею отношение к дорогому проприетарному оборудованию, правда из другой, несколько более специфической области, но даже тут проприерасты западные либо делают экспорт/импорт в понятный текстовый файл, либо делают формат для экспорта и публикуют описание. Как раз для того, чтобы их оборудование не было никому не нужной вещью в себе и его можно было интегрировать в производственный процесс. Но между частями одной системы, например между головкой для измерения цвета продукции на линии и дозаторами красителей для непрерывного окрашивания продукции данные вполне могут ходить в мутных закрытых форматах. Но разбираться как устроен такой формат придётся только в том случае, если захочется например измерительную голову подключить к дозирующей системе другого производителя. Впрочем, это не так уж и сложно сделать, на самом деле.

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

Ты глупости читаешь. int power() это функция, принимающая произвольное число аргумнентов. Ты её можешь вызывать, как power(1), power(1, 2) и тд. int power(void) это функция, принимающая 0 аргументов. Ты её можешь вызывать только как power() и никак иначе. Это разные вещи.

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

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

Для этого ему suid бит не нужен. Без suid бита, конечно, хоть su, sudo, хоть что угодно.

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

Во-первых, код компилируется как и раньше. Просто надо уяснить себе что запуск gcc без аргумента -std= это UB.

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

Во-вторых, в нормальном софте void f() не писали.

Это просто пример несовместимого изменения.

vbr ★★★★★
()
Ответ на: комментарий от riokor-v2

И пал sudo, годами нам служивший верой и правдой.

Переписал sudo на Rust
Какой-то старый программист
Теперь ставится Ubuntu
Не с бэкдором, а сачком.

Lucky ★★
()

Мда Надеюсь от этого мусора можно будет избавиться

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

Да не умеет оно никуда в экспорт. Мы сами внутренний софт писали для производителя железок. Есть такая фирма KLA-Tencor, производит 80% рынка метрологического оборудования для всяких там Самсунгов, Интелов, Микронов и прочих TSMC :) Сами софт пишут, сами железки делают и продают их потом лямов по 20 за железку.

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

Есть такая фирма KLA-Tencor, производит 80% рынка метрологического оборудования для всяких там Самсунгов, Интелов, Микронов и прочих TSMC :) Сами софт пишут, сами железки делают и продают их потом лямов по 20 за железку.

Если они встраивают своё железо в воркфлоу «всяких там Самсунгов, Интелов, Микронов и прочих TSMC» то не очень понятно как они делают это без какого-то формата обмена данными с внешним миром. Может конечно просто дополнительные 20 лямов за интеграцию берут, и костыляют какие-нибудь конвертеры в формат принятый на производстве.

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

Может и действительно вход — GDSII и еще, насколько я помню, несколько. Там была идея в том, что надо было быстро векторную картинку на полоски резать и преобразовывать в растр для сканера. Сравнением растра там отдельный кластер занимался. Там объем — гигабайты, конвертация занимала сутки примерно. Мы это дело процентов на 30-40 ускорили, уже хорошо.

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

Почти верно, но я всё-таки уточню: su нужно чтобы рут мог запускать проги от других юзеров. А вот в обратную сторону и правда не стоит разрешать.

Но разрешили. Видимо, бы и в этом какой-то смысл...

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

Во-вторых, в нормальном софте void f() не писали.

А как писали?

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

Если хочешь выполнить команду от рута, переключись на текстовый терминал и залогинься там

А если нужно дать только определенному пользаку право запускать только определенную программу?

deep-purple ★★★★★
()
Ответ на: комментарий от gns

Есть конечно классичнские маски и никуда они не исчезнут в обозримой перспективе.

sabacs
()
Ответ на: комментарий от Sunderland93

Планирую в TileOS у себя его по дефолту назначить.

Хорошая компания: талый, вялый и судорас. Выставка достижений народного хозяйства. Вместо полезного софта вот это всё.

bread
()
Ответ на: комментарий от vbr

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

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

С гуёвыми приложухами не канаеть(

На X-ах канает.

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

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

Про «тогда» не знаю. Сейчас - возможно. По крайней мере декларацию. void f(); до C23, void f(...); после C23.

% cat tc1.c
void f();

void g() {
	f();
	f(1);
	f("1");
	f(1, "2", 3);
}

% gcc -std=c17 tc1.c -c -Wall

% cat tc2.c
void f(...);

void g() {
	f();
	f(1);
	f("1");
	f(1, "2", 3);
}

% gcc -std=c23 tc2.c -c -Wall

% ls
tc1.c  tc1.o  tc2.c  tc2.o

Причём обрати внимание: ни единого предупреждения.

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

Сейчас - возможно.

Пруфы ты так и не привёл. В твоём примере такой функции нет, только прототип. Попробуй написать реализацию и поймёшь наверно почему я прав.

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

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

Пруфы ты так и не привёл. В твоём примере такой функции нет, только прототип. Попробуй написать реализацию и поймёшь наверно почему я прав.

Можно на ассемблере написать, или на другом языке. Это не суть. Речь про декларацию функции, позволяющую её вызывать, а не про конкретную реализацию.

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

Можно на ассемблере написать, или на другом языке.

Напиши на чём угодно (но чтобы эту функцию можно было вызвать из Си, разумеется). Или просто перестань делать это ложное заявление. Декларация без реализации бесполезна, нормальная реализация невозможна. Возможна убогая реализация с передачей недостающих фиксированных аргументов через глобальное состояние, но ты ж не её имел ввиду?

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

А как теперь понимать void f(void) ? Как в С++, то есть функция с одним парамером типа void?

И в C и в C++ это было и остаётся объявление функции без аргументов, тут ничего не меняется. Можно считать это отныне устаревшим вариантом, но пока компилируется без предупреждений.

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

Спасибо, ну хоть совместимость не поломали.

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

Вот так можно:

#include <stdarg.h>
#include <stdio.h>

int sum(...) {
	va_list ap;
	va_start(ap);
	int n = va_arg(ap, int);
	int s = 0;
	for (int i = 0; i < n; ++i) {
		s += va_arg(ap, int);
	}
	va_end(ap);
	return s;
}

int main(void) {
	int s = sum(5, 1, 2, 3, 2, 1);
	printf("%d\n", s);
}

Можно и через глобальное состояние. Делай как угодно. Чудес, конечно, не будет, ABI остаётся неизменным и число/типы аргументов надо по какому-то соглашению передавать, будь то строка с форматом или ещё что-нибудь.

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

Пример некорректный - эту функцию нельзя вызывать без аргументов, будет UB. Её настоящий прототип int sum(int n, ...); и первый va_arg() надо убрать.

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