Организация ISRG (Internet Security Research Group), которая является учредителем проекта Let's Encrypt и способствует продвижению HTTPS и развитию технологий для повышения защищённости интернета, представила проект Sudo-rs по созданию написанных на языке Rust реализаций утилит sudo и su, позволяющих выполнять команды от имени других пользователей. Под лицензиями Apache 2.0 и MIT уже опубликована предварительная версия Sudo-rs, пока не готовая к повсеместному использованию. Проект, работа над которым началась в декабре 2022 года, планируют завершить в сентябре 2023 года...Подробнее: https://www.opennet.me/opennews/art.shtml?num=59053
Пусть лучше мир прогнётся под rust...
Всё заржавеет
За rust'ом не заржавеет
Мир-то ничего, но вот насчёт того, что кому-то здесь за новости о таковом возможно приплачивают, уже давно есть определённые предположения.
Противный rust не разрешает писать что-то вроде
int x[24];
char *y=x[-1];
и требует всякое, чему на курсах "как стать сеньором в с++ с нуля за две недели" не учат. Ну там не писать или читать по указателю если он не инициализирован или после того, как на указатель free сделано. Это нарушает мою свободу!!расрас
>создать соломенное чучело
>победить егоКлассика.
> rust не разрешает писать что-то вроде
> int x[24];
> char *y=x[-1];Воистину чудеса творит!
$ cat rust.cpp
// let us pray to great Cargo
void rust()
{
int x[24];
char *y=x[-1];
}$ g++ rust.cpp
rust.cpp: В функции «void rust()»:
rust.cpp:5:15: ошибка: invalid conversion from «int» to «char*» [-fpermissive]
5 | char *y=x[-1];
| ~~~~^
| |
| int
А это ничего что в примере я обращался к -1 элементу массива, то есть по факту - фиг знает куда?
> А это ничего что в примере я обращался к -1 элементу массива,
> то есть по факту - фиг знает куда?Это совершенно естественно, поскольку Вы не имеете ни малейшего представления о языке и std::array.
Мои знания C++ заканчиваются 11 версией стандарта, что после нее поменялось - без понятия. Но вот чужой код, в подобном стиле написанный, видеть доводилось. Обычно бывает когда ты на плюсы с обычного C приходишь и пишешь как там привык без всех этих контейнеров и прочего добра.
Знания плюсов начинаются с понимания концепции итераторов и контейнеров, их ввели ещё Степанов и Ли. std::array должен быть в стандарте 11 года. Лично для Вас я не полезу его цитировать -- Вы же его знаете и сами найдёте.
>Знания плюсов начинаются с понимания концепции итераторов и контейнеровИтераторы и контейнеры, которые stl-ные, это не более чем удобное приложение к плюсам, хоть и внесенное в стандарт. Если пишешь что-то, не обремененное требованиями, то сойдет их использование. В противном случае, никакого stl, там одни тормоза.На выхлопе код получает сильно похожим на Си, как не извращайся.
> Если пишешь что-то, не обремененное
> требованиями, то сойдет их использование.
> В противном случае, никакого stl, там
> одни тормоза.А если у меня есть реализация "stl", опровергающая мрии эксперта?
Вот и юзай сколько влезет, и не лезь к экспертам.
Так ты сам ко мне лезешь с антинаучной ересью.
Выдыхай, просто сообщил как оно у серьезных дяденек, а ты тут со своими мриями и фантазиями полез.
Скажи, кто из "серьёзных дяденек" тебя послал ко мне? И зачем он взял тебя в ученики, когда ты не умеешь смотреть ассемблерный листинг?
Феерически унылый пример, который разве что ну совсем уж чайник напишет.
А вообще обращение к отрицательным элементам может быть вполне осмысленным.
Но да, привычка себя ограничивать во имя - такая привычка.
> Феерически унылый пример, который разве что ну совсем уж чайник напишет.Либо выпускник какого-нибудь скиллбокса с нетологией. Их сейчас развелось как грязи.
> А вообще обращение к отрицательным элементам может быть вполне осмысленным.
Например? Не в целях флейма, просто интересно как может быть осмысленным залезание в чужую область памяти.
Почему в чужую? Если указатель на некий массив данных сознательно находится не в начале блока данных.
Но это всё опять идёт от той логики, которой сявки, не видевшие ничего кроме языкамов сверхвысокого уровня, вообще себе не представляют.
Вообще, operator[] может быть переопределён и вы там можете делать, что хотите. Другое дело, что стандартная сигнатура этого оператора подразумевает аргумент типа std::size_t, а не int. Так что индекс -1 - это немного странно, я такого никогда в рабочем коде не видел.
А что-нибудь вроде:
int x[24]; int y=0; int z=x[--y];Я вот видел и это был не мой код. Отловил когда сегфолты достали.
Ну это дичь, конечно, да.
Этот пример любой статический анализатор поймает, я думаю.
В то же время, если кто-то такое пишет, его надо отправлять учиться дальше, тут уже не важно на чём он пишет, его нельзя к коду подпускать, он и на rust найдёт способ себе голову отстрелить.
С чего бы дичь.
У меня поинтер может в силу определённых причин показывать например на элемент P=N+M, а мне надо достать элемент P-1.
Тихо ты, в их мире такого не бывает
А, фак, сорян, не на тот ответ ответил.
Это в продолжение моего поста выше об отрицательных индексах и логике.
$ cat q.c
#include <stdio.h>
int main()
{
int x[24]; int y=0; int z=x[--y];
printf("y: %d", z);
return 0;
}
$ gcc q.c -Wall -Wextra -Wuninitialized
q.c: In function ‘main’:
q.c:4:27: warning: ‘x[y]’ is used uninitialized in this function [-Wuninitialized]
4 | int x[24]; int y=0; int z=x[--y];
|
$ cppcheck q.c --enable=all
Checking q.c ...
q.c:4:30: error: Array 'x[24]' accessed at index -1, which is out of bounds. [negativeIndex]
int x[24]; int y=0; int z=x[--y];
^
q.c:4:20: note: Assignment 'y=0', assigned value is 0
int x[24]; int y=0; int z=x[--y];
^
q.c:4:30: note: Negative array index
int x[24]; int y=0; int z=x[--y];
^
q.c:4:7: style: Variable 'x' is not assigned a value. [unassignedVariable]
int x[24]; int y=0; int z=x[--y];
^
nofile:0:0: information: Cppcheck cannot find all the include files (use --check-config for details) [missingIncludeSystem]
Не используй cppcheck, возьми smatch, как белые люди.
При всём уважении к Расту, чтобы найти все ошибке в этом С коде достаточно собирать с gcc -Wall -Wextra -Wuninitialized и запускать cppcheck --enable=all.
В том то и дело, что код на Си. А заявлен автором как Си++. :)
А вы не подсказывайте xD. Подобные "примеры" лишь дискредитируют их авторов. И вообще проблемы с доступом к чужой памяти уже не слишком актуальны, если у разработчика достаточная квалификация, а более сложные проблемы, например, "висячие" ссылки им недоступны, т.к. те, у кого лишь поверхностные знания даже не будут знать как такое возможно.
> И вообще проблемы с доступом к чужой памяти уже не слишком актуальныЧта? Квалификация квалификацией а человеческий фактор никто не отменял. Если язык позволяет просто по невнимательности допустить настолько серьезные ошибки то это плохой язык. Мелкомягкие тоже все на расте переписывают, по их статистике 70% уязвимостей связаны именно с управлением памятью. Наверное там разрабы с недостаточной квалификацией работают?
Мы как раз и наблюдаем этот человеческий фактор. Автор примера по невнимательности перепутал языки, по невнимательности заявил, что std::array в стандарте 11го года отсутствовал, по невнимательности приписал свою компетенцию каким-то сказочным сеньорам-помидорам. Из этого сделал вывод, что Rust всех спасёт.
>Наверное там разрабы с недостаточной квалификацией работают?Удивительно, правда.
Дело в том, что тут в силу специфики сайта в основном программисты на Си, и они могут принимать вот те примеры за чистую монету. Мне довелось повидать удивительный код на плюсах, но обычно там вместо int x[24]; что-то типа vector<vector<string>>.
У вас часто есть желание такое написать?
Если да - рекомендую профильного специалиста от медицины.
У меня - нет. Зато у других судя по основной массе CVE есть и желание, и возможности.
>судя по основной массе CVEИ когда успел изучить большинство существующих CVE, чтобы такое утверждать? Это же сколько всего можно было "переписать на Расте" за это время, страшно подумать.
Это вы ещё вы битв насчёт явы не застали.Ух сколько криков было...все пройдет, как и net.Тишина какая то сейчас этой платформы,а сколько криков тоже стояло.
Это да, а ведь как рекламировали очередную серебрянную пулю))).
Ну, в отличие от этого, жаба с ботнетом таки заняли свои огромные ниши.
А это будет валяться примерно рядом с рубями и гошекой, и чего там ещё такого было.
так они не сами по себе заняли - за ними стояли огромные конторы и жирнющие стеки
Ну, жирнее гугла не видно :)
И джава и .нет не позиционировались как замена С. Раст позиционируется, на нём пишут драйвера, браузеры, операционные системы.
> И джава и .нет не позиционировались как замена С. Раст позиционируется, на нём пишут хеллоуворлдыFixed
>И джава и .нет не позиционировались как замена С.Ява обновлялась как язык общего применения.Есть реализация очень близкая к C.Просто эта была не "безопасная" ява,очень урезанная по проверкам,но лучше чем в С. Java SE embedded- не рекламируют,но до сих пор поддерживают.А про RTSJ не забыли ? (Real-Time Specification for Java)
Идея плоха тем, что rust до сих пор нормально не портирован на все архитектуры, которые поддерживаются C.
А что, sudo поддерживает какие-то эзотерические архитектуры?
Конечно. C гораздо проще портировать на новые архитектуры, по сравнению с rust. Пример – e2k. Но у rust и без e2k полно архитектур с tier не первой поддержки.
А что, так сложно добавить поддержку архитектуры в современный компилятор, который уже десятки архитектур поддерживает (и инфраструктура в коде заложена)?По-моему это плевое дело для одного, максимум нескольких full-time программистов.
Это лишь показывает абсолютную, крайнюю ненужность и нишевость этих архитектур. Ну значит и без sudo поживут))
Абсурдные нишевые архитектуры могут продолжать собираться из старых исходников на С. Я просто не понимаю проблемы, с появлением второй реализации на Rust, Си реализацию никто не отнимает и не удаляет. Ни разу не растоман, но некоторые вопли на оппеннете достигают истерии.
В основном считается что Антагонист неадекватен. Так что они испортят старую реалиазацию чтобы протолкнуть раст. И вообще они растут не техническими методами.
Я не верю, но таков путь, убедительного не очень много, но как со многими теориями заговора - они стоят на отражении правды.
Очень сложно. Особенно для архитектуры, которая в силу отсутствия рантайм-оптимизации превращает статическую оптимизацию в ад.
Мне кажется сложно придумать худший пример чем e2k...
Закрытый компилятор, полусекретная архитектура, сорцы, которые они были обязаны открыть, открылись по "счастливой случайности", отсутствие в свободной продаже, отсутствие производства, недоступность в 99,9% стран. Думаю он просто может служить эталоном ненужности.С другой стороны, у разбрабов e2k наверняка есть настолько круты спецы, что им добавить бек в llvm как два байта. Правда ведь))
Компилятор не столько закрытый, сколько непонятный тебе долгое время. Ты вообще там ничего не поймёшь. Чтобы не разбираться с дол***ми, объявили закрытым. Просто поверьте на слово - это вывих мозга. Но работает.LLVM там строго ортогонален. Он вообще не в курсе про dataflow.
есть смутное подозрение, что ллвм - не универсальное решение и сколь-нибудь легко к нему прикручиваются лишь некоторые архитектуры и их производные
всё-таки, Эльбрус - не очередной чуть перепиленный арм или х86
Пока не стояла задача имитации бурной деятельности и импортозамещения, была нормальная платформа SPARCv8 и SPARCv9. Если верить веб архиву, то до 2014 года оно работало на солярисе и горя не знало.
Ну а рас уж начали скрывать платформу своего железа и специально делать его несовместимым с оригиналом, то и портированием всего сами занимайтесь.
> А что, sudo поддерживает какие-то эзотерические архитектуры?sudo - нормальная *nix программа. Нужно очень постараться найти такую архитектуру где как-то запускается gcc (насчет произвольного cc уже надежды особо нет, хотя лет десять назад это и было возможно) и при этом не соберется или не будет работать sudo.
gcc, например, есть и для AVR. А вот sudo для AVR не нужен.
> gcc, например, есть и для AVR. А вот sudo для AVR не
> нужен.avr уже тоже низачем не нужен. И unix-like операционок для него не существует.
И да, ответь мне, совкодр-р - разделение привиллегий даже в самом низкоуровневом контроллере - это плохо или совсем плохо?
Раст для AVR не нужен тем более.
А у вас разве кто-то отбирает старый sudo?
На маргинальщину ставьте что есть, в чем проблема.
> маргинальщинуЭто rust.
>кто-то отбирает старый sudoПро systemd тоже так говорили. Альтернативы вроде бы есть, но все маргинальные, с кучей багов и отставании в развитии.
Так это проблема Devuan, Void Linux, Gentoo в том, что его пользователи занимаются бесполезной работой. Первые, так вообще не сумели построить свой дистрибутив, а тупо перепаковывают пакеты из Debian до сих пор. Вторые заняты бесполезной кастомизацией ради кастомизации из разряда "всё есть bloat, что имеет GUI". Третьи это любители компилировать всю ночь, чтобы на утро получить программу с невоспроизводимыми ошибками и совершенно того не стоящим ростом производительности.
Зато не СистемДэ, угу.
Gentoo не трогать! Там как хочешь. Хочешь с Systemd, хочешь без него. Не понятно, чего его все так боятся?
Заменить rust будет сложнее. А так же проблемы, что и в девуан.
Его не бояться. Просто не все получают удовольствие от процесса компиляции, разруливания ошибок Portage или подбор use-flags, чтобы выиграть пару процентиков и при это ничего не сломать.
Особенно если это обычный комп, а не суперкомпьютер какой-то.
Это время можно потратить на что-то более полезное.
> Его не бояться. Просто не все получают удовольствие от процесса компиляции...С Ваших слов, так кто-то кого-то силком заставляет компилировать.... Под дулом пистолета.... А он упирается, не хочет....
> разруливания ошибок Portage или подбор use-flags
Это делается один раз и надолго. Тем более, работа творческая, т.е. приносящая удовольствие.
Зато нет лучшего способа организовать себе единый линукс с единой конфигурацией на разном разношёрстном железе, всяких оранжей, бананов, малинок, коих сейчас расплодилось море и каждый со своим дистрибутивом. А Генту всех уравнивает.
Не то чтобы "силком заставляет", но гента подразумевает компиляцию всего там скажем by design.
Да, там появились бинарные оверлеи... но тогда какой смысл ставить генту.> работа творческая, т.е. приносящая удовольствие.
Сложно сказать, можно ли подбор флагов назвать творческой работой... но даже если так, не каждая творческая работа приносить удовольствие конкретному индивидуму. Кто-то хочет быстро все установить и начать писать код, или музыку, или рисовать. А не перебирать флаги.
> А Генту всех уравнивает.
Возможно это полезно. В некоторых случаях. Но не у всех есть зоопарк. И всем нужно уравнивание.
Вообще сложно представить, зачем нужна одинаковая конфигурация на рабочей машине, на банане-файлопомойке и напр. на малинке-приставке-к-тв. У каждой из них своя задача.
>Не понятно, чего его все так боятся?Потому, что измельчали нынешние линуксоиды, так называемые.
>>это проблема Devuan, Void Linux, Gentoo в том, что его пользователи занимаются бесполезной работой.ну они хотя бы не слабоумные, как всякие бубунтари.
А им не интересно бодаться с мастурбутивом. Они работу работают и развлечениями развлекаются. Для бубунтарей бубунтячка - это ОС для запуска прикладных программ.
Ну да, Киркоров тоже певец - песни ртом поёт и музыка, музыка у него хорошая.
Мы не о киркорове, а о бубунте. Поверь, многим нужно чтобы работало, а не то какая реализация судо сегодня.
Да, мы о бубунте.бубунта это помойка по принципу "А теперь со всем этим г... мы попытаемся взлететь..."
давно известно: что у человека на компе, что в бельевом шкафу, что в мозгах и жизни - бардак всегда один и тотже.
но удобненько, ибо пятой точке так нужен покой.
Ну так разве это не прекрасно - маргинальным платформам маргинальный софт!
Нужно только добавить маргинальных юзеров и баланс будет соблюден.
Забавно это слышать среди линуксоидов.
Только ты забыл один нюанс. В разряд маргинального переходит некогда стабильный и отлаженный софт. Точнее не сам переходит, а его туда загоняют пинками. Усилием левой пятки корпораций.
> некогда стабильный и отлаженный софтэх, если бы это было правдой))
я в комменте 2.17 уже кидал список проблем с безопасностью судо, причем это не все, а те что быстро нашлись по опеннету. Ведь сколько лет проекту... а их продолжают находить.
Так на rust не только sudo переписывают, но и под линукс уже драйверы клепают. Лет через 5 захочешь запустить старую железку, а тут выясняется, что всё. Сишный драйвер хоть и собирается, но по дефолту нигде не ставится, а следовательно никто даже не знает, что его поломали после n-й итерации по смене api.
Вопрос насколько железяка старая? Если AMD-k6, то antix-16 с очень даже современным софтом. Не знаю, стоит ли там с растом заморачиваться, но когда у тебя 96МБ ОЗУ, то как-то не особо хочется.
Или для самых хардкорных пацанулов всегда есть Красная Ненависть 9, та что 2003 года, с 2.4 ведром и сырцами ко всему.
Ну и второе.
Просто привыкнете уже, линукс - это корпорации. 80%+ разрабов на зп у корпов. Процент кода тоже зашкаливает.
Он существует на их деньги, он реализует их потребности.
Васяны-одиночки сейчас только и могут, что перепаковывать чужие пакеты в очередной нескучный девуан.
А тут без васянов-одиночек никак. Корпорации выпускают сырой и неотлаженный продукт вроде федоры, который через полгода можно уже выкидывать. Вот и приходится каждому лепить свою сборочку с более менее отлаженным софтом и как-то пытаться это дело фиксить и поддерживать.
Он впилился не сам-собой, а по желанию крупных контор
Что крайне наглядно показывает реальное отношение владельцев и дистров и многого иного ко мнению рядовых пользователей. Единственное на что им пока что оставили право - это быть бесплатными подопытными хомяками для тестирования и доработки системы
> На маргинальщину ставьте что есть, в чем проблемаа потом ты же будешь ныть про "ой че за зоопарк развели"
Так уже сейчас есть зоопарк. Точнее один типа "стандарт" в виде sudo и зоопарк всего остального.
А так судо просто переместится во вторую группу. И все.
> А у вас разве кто-то отбирает старый sudo?Хитрые маркетологи, продвигающие rust, отлично знают народ и что он выберет.
Можно подумать, выбор кто-то предоставит. Собрать старый sudo, конечно, никто не помешает, но сделать это смогут единицы с неограниченным свободным временем.
Программа не сложная, её по-любому кто-то сможет поддерживать в собирабельном состоянии. И даже пакеты собирать, или статические бинари.
> На маргинальщину ставьте что есть, в чем проблема.А вЫ себя к "золотой молодежи" причисляете или написали много качественного софта, чтобы так отзываться о легаси?
Причем тут софт, если речь об архитектурах?
Да, есть куча архитектур, которые устарели, процессоры для них не выпускаются, складские запасы исчерпаны и единственное место где их можно найти - на барахолках и в гаражах энтузиастов.
Более того, современные кода на них работают только в теории, потому что у разработчиков и ментейнеров обычно нет соответствующего железа для полноценного тестирования.
Тормозить прогресс ради них - крайне эгоистично.
>Тормозить прогресс ради нихНе хочу разочаровать, но переписывание работающего кода нельзя назвать прогрессом.
За вертолётные деньги тоже надо как-то отчитываться.
Фонды сами себя не освоят.
А при чём тут устаревшие архитектуры? Rust и на x86_64 не везде tier 1, не знал?
Виноват, надо было писать "устаревшие и маргинальные"
Заглянем в https://doc.rust-lang.org/nightly/rustc/platform-support.html, пусть будет для ночнушки, и посмотрим что там по x86_64 для не tier 1.Напомню, что
"Tier 1 targets can be thought of as "guaranteed to work". The Rust project builds official binary releases for each tier 1 target, and automated testing ensures that each tier 1 target builds and passes tests after each change."
"Tier 2 targets can be thought of as "guaranteed to build"Итого:
Tier 2 with Host Tools:
x86_64-unknown-freebsd
x86_64-unknown-illumos
x86_64-unknown-linux-musl
x86_64-unknown-netbsd
Ну, не густо, бздя и сорялка (оно вообщее еще шевелится? или уже даже вонять перестало?)
Может полтора васяна этим пользуются. Уверен что они саму смогут прогнать тесты.Tier 2
x86_64-apple-ios 64-bit x86 iOS - симулятор
x86_64-fortanix-unknown-sgx Fortanix ABI for 64-bit Intel SGX
x86_64-fuchsia Alias for x86_64-unknown-fuchsia - вопросы к гуглу
x86_64-unknown-fuchsia 64-bit Fuchsia - аналогично
x86_64-linux-android 64-bit x86 Android - аналогично
x86_64-pc-solaris 64-bit Solaris 10/11, illumos - еще более древняя солярка
x86_64-unknown-linux-gnux32 64-bit Linux (x32 ABI) (kernel 4.15, glibc 2.27)
x86_64-unknown-none Freestanding/bare-metal x86_64, softfloat
x86_64-unknown-redox Redox OS - ну, с этими все понятно, никто не будет тратить время на поддержку Proof-of-Concept
x86_64-unknown-uefi 64-bit UEFIИтого: во втором tier бздя, солярка, x86 версии андроида и фуксии и еще более редко используемые штуки.
В третий tier попала вообще всякая дичь, типа ВинХР, Haiku и куча эпловых симуляторов.Учитывая что Redox попал во Tier2 без Host Tools и оно нормально собирается, то tier 2 - это не проблема.
Добавление нового бэкенда в LLVM значительно менее трудоёмкая задача чем написание нового компилятора С. Так что со временем утюги именно ржаветь будут.
Очень просто: на тех архитектурах, на которые Rust не портирован, будет использоваться реализация на C
А можно лучше придумать что-то новое, а не заниматься переписыванием готовых и рабочих решений? Например, сделать так, чтобы sudo-костыли вообще не пригождались. Это было бы намного лучшей рекламой раста чем очередное переписывание. Но цель здесь одна - закрепить своё поделие в мейнстриме, чтобы про язычок никто не забывал, точнее, не пришлось не забывать.
> чтобы sudo-костыли вообще не пригождалисьНапрммер, как?
Ну вот на винде, которой пользуется тот аноним, никакие эти ваши суды не нужны, там есть нормальные методы повышения привилегий через токены имперсонации
Токены имперсонации нужны не для повышения привилегий (они и так есть у того кто их использует).
Или отказаться от самой идеи повышения привилегий, сделать привилегированные серверы, у которых через IPC все остальные процессы будут запрашивать действия, могущие быть выполненными или нет.
Угу. sudod.
Systemd-sudod
Давайте пройдёмся вкратце по объему работ, чтобы осознать что нужно, чтобы было как в венде:1. В Windows NT есть ACL/ACE на стороне ядра и есть стандарт SDDL.
Чтобы сформировать функциональный паритет, необходимо избавиться (перевести в легаси) от того наследия 70-х годов, которое стандартизировано в POSIX и предоставляется утилитами chown и chmod. Нужны Rich ACL на стороне ядра, причем так, чтобы они использовалист повсеместно, а не опционально. Есть несколько проблем с ACL в Linux:
Проблема ACL #1: То что в Linux называют POSIX ACL - это не стандарт, а непринятый черновик, который не встречается нигде кроме Linux.
Проблема ACL #2: То что в Linux называют POSIX ACL не достаточно "Rich", поэтому они и не стали стандартом. Нет поддержки утверждений (claims), conditional ACE, deny-правил и ограничено наследование.
Проблема ACL #3: То что в Linux называют POSIX ACL не является обязательным. В Linux всё работает через "chmod 755" и SUID-биты, а так называемые POSIX ACL (getfacl, setfacl) опционально сбоку.
Героически решив эти проблемы необходимо распространить их на все файлы, сокеты и процессы, стандартизировав дескрипторы безопасности.
2. В Windows NT есть разные типы пользовательских сессий.
Вход в систему организуется службой winlogon. При этом пользовательская сессия может быть сетевой, локальной, интерактивной, пакетной, служебной итд. В зависимости от того каким способом производилась аутентификация. В Linux вместо этого используется PAM, который понимает только локальные сессии и любой успешный вход в систему считает равным по привилегиям другому. Учитывая, что UNIX PAM - это очередная неудаха в вопросах стандартизации входа в систему, а Linux PAM - вольная реализация (NIH от Red Hat) этой неудахи, его проще выкинуть целиком, чем пытаться исправить. Главной проблемой PAM является отсутствие поддержки Kerberos 5 и невозможность повторно использовать TGT, полученный пользователем при входе в систему в приложении запущенном в той же сессии. На самом деле там проблем столько, что проще переписать с нуля, что собственно и порождает костылики вроде sssd.Процедура элевации (Запустить от имени администратора) - это комбинация п.1 и п.2. Вам нужны ACL на все процессы, файлы и сокеты и вот для интерактивных сессий предусмотрена такая возможность.
3. В Windows NT есть неотключаемая подсистема мандатного контроля и таргетированная политика и она работает поверх тех же ACL.
При этом Windows не использует выдуманные контексты и не пишет эту политику как в SELinux, там вся штука в SDDL. Существует понятие виртуальных дескрипторов безопасности. Они генерируются на службы, и приложения запущенные с пониженными привилегиями. Например, если приложение было установлено из магазина, значит его права ниже чем пользовательская сессия и ему создается виртуальный идентификатор пакета приложения в стиле S-1-5-90-... на основании уникального идентификатора приложения и идентификатора безопасности пользователя и ACL применяются к нему. Также у каждого приложения, которое установлено как служба заводится виртуальный SID, который доступен в форме UPN как NT SERVICE\myservicename. Ине надо сочинять 100500 всяких контекстов под софт из репозиториев и прописывать им глобальную политику внутри которой SELinux в ТРЕТИЙ РАЗ ПЕРЕИЗОБРЕТАЕТ ACL!!14. SUID-биты - это зло. Но от них нельзя просто так избавиться в Linux.
Вообще сама идея, что все файлы и все процессы имеют на себе дескрипторы безопасности и ACE и все работает относительно их быстрого расчета ядром, красива и прекрасна, но малореалистина на данном этапе развития юзерспейсных компонентов Linux. Нужно стандартизировать огромное количество подсистем, написать к ним права, написать утилиты, которые понимают это всё, а то уже с ping возникнут проблемы, если конечно не брать реализацию из юзерспейса. Windows NT же архитектурно построена так, что файловой системе нужно верить в последнюю очередь.5. Local Security Authority
LSAAS - это еще одна подсистема, которая убирает требования к постоянному перезапрашиванию локальных и сетевых паролей и постоянного дозахвата прав. Суть в том, что есть клиент-серверная служба, позволяющая получить доступ к сохраненным паролям, полученным билетам и кэшу аутентификации. Это то что в GNOME и Mac OS делает Keyring. И вроде бы в Linux Keyring есть, но он опциональный и только на то, что умеет с ним работать. Опять же, вызовы API к LSA также требуют аутентификации и авторизации и применяются те же ACL. Но там много всего и большая часть всего функционала там выключена. Именно на эту подсистему действуют "локальные политики безопасности". Я не буду перечислять всего, с чем она работает просто потому что и букв много получилось.И вот когда все это реализовать, изменить и стандартизировать, то количество обращений ко всяким sudo сведется к минимуму но не уйдёт.
Я напомню, что в Windows NT есть "вторичный вход в систему" seclogon - это служба, а не утилита. Она порождает специфический тип дескриптор и как раз и нужна для того чтобы запустить что-то от имени другого пользователя. При этом есть реализация в форме утилиты, но оно использует те же подсистемы. И это тоже нужно.> токены имперсонации
Токены имперсонации - это из области SSO. Всё то что я написал имеет отношения преимущественно к локальным подсистемам, кроме пары слов про Kerberos.
Если мы начнем вспоминать про netlogon, про его делегирование на локальных службах, про Kerberos-учетки для компьютера и виртуальную учетную запись NT AUTHORITY\NETWORK SERVICE и сверху припорошим это встроенной поддержкой SAML2 и с некоторых пор OAuth2, то мы уйдем от реальных архитектурных проблем в юзерспейсе Linux, которые вынуждают использовать sudo и su на каждый чих. Сетевые протоколы аутентификации и авторизации в Windows реализуются именно поверх того, что есть, потому что кто-то когда-то в 90-е заоверинженирил Windows NT настолько, что своими стандартными подсистемами она способна реализовать и новые протоколы, хотя в те годы OAuth2 и в планах не было. При этом те функции SSO, которые использовались в NT в те годы выброшены на свалку истории и отключены по умолчанию больше 5-лет (NTLM-привязки пользователей заменены на сертификаты, CredSSP выключен, Digest тоже уничтожен в пользу современных SSO-протоколов).Тут всё дело именно в архитектуре. Той самой архитектуры ядра и юзерспейсных подсистем, которая вся такая несовместимая с миром UNIX и изначально пришла из VMS.
Это интересный обзор.На практике реализация и использование всего этого оставляет желать лучшего, и юзеру весь этот избыточный функционал не нужен, он его не понимает.
А lsas постоянный источник лулзов для извлечения паролей от чужих учёток и дальнейшего захвата сети.
А вот нефиг SeDebugPrivilege всем раздавать. Ну и шо S-1-5-32-544, шо uid=0 - если они уже есть, все секреты системы в итоге доступны.
"в 90-е заоверинженирил Windows NT настолько"что её можно сейчас использовать со всем описанным без всяких апдейтов и сервис-паков, в которых сколько раз всё попеределывали, ломая всё по пути вплоть до невозможности подключения по RDP. Самому не смешно?
Восхищаться системой безопасности Windows с её абсурдными блокировками пользователей по логину - мне кажется это надо совсем дураком быть.
Спасибо, коллега. До меня только сейчас дошло, что г***ны из Microsoft позиционируют себя как единственную альтернативу против монополии Google/Linux. Теперь я горячий сторонник BSD.Завтра же поставлю себе NetBSD desktop. Ну, хотя бы в виртуалке...
Я нифига не понял. Какие-то дескрипторы безопасности ... Зачем всё это надо? Это что-то, дающее тот же эффект, что и pledge + unveil, нш требующее больше усилий от программиста?
> нш требующее больше усилий от программистаИменно так. Весь мировой опыт разработки ПО кричит о том, что баги и уязвимости появляются именно в тот момент, когда требуются любые усилия от программиста. Внедрять механизмы работы с привилегиями в прикладуху — только напрашиваться на неприятности. Прикладной софт вообще не должен быть озабочен такими тонкостями как жонглирование привилегиями. Можешь — читай-пиши. Не можешь — падай с ошибкой. Дядя администратор потом разберётся каких формочек в твоей песочнице не хватает. Но нет, мы застряли в семидесятых со святой верой в магию цифр.
М-да, спасибо что подробно описал то, что я называю двумя словами "давно пора". Хотя, о чём речь если в прыщовнике нет даже реестра??Кстати, в винде есть sudo - runas /u:Administrator myvirus.exe (как-то так)
и ты в эксперты подался?Это не sudo, это точный эквивалент su. Требует знания пароля или эквивалента того юзера от которого запускаешь.
Причем от администратора - ТОЖЕ требует.А для остального существуют другие технологии. Там выше их тебе описали но сдаетца мне эксперты опеннета ниасилят даже такое разжеванное переварить.
> Это не sudo, это точный эквивалент su.Ты уверен? su - это switch user, позволяет сменить личность, su do - разово выполнить команду от юзера. Как раз то что делает runas. И то и другое просит пароля. Могу ошибваться, конечно, пишу в полусне.
Уверен. Удивительная каша у тебя в голове. Казалось бы это должен понимать в оппу пьяный админ спящий в луже своей блевотины под столом, поднятый звонком в три ночи.su - изначально инструмент _админа_. Знающего рутовый или эквивалентный ему пароль, вестимо, и работающего с доверенного терминала. Как и runas (только тут надо знать еще и второй пароль, одним админским не обойдешься).
sudo - изначально инструмент _юзера_, которому мы хотим дать возможность выполнять _некоторые_ действия от рута или еще кого, но пароль этого кого сообщать не хотим или не хотим чтоб он его тут набирал, возможно работающего из недоверенного подключения. Про бубунтиную идиотию с заменой вторым первого мы не говорим - это частный случай, совершенно, феерически ненужный.
(Но, кажется, эти дятлы именно его и собрались реализовать потому что ничего другого не умеют - не админы они.)
sudo su -
> sudo su -не смешно вот - пол-стековерфлова в таких рецептах.
И уже на серверфолте тоже начали попадаться.
Да я уже давно ничего этого не делал. Прописал на единственной винде runas /u:Admin ramdrive.exe и збс. И так 10 лет. )Я бы не сказал что убунта - это частный, прям, случай. Вернее, только с ней, в основном, и контактировал. Делать sudo su меня убунта и научила :D
>SUID-биты - это зло.Наоборот, зло - это ты и тебе подобные. Не лезь к нам.
Это эпичная классная простыня, осталось понять, почему везде, где нужна безопасность, ставят линь, а винда считается маргинальной десктопной хренью, которую даже с серверов почти везде выпилили.
> прописывать им глобальную политику внутри которой SELinux в ТРЕТИЙ РАЗ ПЕРЕИЗОБРЕТАЕТ ACL!!1И тут я вспомнил как хлебнул этого %s когда начал настраивать "простую" шару по самбе. Сперва три семёрки, потом липкие биты, потом ACL+user_xattr, потом хотел уже selinux (но в дебиане их ещё не было)... Госпатефон, какой же это ужас!!! Пока всё это настроишь... хотя, это не настроишь. Потому что логика хоть и страшная, но недостаточно гибкая. И дремучая. Натягивать нормальные ACL на юниксовую систему юзер-группа - это, ну, хуже всего.
>> прописывать им глобальную политику внутри которой SELinux в ТРЕТИЙ РАЗ ПЕРЕИЗОБРЕТАЕТ ACL!!1это он еще забыл про nfsv4 acls. Которые близки к posix но нет.
(потому что ОПЯТЬ позиксное недоразумение оказалось неэффективным и неполноценным и пришлось переизобрести его заново когда понадобился доступ не только руту и вон тому васяну да еще из разных точек сети)
Три семёрки, по всему Союзу... Полностью согласен, что система управления правами в Linux'е слишком стара. Отсюда растут такие вещи, как мандатные метки и прочее.
Все намного проще. Микрософт уже давно готова отдаться линуксу, потому что по словам тех же разрабов винды, они не до конца понимают как у них там все устроено. Но линукс такие обсерщики, что лучше будут переписывать то, что т есть на разных странных языках.
[i]чтобы было как в венде[/i] - можете мне как не специалисту нафига вообще нужно, чтобы было как в венде? Там плюс какой-то большой есть? Особенно с windows не работал и плохо себе представляю, какие проблемы это всё решает.
> нафига вообще нужно, чтобы было как в венде?в венде та же устаревшая модель безопаснеости что и в Linux только в профиль, вот что нужно
>Ну вот на виндеЗнаем мы, как в Винде. Там каждый хомячок адиминистратор локалхоста.
как во многих андройдофонах - пользователя тупо не допускают ни до каких привилегий
Можно, разрешаю
Ты опоздал лет на 30. Plan9 или его живая реализация 9front уже сделаны и там нет нужды в su или sudo. И кстати никакого раста!
Учитывая качество sudo, хуже быть уже не может. Он него ж даже в OpenBSD отказались
> Он него ж даже в OpenBSD отказалисьНаверное, потому что в sudo нет встроенного remote shell, как в OpenSMTPD.
> Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами и учёт времени жизни объектов (области видимости), а также через оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.Зачем это в новости к реализации sudo? Может тогда будем так про каждый язык писать в новостях? Проводить обзор языков.
Да, ты прав.
Вместо этого бесполезного, и уже всем надоевшего текста, лучше бы привели ссылки на CVE в sudo:
https://www.opennet.me/opennews/art.shtml?num=58507
https://www.opennet.me/opennews/art.shtml?num=54474
https://www.opennet.me/opennews/art.shtml?num=51675
https://www.opennet.me/opennews/art.shtml?num=54394
и т.д
Чё мелочится. Взять и переписать всю библиотеку Glibc, Coreutils и все базовые компоненты на Rust.
В Андроиде стандартная библиотека C написана на C++ и ничего, живут. Так что рано или поздно, кто-то и с растом это провернёт. А coreutils они постоянно пытаются переписать с переменным успехом
Так андройд эта та еще помойка, на которую еще в 2014 забили болт самые упертые энтузиасты. Теперь это де-факто дружественный проект производителей смартфонов, без посторонних. Линейка делает скорее косметические изменения и сильно не поспевает за гуглом и уйти от гугла не может (например добавить программный доступ к прослушиванию звонков или отменить автоматические разрешения для установленных приложений), остальные тем более. Так что живут они весьма условно, примерно как playstation на freebsd со своим графическим пайплайном. Оно как бы есть, но вещь в себе, трогать нельзя.
> Так что рано или поздно, кто-то и с растом это провернёт.уже переписали на расте - redox называется, только пользователей нет, память течёт слишком сильно и комп работает не больше часа.
Вообще coreutils уже переписывают - https://github.com/uutils/coreutils.
И думаю через годик-два смогут достичь паритета.
Возможно и Glibc перепишут.
> Вообще coreutils уже переписываютС Gargo в придачу.
>через годик-два смогут достичь паритетаПомнится, годик-два назад говорили то же самое. Так и запишем - в любой момент времени coreutils на Rust будут готовы "через годик-два".
Нормальная идея, так и сделают, надеюсь. А то всё подряд на недоязыке говноСи пишут и дыры и тут и там. Да, бывают логические ошибки, но школота которая системный подход и человеческий фактор отличить не может только и делает что накидывает на вентилятор вроде "Чё мелочится. Взять и переписать всю библиотеку Glibc, Coreutils и все базовые компоненты на Rust.". Согласны?
Я только одного не понял. Если цель авторов писать исключительно на rust, то на кой ляд надо писать libc на этому расте?
Имеется в виду скорее та часть glibc, которая posix, а не которая С.
чтобы мульон непереписанных небезопасных Си/С++-программулин, до многих из которых даже их авторам уже дела нет, могли пользоваться безопасной системной библиотекой, которую уже так просто из этой самой программулины не проэксплойтишь.
> Я только одного не понял. Если цель авторов писать исключительно на rust,
> то на кой ляд надо писать libc на этому расте?Самые критичные части ОС должны быть безопасны, т.е. ядро и основные библиотеки, вроде openssl, libz. Это убережёт от условных 80% проблем. Т.е. ядро и эти либы должны быть написаны на Rust. Если вам хочется писать на Сях-х**ях, пожалуйста, но вам гарантируется безопасность и предсказуемость libc (хотя это уже librust, но не важно, posix интерфейс кароч). Т.е. это guardrails but not gates, безопасный интерфейс для имбецилов с топором.
> переписать всю библиотеку GlibcУже. Причем коммиты почти каждый день.
При чём тут GLibc? Это же Re(s)dox like.
> При чём тут GLibc? Это же Re(s)dox like.При том, что
>Supported OSes
>Redox OS
>Linux
relibc is a portable POSIX C standard library written in Rust. It is under heavy development, and currently supports Redox and Linux.Чукча не читатель.
Да похрен, что оно supports Linux. Для Linux стандартом является GLibc API, а не просто POSIX. Да и GLibc под православной лицензией к тому же.
Ты хотел сказать почти каждую неделю?
> Ты хотел сказать почти каждую неделю?Я сказал то, что хотел. А ты прочитал, то что удобно твоему манямирку. Мы разные.
doas из OpenBSD портировать?
Оно несовместимо, имеет совершенно ушлепский язык конфига, причем реализующий примерно ноль фич из поддерживаемых sudo.
И при этом оно от тех вот ребят которые rce от рута умудрились в простейшем smtpd оставить. (Видимо потому конфиг и ниасилили - трезво осознавая что распарсить его и нигде не исполнить ненароком какой-нибудь код не смогут)Просто эталонный мусор.
> И при этом оно от тех вот ребят которые rce от рута умудрились в простейшем smtpd оставить.Поделись пожалуйста ссылкой на проблему!
зачем такие продвинутые темы, если еще не освоили поиск в интернете? я за 5 минут нашел:https://vk9-sec.com/opensmtpd-6-6-1-remote-code-execution-sm.../
был лучшего мнения об OpenBSD
Вся хваленая безопасность OpenBSD - это безопасность Неуловимого Джо, лол.
>безопасность Неуловимого ДжоКак что-то плохое. Немногим хуже безопасности Черного Ящика.
OpenBSD большей частью очень дубово написана.Это скорее не безопасность неуловимого Джо, а безопасность двух стальных шаров.
в интересное время живём, товарищи.
из разряда когда коту нечего делать....
Про каждый чих на расте будут писать?
Если есть новости про что-то достойное из мира сишечки - милости просим.
Кнопку "добавить новость" думаю сможете найти самостоятельно.
Звучит как "если есть что-то более достойное, чем вода"
У малявок мировоззрение искажено на столько, что не видят сук, на котором сидят
А они собирались с поддержкой Cargo?
Ставлю 100$ что в нем будет больше уязвимостей чем в оригинале
ставлю столько же что его не допишут
> уже опубликована предварительная версия Sudo-rs, пока не готовая к повсеместному использованию.то есть фсе нормально - жужжатель не жужжит, но и в ...пу не лезет.
Главное ж опубликовать. Ну и деньжат немного поклянчить. "До конца 2023го года" ребятишкам на пивасик хватит а там еще что-нибудь придумают переписывать."сосредоточены на написании библиотеки" (а у sudo есть какая-то "библиотека"? Але, это утилита, вы бы еще библиотеку к wc написали - без самой wc.)
И так у хрустиков всъо. И ни одного доведенного до конца проекта где что-то бы написали, а не "начали переписывать".
работа кипит, бурлит
Прямо вижу новость из 2030 года:
И вот, по прошествии многих лет, в нынешнем году наконец все утилиты, дрова и компоненты линукса были переписаны на раст. Пусть потрачены годы календарного времени, а трудозатраты исчисляются десятками и сотнями миллионов человеко-часов, мы получили линукс... образца 2022 года, когда и начали активно переписывать, но зато на расте. И его кодовую базу надо срочно актуализировать, ведь за эти годы язык активно развивался
Ну нет, так быть не может. Чтоб за какие-то семь лет ВСЕ переписать (а не начать переписывать, как вот эти) , даже без учета ядра линукса - это ты хватил.Сколько там эскопета стреляет только себе в оппу, пять уже, я не обсчитался? Это при стабильном потоке бабла! (И всем карго впридачу и еще пол-гитхаба)
Мне кажется, при таких чудовищных трудозатратах можно было бы уже даже мертворожденный gnash допилить до более-менее работоспособного состояния. Если бы пилить а не "appease clippy" каждый второй комит.
Ну так это жи руст, он все автоматически делает безопасным и легким. На магии же работает, не иначе. Запустил компилятор, лег спать, а на утро уже ядро переписанное. Все хорошо, только не запускается.
> Ну так это жи руст, он все автоматически делает безопасным и легким.ну да, самый безопасный код - который вообще не запускается и не работает, потому что недописанный.
Я эту эскопету каждый раз поминаю злым тихим словом ровно потому что ну уж казалось бы _самая_ та ниша хруста - во-первых это НАДО переписать, потому что оригинал умер, во-вторых ему хорошо от умения хрустокомпилятора сразу и в нативные бинари и вебасм и все это с поддержкой графики сразу и из кор...карги и вообще кучей готового или полуготового кода. И куча людей заинтересована и готова платить. Но НЕТ, блжад. Никак не получается повторить даже gnash - ненужное ненужно сделанное ради всего хорошего и шва6одки (то есть совершенно бесплатно) за пару лет полутора энтузиастами на от...сь.
На plain C.
> Прямо вижу новость из 2030 года:
> И вот, по прошествии многих лет,
> в нынешнем году наконец все утилиты,
> дрова и компоненты линукса
> были переписаны на раст.Ты почти всё правлиьно предугадал.
Не угадал только язык.
В 30-м году будет очередной новый язык, на котором будут переписывать опять все эти su да sudo для оправдания необходимости существования этого очередного нового языка. :-)
Назвали, надеюсь, sRudo и sRu?
Не, последнее это уже дискредитация!
А , ты догадливый мог бы быть Engst или Enst благодаря генерации получили язык уровня ч , только страна продала свои интересы как тольо все переехали из всяких других профессии или хобби и украло чужое будущее наделав ев этом тепло выделении денег из нос бюджета через мишу тем людям которые не заслужили , а пришли на халяву на уже созданную чужими усилиями ос то обычно так все и выходит , вам лишь интересно поддельное так как сообщество сгнило и не только в этой сфере.
Что это за бот подскажите? Я тоже хочу такой генератор шизофазии.
А вдруг это не бот? Чувак реально так мыслит.
Он мыслит достаточно связно, если постараться и прочесть. С пунктуацией проблемы и имя написал с маленькой буквы. Вероятно, видит не очень и пишет с телефона, который и меняет "нац" на "нос".
Если достаточно долго искать смысл, то вы его обязательно найдете, даже если изначально его там не было (C) сэр Людвиг Ван Изиштейн
Действительно. Смысл сообщения выше "я умею нажимать Ctrl+C и Ctrl+V".
За SRU Орацле засудит.
ну букаффки ж в другом регистре ...
ios и iOS - одно и тоже ?
С главного зашли, где привилегированный пароль светится.
В придачу и связка с Lets Encrypt ) Грубо работаете, господа. Вполне вероятно на своё sudo они завяжут свой сервис сертификатов )))
> Дополнительно в планах упоминается поддержка SELinux, AppArmor, LDAP, средств аудита, возможность аутентификации без использования PAM и реализация всех опций командной строки sudo.Планы подозрительные. Среди всего разнообразия они выбрали это. Кстати, полноценную утилиту sudo они намереваются представить позже (Ведь это не главное ;-)...
> В будущем планируется создать библиотеку, позволяющую встраивать функциональность sudo в другие программыИдиоты что-ли? Какая нахер библиотека, это уже есть в линуксе.
Это же растоманы. Они и PAM решили переизобрести. Хипстеры, сэр.
> уже опубликована предварительная версия Sudo-rs, пока не готовая к повсеместному использованию.
> В настоящее время работа сосредоточена на реализации в Sudo-rs функций, позволяющих использовать утилиту в качестве прозрачной замены sudo в типовых сценариях использованияНе понял, а что вообще сделали-то? Запилили README.md, COPYING и надули щёки?
Это все потом, сперва надо CODE_OF_CONDUCT.md дописать
На днях посмотрел сериал Консультант 2023. Не удивляет )
Судо это не та помойка в которой все ошибки логические? Я думаю, эзотерический ЯП тут очень поможет с логическими ошибками. А су чё переписывать?
Ты потерял веру в раст, десять плетей тебе.
А утилиту yes уже портировали? Или для это тоже надо гордо окрестить проектом.
Да, причём сделать это не так и просто как кажется с первого раза
https://endler.dev/2017/yes/
Обязательно надо, а то все зажрались - базовые утилиты не тормозят!
Главное - чтобы памяти побольше занимали и жрали. Для этого нужно побольше зависимостей в Cargo.lock напихать. И чтобы каждой зависимости по 3 версии было.
https://github.com/search?q=repo%3Amemorysafety%2F...> MEMORY SAFETY
> UNSAFEОгонь!
Охонь, там стоит запрет на unsafe и 1-2 место где юзается (кроме мест где есть запрет)
И там же...
/// * The messages from PAM are assumed to be formatted correctly.
Неплохое решение.
Как раз sudo подходит под переписку на RUST 🦀 больше всего.
не согласен! больше всего подходит виндовс! судорасты должны реализоваться и доказать что что их язык чего то стоит только переписывание виндовса! удачи им!
так ресдох же ж уже переписали... только оно сдохло, ну, все занялись более новыми и модными вещами - вот, к примеру, давайте sudo перепишем.
Ещё немного допереписывают жеж. Ещёнемногопочтиготово.
Раст уже в ядре Винды.
Значит, sudo таки не очень необходим ;)
На хрена ?! Изобретать уже изобретенный велосипед
Потому что уже изобретённый велосипед слишком ненадёжен
А с чего ты взял что переделав велосипед ненадежными ржавыми материалами он станет надёжнее?
Есть только один способ проверить
Нет уж способов полно и теоретические расчеты и аналогии и история. И все говорят что коммунизм в отдельно взятом языке невозможен.
Если переписывать не построчно, а разбираться в том, как оно работает, учитывая недостатки и пытаясь их исключить в новой реализации, то всегда получается лучше (если у разрабов соотв. квалификация).
Это так, но какова вероятность, что переписывальщики на Раст именно так делают? Скорее всего вероятность низкая, причем для любого ЯП.
Вероятность высокая. Говорю как разраб, - если принимается решение что-то переписывать, то оцениваются все аспекты. Вот, к примеру, в прошлой новости https://www.opennet.me/opennews/art.shtml?num=59044 скорость прохождения некоторых тестов после переписывания увеличилась, и это не просто от смены языка.
Вот и жри холодную мокрую рыбу и задирай зайцев в лесу,
подтирайся лопушком и пей из речки, а прогресс не нужно
останавливать... Что за черты брать и тормозить других...
Ладо сам бы тормозил бы, так нет же свою тормозную фыилософию
распологает на других...
- Здрасьте!
- Перепиши на расте!
Ничёсе утилизация...
Да ладно, по крайней мере нашли себе занятие.
Чем бы дитя не тешилось...
>По данным компаний Microsoft и Google около 70% уязвимостей вызваны небезопасной работой с памятью.По данным Анонимов Опеннета, 90% уязвимостей в suid-утилитах вызваны не работой с памятью, а небезопасной работой с символическими ссылками.
"использовать утилиту в качестве прозрачной замены sudo в типовых сценариях использования (конфигурации sudoers по умолчанию в Ubuntu, Fedora и Debian). В будущем планируется создать библиотеку, позволяющую встраивать функциональность sudo в другие программы, и предоставить альтернативный метод настройки, дающий возможность обойтись без разбора синтаксиса файла"только у меня одного ощущение что это переводится как они банально ниасилили парсер конфига и даже не собираются в будущем его делать?
Почему сразу ниасилили? Может просто не хотят, чтобы кто-то читал конфиг.
там выше уточнили что читать параметры командной строки они тоже только "планируют". А пока что-то руки не доходят... Или это не руки у них?
Параметры тоже не надо читать. "Планируется создать библиотеку" -- значит слинкуют с новыми приложениями и будет все очень безопасно. :)
> не хотят, чтобы кто-то читал конфиг.- гражданин, вы зачем бюллетень читаете?
- да вот хочу узнать, за кого я голосую?
- вы что! не знаете чтоль что у нас голосование тайное?
Рулез, это мы берём.
Скажем дружно, нам ненужно.
А какая разница, на каком языке что написано?
Языки программирования ведь отличаются словами, акцентом и литературными правилами наверное только.
Почему тогда оно на Хаскеле не написано если нет разницы?
Ага, чем эзотеричнее язык, тем лучше.
Как раньше были systemd-free дистрибутивы
Должны скоро появиться rust-free дистрибутивы :)
Уже есть https://www.hyperbola.info/
Ну, хруст почти добавлен в ГЦЦ, значит можно.
...но не нужно.
"С упорством достойным лучшего применения..."
пусть венду переписывают. интересно, сколько стоит pr языка разработки.
там какой-то индус с хаером уже начал. Пока правда неочевидно, включат его код в винду или его уволят по сокращению за продолб года рабочего времени на переписывание и так работающего с ровно нулевым выхлопом.
А на кой чёрт, кто-нибудь докапывался уже? Бюджеты что ли пилят?Если переписать coreutils на rust прекрасно объяснялось шагом в сторону смены лицензии, то sudo, он же вроде как и так на ISC, равно как и BSD-шный doas. Зачем его-то на rust переписывать?
Выдавить старых разработчиков и взять эти проекты под свой контроль.
чтобы вот - что?!sudo если не гоняться за совместимостью (а как вот эти - параметры не поддерживаем, конфиг читать не умеем, "совместимы с типовым сценарием использования в убунточке"
(напоминаю типовой сценарий из двух строк:
root ALL = (ALL) ALL
%sudo ALL = (ALL) ALL
- остальное там комментарии)
- примитивная программа на два часа работы студенту-второкурснику, только-только прочитавшему раздел книжки про uid/euidНу потом он от профессора огребет, конечно, за детские ошибки (тема с euid одно из самых мутных наследий 70х, хуже только detach from controlling tty), и все переделает еще за пол-часика, но в целом оно даже будет работать, особенно в линуксе линуксе и линуксе (потому что больше нигде эта поделка и не будет).
Чтобы сделать полноценный парсер - надо либо освоить какой-нибудь лексический анализатор (поскольку синтаксис sudoers специально для них делался) либо просто быть очень внимательным и аккуратным, второе сложнее. Работа уже посерьезнее, за курсовик сойдет, да и отдельную новую тему про лексические анализаторы и bnf надо изучать.
В целом тоже ничего такого с чем один отдельно взятый студень не управился бы за семестр вполне параллельно с опи3дюливанием за физику и китайский язык.
>чтобы вот - что?!Чтобы опубликовать новость на опеннете и вызвать шквал комментариев.
> возможность аутентификации без использования PAMPAM хорошая технологии, её нужно поддерживать в системах и программах, как и tcpd.
> По данным компаний Microsoft и Google около 70% уязвимостей вызваны небезопасной работой с памятью.
> Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами и учёт времени жизни объектов (области видимости), а также через оценку корректности доступа к памяти во время выполнения кода.В *NIX проверки принято делать во время выполнения. Иначе как дать гарантии корректности. И это достигается не только за счёт компилятора: https://www.opennet.me/openforum/vsluhforumID3/129886.html#310
Но и самой архитектуры, CPU + ядро OS: https://www.opennet.me/openforum/vsluhforumID3/129886.html#351Пример корректного GNU/Linux: https://www.opennet.me/openforum/vsluhforumID3/129886.html#309
При этом все "C-ишные дыры" есть неэксплуатируемые, а "дырявая" прога падает с записью в подробный лог ошибки.
Раст это попытка добавить ещё дыр.
О расте и всех его адептах, и разведенном ими хайпе, есть одно стойкое впечатление, как о каких-то деятельных Остапах Бендерах, которых понесло. У них даже не хватает мозгов понять, что именно делает программы сложными и отчего они подвержены появлению дыр, и что это вовсе не из-за ЯП. Когда адепты раста перестанут онанировать на публику и напишут что-то сложное и массивное, вроде FS какой-нибудь, вот тогда пойдем и посчитаем, сколько у них там будет CVE. В лучшем случае, их будет не меньше, чем в прогах на Си.
Они не смогли самый просто браузер написать на этом язычке. О каком сложно проекте ещё говорить.
> О расте и всех его адептах, существующих лишь в фантазиях опеннетных Военов Супротив Раста и разведенном ими хайпе, есть одно стойкое впечатление, как о каких-то деятельных Остапах Бендерах, которых понесло.Пофиксил, не благодари.
> У них даже не хватает мозгов понять, что именно делает программы сложными и отчего они подвержены появлению дыр, и что это вовсе не из-за ЯП
> вроде FS
> прогах на СиОпеннетная Экспердиза так и прет.
> напишут что-то сложное и массивное, вроде FS какой-нибудь, вот тогда пойдем и посчитаем, сколько у них там будет CVE. В лучшем случае, их будет не меньше, чем в прогах на Си.
https://github.com/redox-os/redoxfs
Начинай считать, не забудь сравнить с сишным хелловротом, чтобы обязательно "победить" и не выставить себя очередным опеннетным подгорельцем^W балаболкой.
》 https://github.com/redox-os/redoxfs
Начинай считать, не забудь сравнитьЭто то что в проде не используется и не обкатано? А ты хорош.
Вместо того, чтобы решать задачи, которые не решены, программисты по сотому разу делают одно и тоже, вопрос на фига?
Добавлять фичи в существующие проекты очень сложно, менеджерам это не впаришь. А вот переписывание на безопасТный язык менеджер хавнет за обе щеки.
> Добавлять фичи в существующие проекты очень сложно, менеджерам это не впаришь. А
> вот переписывание на безопасТный язык менеджер хавнет за обе щеки.Да не сложно, просто фичи должны быть нужны потребителю. И таких фич в достатке.
Ну вот тут я несогласный ...Язык новый шишек ещё не набили ... И ещё не пришла вторая итерация, связанная с искоренением "детских болезней".
Как раз обкатывать язык на уже устоявшихся решениях, чтобы посмотреть, что и как реализовывается, есть ли выигрыш (или проигрыш) при реализации. Ну, в некоторых случаях, обнаружить узкие места и взглянуть на их реализацию по новому.Что касается хайпа, и я и другие вспоминали Java. Как её только не внедряли ... До сих пор у меня в памяти установка NetWare 5, когда для установщика (на Java) надо было доустановить памяти, а потом её можно было просто убрать. Так что пена сойдёт, а ниша останется.
Ну и резюме. Проблема раста (чуть не написал R..T - пришлось бы писать, что пост к компании владеющей торговой маркой не имеет отношения), как ни странно, в его апологетах. Детям показали игрушку и сказали, что она приведёт их в светлое будущее - главное в это верить. А остальных- русттрелять ...
Ну и по поводу переписывания. По мне взяли бы какую-нибудь устоявшуюся утилиту - ну типа busybox и переписали. Просто тупо переписали ... Я думаю, года бы хватило, а если бы навалилось > 5 разработчиков, дети бы научились ещё и управлять командой, тоже нужный скилл. А потом выпустили отчёт (ну или книжку ... Да ролик на трубе ...) "Как мы переписывали busybox". С какими проблемами столкнулись, как их решали, лучше или хуже получилось ... И это бы индустрии раста помогло бы гораздо больше, чем сотня никому не нужных начатых "глобальных" проектов. На которые, как дети в песочнице, набигают, потом бросают набигая к следующему куличику.
вся эта суета с RUSTом и переписыванием всего и вся, напомнила мне эссе "Одиссей из Итаки" из сборника Абсолютная пустота Станислава Лема.
Там про поиски и класификацию гениев разных классов и их трудов...
В тех поисках, среди прочих, был найден один первоклассный чувак который изобрел альтернативную более эффективную математику.
Ученые мужи сошлись во мнении что труд монументальный, эффективность неоспорима, НО при существующей системе повсеместного использования старой математики, чтоб понять новую математику надо самому быть гением, а чтоб все это внедрить и вовсе непонятно с какого краю подойти к проблеме, так как усилиями единиц, способных осознать профит от новой методы, не хватит чтобы преодолеть течение "реки" устоявшейся повсеместно внедренной системы.
Да и вобще там гг Одиссей в конце рассказа себя осознал гением такого колибра, что и должности подабающей такому человеку несуществует. Очень напоминает адептов RUSTа, разбирающихся во всем лучше всех, единственных знающих знающик как надо!
>В будущем планируется создать библиотеку, позволяющую встраивать функциональность sudo в другие программыЕще бы линковать системные программы с этим нечто. Это уже не мечты растоманов, это уже тяжелые галлюцинации.
Проект по утилизации утилит sudo и su на языке Rust
》 предоставить альтернативный метод настройкиКакой и как?
Я так понимаю что к созданию Rust причастна майкософт ???
Нет, они просто влились в общемировой заговор.
Ни с D ни с C# не прокатило, вот новый язык ...
когда пояаился Rust, Майкософт пытался запились какой-то свой Ррастоподобный язык. Не прокатило. D они никогда не развивали, C# за пределы экосистемы Windows не смог перешагнуть.
Нет, не пытался.
Ты голову из своего зада вытащи и узнаешь много нового для себя
> и предоставить альтернативный метод настройки, дающий возможность обойтись без разбора синтаксиса файла конфигурации sudoersТут, хотя бы, идея есть, ради чего пишут.
Другое дела, что идея кажется странной. Но вдруг родят чего-нибудь дельное. И, спустя некоторое время, это дельное могут перетянуть и нормальный проект.
дельное - сделают конфиг в виде JSON (патамучта не умеют ни во что остальное)
Ну что ты, что ты - у них наверняка найдется готовый crate с yaml, xml и может быть даже asn.1 (но это неточно, в нем много unsafe)Вот с парсером этого странного формата sudoers - пока что-то не попался, но они старательно ищут и может быть даже найдут.
Сразу после этого пойдут искать парсер командной строки.
А на расте не умеют без вот этого всего ?[workspace.dependencies]
clap = "4.0.32"
libc = "0.2.139"
thiserror = "1.0.38"
glob = "0.3.1"
sha2 = "0.10.6"
digest = "0.10.6"
signal-hook = "0.3.15"
log = "0.4.17"
syslog = "6.0.1"
env_logger = "0.9.3"# Test only dependencies
pretty_assertions = "1.3.0"
tempfile = "3.5.0"# Build time dependencies
bindgen = "0.63.0"
Умеют. А зачем каждый раз изобретать парсер аргументов, приделывать биндинги к стандартной библиотеке, реализовать sha2, оборачивать сигналы, реализовывать логирование, подключаться
к syslog-у? Если в сях за 40 лет так и не научились делать модули, то почему другие языки
должны идти по этому пути мазахизма и вкорачивать реализации в код... вы кстати в папочку
vendors или в thirdparty зависимости кладете.Во времена классического си с интернетом я так понимаю что были сильные проблемы и тогда
можно было так поступать, а сейчас какой смысл оправдывать такой подход? Да, для стран
вроде РФ в которой все могут зачебурнетить завтра действительно страшно, но я думаю,
что найдутся государственные цап-царапы предоставящие АлтРаст, АстраРуст и конечно РусРаст.Так что не переживайте все будет хорошо...
затем что на нормальном языке программирования десяток строк "парсера аргументов" _проще_ и быстрее написать чем разбираться в чужой поделке, не исключено что содержащей ошибки.
И syslog() вызвать тоже ни разу не бином ньютона и для этого снова не надо использовать чужие велосипеды.И даже sha2 разово посчитать самому скорее всего быстрее, чем разбираться в интерфейсе чужой считалки.
В сях научились делать библиотеки когда твой папаша еще просачивался сквозь дырку в резинке. Но их не делали ради выравнивания пробелами слева - как-то считалось что с этим способен справиться каждый самостоятельно, и это у него получится проще и быстрее, чем разбираться с очередной чудо-библиотекой.
Ну и результат мы видим - поскольку готового модуля с парсером sudoers и парсером командной строки не попалось - эту несложную безделицу решили отложить на когда-нибудь сильно потом. А пока давайте еще раз "appease clippy" - и можно уже сообщить о невиданных успехах -наша программа компилируется и не делает ничего.
>зачем каждый раз изобретать парсер аргументов, приделывать биндинги к стандартной библиотеке, реализовать sha2, оборачивать сигналы, реализовывать логирование, подключатьсяк syslog-у?
Затем, чтобы потом не было таких новостей:How one programmer broke the internet by deleting a tiny piece of code
https://qz.com/646467/how-one-programmer-broke-the-internet-...
Потому что в нормальном языке эти мелочи должны быть в *стандартной* библиотеке. А выносить все подряд в модули... Удачи. Жду модулей с for'ами, if'ами и тд
так вон, выше жеж ссылка - помнят лефтпад.
А чем авторов проекта по реализации утилит sudo и su на языке Rust не устраивают утилиты sudo и su, существовавшие до придумки этого проекта? 🤔