LINUX.ORG.RU

Леннарт Поттеринг анонсировал run0 — альтернативу sudo

 , ,


1

4

Леннарт Поттеринг, главный разработчик systemd, объявил на своём канале Mastodon о своей новой инициативе: команде run0, призванной заменить sudo в деле повышения привилегий пользователя. Планируется, что run0 войдёт в состав systemd 256.

По словам автора:

В systemd появилась новая утилита под названием run0. Или, точнее, это не новая утилита, а давно существующая команда systemd-run, но при запуске под именем run0 (через символическую ссылку) она ведёт себя во многом как старый добрый sudo. Только с одним отличием: она не испольует SUID. Вместо этого она просто просит менеджер сервисов запустить команду или шелл под UID’ом нужного пользователя. Она выделяет для этого новый псевдотерминал и затем переносит данные между исходным терминалом и новым псевдотерминалом. Иначе говоря, указанная пользователем команда выполняется в изолированном контексте, отпочкованном от PID 1 и не наследующем никакого контекста от клиента (точнее, $TERM мы переносим, но как явное исключение).

Можно сказать, что run0 больше походит на ssh, чем на sudo.

Эту утилиту использовать куда приятнее, чем sudo. К примеру, по умолчанию она подсвечивает фон терминала красным, пока вы работаете с повышенными привилегиями. Это служит мягким напоминанием о том, что вы пока что не сбросили привилегии обратно, и соответствующим образом помечает вывод всех команд, выполненных с повышенными привилегиями.

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

anonymous

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)

Леннарт — новый бох.

А если бы не было Линуса, то под systemd просто было бы другое ядро.

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

под systemd просто было бы другое ядро

Berkeley Systemd Distribution? А чо, звучит.

Nervous ★★★★★
()

Дубль, НЕ ЖДАЛИ АХАХАХА Леннарт Поттеринг СНОВА ПЕРЕДАЁТ ПРИВЕТ.

Леннарт Поттеринг представил утилиту run0, позволяющую выполнять процессы под идентификаторами других пользователей.

krasnh ★★★
()
Последнее исправление: krasnh (всего исправлений: 1)

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

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

Если я выпускник, то почему я должен оставаться в училище?

Это какая-то гуманитарная логика?

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

Нет в вас романтики. Вы ж только вдумайтесь — красненький!

fat-II
()
Ответ на: комментарий от kirill_rrr

Короче Лёня делает очередную хрень, которая создаст новых проблем ничего не решив взамен.

Да вроде, кажется вполне логичным, что если ты уже написал корневой сервис, работающий с правами рута и спавнящий всех остальных, то можно сделать аналог судо в 2 строчки, которые будут просто просить этот сервис заспавнить ещё 1 процесс.

Наверняка никаких проблем это действительно не решает, но, тем не менее, такой вариант логически сам собой напрашивался.

anonmyous
()

В sudo я могу сделать вот так и запускать пакетный менеджер pacman и yay без ввода пароля sudo:

user ALL=(ALL:ALL) PASSWD: ALL, NOPASSWD: /usr/bin/pacman, /usr/bin/yay

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

А этот ваш run0 позволяет так делать? Потому что, например, doas такое не умеет. Он может только отключить ввод пароля совсем, либо включить его. Список программ без ввода пароля указать нельзя.

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

можно сделать аналог судо в 2 строчки, которые будут просто просить этот сервис заспавнить ещё 1 процесс.

Да, но ведь тебе надо запустить процесс в текущем сеансе с текущими настройками в комплексе с текущим окружением, просто с правами повыше!

но, тем не менее, такой вариант логически сам собой напрашивался.

Ничто не мешало использоватьдля этого тот же самый ssh локально Только это никому не нужно, а если кому то вдруг нужно - они уже себе сделали ещё 30 лет назад.

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

А этот ваш run0 позволяет так делать?

Сложный вопрос. Может я понял неправильно, но кажется его фишка в том, чтобы ты так не мог делать.

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

doas такое не умеет

Список программ без ввода пароля указать нельзя.

Это неправда. Список программ для doas указать, конечно же, можно. Только придётся каждую писать в отдельной строке конфигурационного файла, а не все скопом.

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

пример:

cat /etc/doas.conf

# Allow wheel by default
permit :wheel
permit nopass linux cmd mount
permit nopass linux cmd umount

Пользователь с именем linux может выполнять команды mount и umount (и только их) без пароля.

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

Да, но ведь тебе надо запустить процесс в текущем сеансе с текущими настройками в комплексе с текущим окружением,

Вот как раз переменные окружения судо по дефолту стирает. Можно сделать -E - тогда сотрёт только половину (всякие там HOME, USER - в общем, самые важные всё равно сотрёт).

Ничто не мешало использоватьдля этого тот же самый ssh локально

Ну, это мега-костыль, и кроме того, с судо вообще никак не совместимо. А в его случае, полная совместимость с судо - тоже дело пары строк. Мне кажется, когда речь идёт о паре строк, то проще сказать «почему нет?», чем снова с ним какашками перекидываться.

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

Леннарт — новый бох.

Нам, гентушникам, всё пох. И даже Леннарт нам не бох!

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

Ну и дырищу же ты устроил. Подсказка: твой конфиг мало чем отличается от «разрешить всё без пароля».

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

И это тоже дыра с повышением привилегий до рута в два счёта.

В очередной раз убеждаюсь что у юзеров с виндузятными привычками про «запуск от админа» принципиальная дыра безопасности в голове.

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

Потоу что Лёня как всегда вместо «почему бы и нет» и пары строк для sshd начнёт крестовый поход против sudo. Ну не бывает у него так, чтобы пульсаудио не монополизировал вывод звука альсы чтобы все приложения были вынуждены пользоваться им или чтобы системд соглашался писать обычные человекочитаемые логи которые не нужно импортировать из скрытой БД просто для того чтобы проверить их наличие. Он что нибудь придумает чтобы без его поделия нельзя было пользоваться системой.

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

Потому что я уверен что с помощью бесконтрольного доступа к pacman+yay можно в итоге запустить любой бинарник. Например подложив его в aur перед этим. Или всё ещё проще и там есть опция установки из локально скачанного пакета.

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

Эээ! Сегодня же 1е мая, не 1е апреля!!!

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

И это тоже дыра с повышением привилегий до рута в два счёта.

А я не утверждал, что это безопасно. Вопрос был - «как сделать», а не «нужно ли так делать».

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

Да любой локальный пакет подсунуть можно с нужными скриптами.

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

Не надо так. Тем более использовать doas и делать такое, очень странно.

На компьютере, на котором нет сетевых сервисов, и которым пользуется один человек, и так знающий пароль рута? Не вижу препятствий.

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

Если этот комп стоит где-то в бункере, то в таком случае и рут не нужен.

Однако лучше перебдеть чем недобдеть.

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

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

Вот-вот. На типичном десктопе и ноуте проблемы никакой нет. Ты и так знаешь пароль рута. И тут sudo/doas используется скорее не для безопасности, а для того, чтобы от рута случайно не ту команду не выполнить.

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

неа, чтобы произвольная програмка от рута произвольно не запускалась.
выполнить «не ту команду» от рута, тот же патч бармина, можно в любом варианте использования систем доступа к руту.

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

Потоу что Лёня как всегда вместо «почему бы и нет» и пары строк для sshd

Да ну что за чепуха, поднимать ссшд только ради замены судо? Фаерволы настраивать? Кто такое вообще придумал? Да и клиент новый понадобится, помимо патчей сервеной части.

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

Кто такое вообще придумал

Red Hat с её остросюжетным триллером «Лёня Потный и NIH-синдром».

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

Потому что, например, doas такое не умеет.

Не запрашивать пароль при запуске конкретной программы указанной в аргументе? Умеет.

Использовать в качестве аргумента список программ, этого действительно не умеет, одна строка – одна программа.

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

Ну и дырищу же ты устроил. Подсказка: твой конфиг мало чем отличается от «разрешить всё без пароля».

Ты об отсутствии полного пути к файлу?

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

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

И кстати, вот тут дырища очевидна, но есть и более опасные случаи, когда кажется будто прога ничего опасного сделать не может, но по факту это оказывается не так, например из vi можно запускать шелл, а с помощью какого-нить http-демона можно перезаписать почти любой файл настроив ему его как файл логов. При попытке связываться с прогами, подобными sudo, такие неожиданности практически неизбежны, и это одна из причин по которой я считаю все подобные проги (запускалки команд от рута без спрашивания рут-пароля) принципиально дефективными.

firkax ★★★★★
()

Уже обсудили в толксах же, и пока выглядит как решение несуществующей проблемы.

Лучше бы Лёня запилил возможность при помощи systemd запускать от рута интерактивные приложения в деаттачнутом терминале а ля screen или tmux.

А то падение пакетного менеджера при падении графического сеанса – так себе фича.

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

А может уже есть там такая фича, а я не знаю? Расскажите, кто в курсе.

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

Клиент не понадобится да и патчи не нужны, всё уже есть. Просто конфиг нужен удобный и возможно скрипт с симлинком.

kirill_rrr ★★★★★
()

приятнее

подсвечивает фон терминала красным

Красноглазики оценят. 🤡

mord0d ★★★★★
()

К примеру, по умолчанию она подсвечивает фон терминала красным, пока вы работаете с повышенными привилегиями.

Неужели нельзя сделать это с обычным sudo поправив .bashrc?

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

мне больше интересовало возможность подключиться к произвольному терминалу, оборванному или завязанному на сервис…
зачем дублировать тмукс если есть тмукс ??

pfg ★★★★★
()

удобное название проекта - run0, run1, runX+n..n+1

splinter ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.