Автор Тема: Запрет reboot/shutdown обычным пользователям  (Прочитано 2257 раз)

Оффлайн hiddenman

  • alt linux team
  • ***
  • Сообщений: 32
    • Email
Приветствую.

Есть небольшой "терминальный" сервер, куда пользователи коннектятся (через NoMachine->Xorg->lightdm) и работают.
По умолчанию они, почему-то, могут выключать и перегружать машину (видимо, потому, что  в login1.policy стоит allow_active -> yes).

Поискал в сети решения, однозначного нет, все какие-то правила делают разные. Попопробовал даже заменить allow_active->yes на auth_admin_keep, одна, любой пользователь все равно может отправить систему в ребут.

Вопрос: как правильно и красиво это запретить всем и разрешить только группе wheel?

Нашел еще от lightdm правило, которое, похоже, разрешает это делать его служебному пользователю. Может и оно мешает?


Оффлайн andrew_b

  • Завсегдатай
  • *
  • Сообщений: 535
Кстати, интересный вопрос.
# ll /sbin/halt /sbin/shutdown
-rwxr-xr-x 1 root root 13880 May  8 13:40 /sbin/halt
-rwx------ 1 root root 22236 May  8 13:40 /sbin/shutdown
# rpm -qf /sbin/halt /sbin/shutdown
sysvinit-2.88-alt5
sysvinit-2.88-alt5
Почему у halt и shutdown разные права? control'ом они не управляются.

Оффлайн hiddenman

  • alt linux team
  • ***
  • Сообщений: 32
    • Email
Так и не нашел пока однозначного ответа, нужно собрать правила для consolekit и polkit в одну кучу и куда-то положить одним пакетом.

Сейчас пользователи у меня сразу запускают startcinnnamon скрипт, без lightdm пропала возможность выключать/перезагружать, хотя одна из кнопок осталась.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Так и не нашел пока однозначного ответа, нужно собрать правила для consolekit и polkit в одну кучу и куда-то положить одним пакетом.

Если речь идёт о любом DE, то в одиночку это мало реально - мозг вынесет.
Для polkit с Xfce (под sysv) базовый пакет собрал Миша Шигорин (polkit-sysvinit). Ну и мы с dango вокруг этого крутились в паре тем, - там экшны для поувэр лежат в xfce4-sesson. Для дисковых операций, в udisks2.
https://forum.altlinux.org/index.php?topic=34428.0
https://forum.altlinux.org/index.php?topic=36177.0

Но по ходу нарвался и на деталь:
https://forum.altlinux.org/index.php?topic=36177.msg288075#msg288075
Вкратце её суть такова:
- Если в Xfce p8 (Сизиф?) менять pulseaudio на alsa, по зависимостям притянется и ConsoleKit со своим экшн, и придётся писать под него своё правило. Там тоже с поувэр пересекается.

И так индивидуально надо будет разгребать для каждого DE.
Если бы хором на него наброситься (на polkit), всё легче было бы, а так будем: ты да я, да мы с тобой.

Линк на версию 0.3.1 rpm/src.rpm по третьей ссылке.
Поувэр-менеджмент там сейчас выглядит так:
$ rpm2cpio polkit-sysvinit-0.3.1-alt1.src.rpm | cpio -idmv
$ grep -rHi . ./60-{sysvinit-console-kit,xfsm-shutdown-helper}.rules
./60-sysvinit-console-kit.rules:/* stop system or restart for single or multiple-users */
./60-sysvinit-console-kit.rules:polkit.addRule(function(action, subject) {
./60-sysvinit-console-kit.rules:    if (  ( action.id == "org.freedesktop.consolekit.system.stop" ||
./60-sysvinit-console-kit.rules:            action.id == "org.freedesktop.consolekit.system.stop-multiple-users" ||
./60-sysvinit-console-kit.rules:            action.id == "org.freedesktop.consolekit.system.restart" ||
./60-sysvinit-console-kit.rules:            action.id == "org.freedesktop.consolekit.system.restart-multiple-users" ) &&
./60-sysvinit-console-kit.rules:            subject.isInGroup("xgrp")   )
./60-sysvinit-console-kit.rules:    {
./60-sysvinit-console-kit.rules:        return polkit.Result.YES;
./60-sysvinit-console-kit.rules:    }
./60-sysvinit-console-kit.rules:});
./60-xfsm-shutdown-helper.rules:polkit.addRule(function(action, subject) {
./60-xfsm-shutdown-helper.rules:    if (action.id == "org.xfce.session.xfsm-shutdown-helper" && subject.isInGroup("xgrp") )
./60-xfsm-shutdown-helper.rules:    {
./60-xfsm-shutdown-helper.rules:        return polkit.Result.YES;
./60-xfsm-shutdown-helper.rules:    }
./60-xfsm-shutdown-helper.rules:});

Оффлайн hiddenman

  • alt linux team
  • ***
  • Сообщений: 32
    • Email
Если речь идёт о любом DE, то в одиночку это мало реально - мозг вынесет.
Для polkit с Xfce (под sysv) базовый пакет собрал Миша Шигорин (polkit-sysvinit). Ну и мы с dango вокруг этого крутились в паре тем, - там экшны для поувэр лежат в xfce4-sesson. Для дисковых операций, в udisks2.
Да, спасибо, я находил ваши обсуждения тут. Вообще странно, конечно, что до сих пор в апстримаъ нет готового решения глобального.
Процитированные правила подходят для команд их консоли, а для тех, что в иксах, правила ж практические такие же, просто вместо consolekit там пишется login1 что ли, не помню.