Systemd поглотил функциональность команды «su»

Системный Linux-менеджер systemd продолжает наращивать свою богатую функциональность. Очередным пополнением в наборе демонов, библиотек и утилит стала новая команда machinectl shell, которую добавили этим патчем. Она заменит устаревшую и «концептуально неправильную» su, с которой юниксоиды мучились более тридцати лет. Команда запускает привилегированные сессии, полностью изолированные от первоначальной сессии.

Зачем понадобилась альтернатива su? На этот вопрос отвечает сам автор Леннарт Поттеринг.

«Тема долго обсуждалась, но проблема в том, что предназначение команды su не совсем ясно. С одной стороны, она должна открыть новую сессию и изменить параметры контекста исполнения (uid, gid, env и др.). С другой стороны, должна получить в наследство многие концепты от первоначальной сессии (tty, cgroup, audit и др.). Поскольку всё смутно определяется, то выходит действительно странная смесь старых и новых параметров. Чтобы иметь хоть какой-то контроль, мы решили менять только абсолютный минимум.

Если вкратце, команда su концептуально неправильная. Она дает что-то наподобие шелла, и здесь всё отлично, но это не полный логин, и его нельзя путать с таковым».

Новая команда machinectl shell создает su-подобные сессии с разными параметрами.

Machinectl shell – только одно из многих нововведений в systemd за последнее время. Некоторые новшества весьма противоречивы, потому что пересматривают ключевые системные элементы Linux.

"Анатолий Ализар : Постоянный автор новостной ленты «Хакера». Увлекается современными технологиями, оружием, информационной безопасностью, носимой электроникой и в целом концепцией Internet of Things.."

Комментарии (6)

  • Хотите сказать что теперь для получения root прав вместо привычного "su -" надо будет вводить такую лабуду "machinectl shell" ?

    • Алиасы спасут отца русской демократии

    • эм... пересмотрев коммит я вообще запутался =)
      объясните кто-нибудь в чём фича

  • одна из фишек создание сессии под любым пользователем (помимо root)

    +
    + Create a new shell session
    +
    + # machinectl shell --uid=lennart
    +
    + This creates a new shell session on the local host, for
    + the user ID lennart, in a su1-like
    + fashion.
    +