Автор Тема: "Systemd - капец" или systemd-run -t /bin/bash  (Прочитано 26160 раз)

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #15 : 13.12.2018 16:43:45 »
su работает точно так же, - дефолтом запустится оболочка root.
Да не в этом же дело. Вот так ещё поясню (и это, кстати, ALT-специфика скорее).

Допустим есть пользователь (или группа), которым надо дать доступ к sudo для исполнения исключительно каких-то команд, которые от обычного пользователя не работают. Соответствующие правила (доступ к вполне конкретным командам) описываются в sudoers. Для того, чтобы эти пользователи имели доступ к sudo, они помещаются в группу wheel, и, вдруг, оказывается, что группе wheel вообще всё доступно через systemd-run. Может быть, это неправильный подход, и следовало сделать control sudo public, а не добавлять пользователей в группу wheel - это я что-то уже и не знаю теперь.

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #16 : 13.12.2018 18:47:47 »
Вообще, я воспринимал пользователей в группе wheel, как пользователей из под которых можно воспользоваться учеткой root. А если следовать логике "systemd-run -t /bin/bash", то не проще ли тогда, настроить по умолчанию sudo доступ, как в дебиане, а не с черного хода. Здесь админам альтов, нужно определить четкую политику правил. Иначе мне придется всех пользователей рабочих станций, удалить из группы wheel. А "черный ход" - это откровенный руткит( su нельзя, а systemd-run можно).
« Последнее редактирование: 13.12.2018 18:53:15 от rabochyITs »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #17 : 13.12.2018 21:17:08 »
Вообще, я воспринимал пользователей в группе wheel, как пользователей из под которых можно воспользоваться учеткой root.

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

А если следовать логике "systemd-run -t /bin/bash", то не проще ли тогда, настроить по умолчанию sudo доступ, как в дебиане, а не с черного хода.

С sudo надо быть осторожным. У него как минимум timestamp не ноль. А в дебиан с timestamp ещё хуже.

Выкручивать через wheelonly? Непривилегированный пользователь с опцией --user не сможет запустить свою же оболочку.
Впрочем и su этого не умеет.

"systemd-run -t /bin/bash"

Даже для вызова оболочки другого пользователя,
[tester2@localhost ~]$ systemd-run --uid=502 -t /bin/bash                                                                                                                 
====AUTHENTICATING FOR org.freedesktop.systemd1.manage-units====                                                                                                       
Для управления системными службами и юнитами, необходимо пройти аутентификацию.
Multiple identities can be used for authentication:                                                                                                                       
 1.  altlinux                                                                                                                                                             
 2.  altlinuxorig                                                                                                                                                         
 3.  tester                                                                                                                                                               
Choose identity to authenticate as (1-3): 3                                                                                                                               
Password:                                                                                                                                                                 
==== AUTHENTICATION COMPLETE ====                                                                                                                                         
Running as unit: run-u176.service                                                                                                                                         
Press ^] three times within 1s to disconnect TTY.                                                                                                                         
[tester@localhost /]$     

systemd-run использует правило polkit для управления системными службами:
# sed -n '81,141p' /usr/share/polkit-1/actions/org.freedesktop.systemd1.policy | grep 'action id\|lang=\"ru\"'
  <action id="org.freedesktop.systemd1.manage-units">
    <description xml:lang="ru">Управление системными службами и юнитами</description>
    <message xml:lang="ru">Для управления системными службами и юнитами, необходимо пройти аутентификацию.</message>

Теоретически надо было бы запретить запуск systemd-run для непривилегированных пользователей, но тогда пользователь не сможет запустить свою же оболочку
[tester2@localhost ~]$ systemd-run --user -t /bin/bash
Running as unit: run-u62.service
Press ^] three times within 1s to disconnect TTY.
[tester2@localhost ~]$
[tester2@localhost ~]$ exit

подобно тому, как это не умеет su
[tester2@localhost ~]$ su - tester2
bash: /bin/su: Отказано в доступе
[tester2@localhost ~]$ ls -l /bin/su
-rws--x--- 1 root wheel 26420 дек 14  2015 /bin/su

Хотя, а надо ли это?

Иначе мне придется всех пользователей рабочих станций, удалить из группы wheel.

"черный ход" - это откровенный руткит( su нельзя, а systemd-run можно).

В том-то и штука, что запуск systemd-run разрешён всем. В отличие от su, который только для группы wheel.
При su, для не wheel, отказ в доступе при любых других условиях.
# control | grep '^su \|^sudo '
su              wheelonly       (public wheel wheelonly restricted)
sudo            wheelonly       (public wheelonly restricted)
« Последнее редактирование: 13.12.2018 21:36:03 от Speccyfighter »

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #18 : 13.12.2018 21:51:41 »
Вообще, я воспринимал пользователей в группе wheel, как пользователей из под которых можно воспользоваться учеткой root.
Тогда непонятно, что Вам не понравилось в "systemd-run -t /bin/bash" от пользователя из группы wheel. Но спасибо всё равно, потому что мне именно это не понравилось. И ldv@ вот тоже не нравится (в баге). :-)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #19 : 13.12.2018 22:23:12 »
А "черный ход" - это откровенный руткит( su нельзя, а systemd-run можно).

su, это для неправильных и устаревших систем на init.
А systemd-run, это для правильных, модных и молодёжных систем. :-)

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #20 : 14.12.2018 08:48:23 »
Вообще, я воспринимал пользователей в группе wheel, как пользователей из под которых можно воспользоваться учеткой root.
Тогда непонятно, что Вам не понравилось в "systemd-run -t /bin/bash" от пользователя из группы wheel. Но спасибо всё равно, потому что мне именно это не понравилось. И ldv@ вот тоже не нравится (в баге). :-)
Это мне непонятно, так как недостаточно знаний по многим вопросам, трудно знать все. Не вдаваясь в подробности, считал, что значит так надо, для некоторых разрешений безопасности. Надеюсь баг исправят.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #21 : 14.12.2018 09:32:49 »
Иначе мне придется всех пользователей рабочих станций, удалить из группы wheel.

"черный ход" - это откровенный руткит( su нельзя, а systemd-run можно).

В том-то и штука, что запуск systemd-run разрешён всем. В отличие от su, который только для группы wheel.
При su, для не wheel, отказ в доступе при любых других условиях.
# control | grep '^su \|^sudo '
su              wheelonly       (public wheel wheelonly restricted)
sudo            wheelonly       (public wheelonly restricted)

Непривилегированного пользователя, su сразу вывалит не требуя и не проверяя ни логина, ни пароля, - "парень, ты не wheel!":
$ strace su - altlinux
execve("/bin/su", ["su", "-", "altlinux"], 0xbfb49c68 /* 50 vars */) = -1 EACCES (Отказано в доступе)
...
exit_group(1)                           = ?
+++ exited with 1 +++

в отличие от systemd-run, что само по себе нонсенс, разрешать запуск непривилегированному пользователю systemd-run, предназначенного для управления системными сервисами и как вариант, запуска оболочки другого пользователя и в довесок отображать логины пользователей wheel и предлагая ввести пароль (tester, это wheel-юзер с UID=502; tester2 UID=503 и не wheel):
[tester2@localhost ~]$ systemd-run --uid=502 -t /bin/bash                                                                                                                 
====AUTHENTICATING FOR org.freedesktop.systemd1.manage-units====                                                                                                       
Для управления системными службами и юнитами, необходимо пройти аутентификацию.
Multiple identities can be used for authentication:                                                                                                                       
 1.  altlinux                                                                                                                                                             
 2.  altlinuxorig                                                                                                                                                         
 3.  tester                                                                                                                                                               
Choose identity to authenticate as (1-3): 3                                                                                                                               
Password:                                                                                                                                                                 
==== AUTHENTICATION COMPLETE ====                                                                                                                                         
Running as unit: run-u176.service                                                                                                                                         
Press ^] three times within 1s to disconnect TTY.                                                                                                                         
[tester@localhost /]$     

Здесь команда systemd-run аналогична su ниже, но su выдаст совсем другой результат:
$ strace su - tester
...
exit_group(1)                           = ?
+++ exited with 1 +++

И да, systemd-run, это неплохой руткит.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #22 : 14.12.2018 11:33:29 »
в отличие от systemd-run, что само по себе нонсенс, разрешать запуск непривилегированному пользователю systemd-run
Кстати да. https://bugzilla.altlinux.org/35770

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #23 : 15.12.2018 13:41:11 »
Набираю в терминале от пользователя systemd-run -t /bin/bash ввожу пароль пользователя и попадаю в консоль root!!!

Это не совсем тот root, который можно получить через 'su -'.
У этого root полученного через 'systemd-run -t /bin/bash' как минимум переменные HOME LOGNAME USER TMPDIR _backup_glob пусты.

root логином root и root через 'su -' различаются только набором переменных:
у root через 'su -' отсутствуют переменные XDG*, но и только.
« Последнее редактирование: 15.12.2018 14:11:56 от Speccyfighter »

Оффлайн YYY

  • Мастер
  • ***
  • Сообщений: 5 950
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #24 : 16.12.2018 13:58:59 »
Это просто прелЭсно !

На сизифном альте с icewm+sysv дыра не работает, но сам он у меня скорее мертв чем жив... после перезагрузки осенняя сборка не взлетает - демоны говорят, что не могут создать файлы по пути /var/lock/sybsus  - поглядел... а каталога то и нету... печалька...

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #25 : 16.12.2018 14:44:36 »
Это просто прелЭсно !

На сизифном альте с icewm+sysv дыра не работает, но сам он у меня скорее мертв чем жив... после перезагрузки осенняя сборка не взлетает - демоны говорят, что не могут создать файлы по пути /var/lock/sybsus  - поглядел... а каталога то и нету... печалька...

Блин, я этот номер бага уже выучил:
#35350

Оффлайн YYY

  • Мастер
  • ***
  • Сообщений: 5 950
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #26 : 16.12.2018 17:47:33 »
Блин, я этот номер бага уже выучил:
#35350

Спасибо.
Обновил пакет startup - теперь все стартует, кроме lightdm
Последний удалил, оказалось в сборке есть xdm и с ним все работает...
xdm наше все :)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #27 : 21.02.2019 04:49:56 »
Набираю в терминале от пользователя systemd-run -t /bin/bash ввожу пароль пользователя и попадаю в консоль root!!!
Это у меня только так или на ваших серверах тоже самое?

Ещё раз вернулся к теме в контексте этого, просмотром в лайв на systemd:
1. Нет. Кто-то же должен администрировать, настраивать, обновлять систему. Это и есть первый пользователь, тот, кто установил систему и  у которого есть возможность, зная пароль root, войти в систему как root.
Да вот оказалось, что и своего пароля достаточно в некоторых случаях: https://bugzilla.altlinux.org/35763

Афигенно!... Вот это пробо-о-ина:
Соадминистратор (user2) получил доступ к root-овой консоли через свой пароль!
systemd-run использует экшн org.freedesktop.systemd1.manage-units, предлагает вход по паролю любого wheel и успешно предоставляет окружение root.

О как!
Леннарт, ты шо, с ума сошёл? С какого вдруг перепугу ты разрешил любому соадминистатору менять своё окружение на root-овое по своему паролю?
Ты хоть понимаешь, что систему на systemd ты сделал Титаником?
« Последнее редактирование: 21.02.2019 05:21:47 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #28 : 21.02.2019 06:04:43 »
Вообще, я воспринимал пользователей в группе wheel, как пользователей из под которых можно воспользоваться учеткой root.

Нет, root и user1 (wheel), это две учётки одного пользователя, - root.
Другие wheel, это соадминистаторы. И доступа к учётке root они не имеют и не должны иметь.
И только root наделяет их правами.
А root,  который сообщил свой пароль другим wheel, - шляпа.
« Последнее редактирование: 21.02.2019 06:07:35 от Speccyfighter »

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
Re: "Systemd - капец" или systemd-run -t /bin/bash
« Ответ #29 : 21.02.2019 09:18:16 »
...
Нет, root и user1 (wheel), это две учётки одного пользователя, - root.
Другие wheel, это соадминистаторы. И доступа к учётке root они не имеют и не должны иметь.
И только root наделяет их правами.
А root,  который сообщил свой пароль другим wheel, - шляпа.
Я так думал, потому что пользователь не в группе wheel, не мог выполнить su -l. Надо бы при случае проверить, как под таким пользователем отработается команда systemd-run -t /bin/bash