Автор Тема: Xfce c Sysv  (Прочитано 673017 раз)

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
Re: Xfce c Sysv
« Ответ #1155 : 16.11.2019 19:41:44 »
Придётся ещё и для сессии чего-то городить. Из сессии нельзя ни перезагрузиться, ни выключить, ни в ждущий режим перейти. Раньше consolekit2 спасал с этим, если ничего не путаю.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce c Sysv
« Ответ #1156 : 17.11.2019 03:17:12 »
Придётся ещё и для сессии чего-то городить. Из сессии нельзя ни перезагрузиться, ни выключить, ни в ждущий режим перейти. Раньше consolekit2 спасал с этим, если ничего не путаю.

Антон, у меня острое предчувствие, что с sysv на p9, мало-мальски полноценным десктопом, xfce может остаться в гордом одиночестве.

Из лайва alt-p9-xfce-sysv-xfce-20191020-x86_64:
# grep 'action\|description' /usr/share/polkit-1/actions/org.xfce.power.policy
  <action id="org.xfce.power.backlight-helper">
    <description>Modify the laptop display brightness</description>
  </action>
  <action id="org.xfce.power.xfce4-pm-helper">
    <description>Suspend or hibernate the system</description>
  </action>
# grep 'action\|description' /usr/share/polkit-1/actions/org.xfce.session.policy
  <action id="org.xfce.session.xfsm-shutdown-helper">
    <description>Shutdown, restart, suspend, or hibernate the system</description>
  </action>

Из установленной alt-p8-sysv-xfce-i586
# grep \
> 'org.xfce.power.xfce4-pm-helper\|org.xfce.session.xfsm-shutdown-helper' \
> /mnt/etc/polkit-1/rules.d/*
/mnt/etc/polkit-1/rules.d/60-xfce4-pm-helper.rules:    if (action.id == "org.xfce.power.xfce4-pm-helper" && subject.isInGroup("xgrp") )
/mnt/etc/polkit-1/rules.d/60-xfsm-shutdown-helper.rules:    if (action.id == "org.xfce.session.xfsm-shutdown-helper" && subject.isInGroup("xgrp") )

Т.е. экшны в p9 для xfce есть:
# sed -n '25,35p' /usr/share/polkit-1/actions/org.xfce.power.policy
  <action id="org.xfce.power.xfce4-pm-helper">
   
    <description>Suspend or hibernate the system</description>
    <message>Authentication is required to place the system in suspend or hibernate mode</message>
    <defaults>
      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/sbin/xfce4-pm-helper</annotate>
  </action>
# tail -n 13 /usr/share/polkit-1/actions/org.xfce.session.policy | head -n 11
  <action id="org.xfce.session.xfsm-shutdown-helper">
   
    <description>Shutdown, restart, suspend, or hibernate the system</description>
    <message>Authentication is required to shutdown, restart, suspend, or hibernate the system.</message>
    <defaults>
      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/lib64/xfce4/session/xfsm-shutdown-helper</annotate>
  </action>

Но в любом случае я бы пощупал на пробном лайве без elogind, но с polkit-sysvinit.
Благо рулезы polkit подхватываются на горячую и не требуют перезагрузок или релогинов.
А xfce достаточно консервативен чтобы в нём что-то менялось часто и много. И на мой взгляд достаточно предсказуем.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce c Sysv
« Ответ #1157 : 17.11.2019 04:35:12 »
Загрузил с usb-hdd установленную alt-p9-xfce-sysv-20191020-x86_64.
Выполнил:
# control libelogind-preload disabled
# chkconfig elogind off

Установил сизифный пакет
# rpm -Uhv ./polkit-sysvinit-0.3.4-alt2.noarch.rpm

Перегрузился root -ом из tty.

Установлено
# rpm -qa | grep polkit
libpolkit-0.116-alt1.x86_64
polkit-0.116-alt1.x86_64
polkit-sysvinit-0.3.4-alt2.noarch
xfce-polkit-0.3-alt1.x86_64

Ждущий работает.
Перезагрузка выполняется.
Но подключение и отключение в thunar файловых не прописанных в fstab жутко долго, - что-то порядка 25-ти секунд одна операция.
В dm после ввода пароля, ожидание начала входа в сессию, что-то и как-то подобно sleep, тоже задержка ~25 секунд.
Теоретически, в этом состоянии оно работает. Но о-очень задумчиво...
Нет, я понимаю конечно, что Core i3-5005U, это не бог весть что, но такая задумчивость, это уже перебор. Это даже как бы ещё и не Pentium M.


Значёк опции Ждущий режим, меню Системные действия, отсутствует. Поэтому в режиме Внешний вид > Системные действия, кнопка Ждущий режим отображается, но пустая. Узнать что это за кнопка, можно только по всплывающей подсказке при наведении курсора на кнопку.
Это же касается и кнопок:
Спящий режим
Гибридный спящий режим
Перезагрузка
« Последнее редактирование: 17.11.2019 05:55:54 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce c Sysv
« Ответ #1158 : 17.11.2019 04:39:26 »
Сраные виндузятники новой волны:
См. скриншот 1.

Устройство не вынимается. Оно извлекается (из порта). Локализаторы блин...
Вынимается не скажу что...

Что именно виндузятникам новой волны, взявшимся за локализацию Линукс, не понятно в этой фразе?
Please do not remove the media or disconnect the drive
(См. скриншот 2)

Господи, разработчики-локализаторы, пожалейте Линукс, не издевайтесь так над ним.
« Последнее редактирование: 17.11.2019 05:44:46 от Speccyfighter »

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
Re: Xfce c Sysv
« Ответ #1159 : 17.11.2019 06:50:05 »
Но подключение и отключение в thunar файловых не прописанных в fstab жутко долго, - что-то порядка 25-ти секунд одна операция.
В dm после ввода пароля, ожидание начала входа в сессию, что-то и как-то подобно sleep, тоже задержка ~25 секунд.

Надо что-то systemd-шное удалить, не помню что.

Антон, у меня острое предчувствие, что с sysv на p9, мало-мальски полноценным десктопом, xfce может остаться в гордом одиночестве.

icewm и wmaker (gnustep) не завязаны на logind никак.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce c Sysv
« Ответ #1160 : 17.11.2019 07:18:44 »
Но подключение и отключение в thunar файловых не прописанных в fstab жутко долго, - что-то порядка 25-ти секунд одна операция.
В dm после ввода пароля, ожидание начала входа в сессию, что-то и как-то подобно sleep, тоже задержка ~25 секунд.

Надо что-то systemd-шное удалить, не помню что.

Посмотрел в p9-sysv-xfce и p8-sysv-xfce на предмет *systemd* и *logind.
Удалил libelogind который потянул elogind.
Перегрузился.
Всё стало зашибись и залетало.
Я его правда выключал,
$ grep -r Hidden=true ~/.config/
/home/user/.config/autostart/xfce-polkit.desktop:Hidden=true

но пакет xfce-polkit тоже надо будет удалять из образа, он будет бесполезен, агент будет постоянно ругаться окном и это будет выглядеть как мусор на логине в GUI.
Но не забыть положить в образ пакет apt-conf-ignore-systemd

В добавление к
# rpm -q polkit-sysvinit
polkit-sysvinit-0.3.4-alt2.noarch

руками вкрутил рулез
# cat /etc/polkit-1/rules.d/60-xfce-power-backlight-helper.rules
polkit.addRule(function(action, subject) {
    if (action.id == "org.xfce.power.backlight-helper" && subject.isInGroup("xgrp") )
    {
        return polkit.Result.YES;
    }
});

и регулировка яркости дисплея ноутбука заработала от хоткеев.
И его нужно добавлять в polkit-sysvinit-0.3.5-alt1.noarch новой версией пакета.
« Последнее редактирование: 17.11.2019 08:06:35 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce c Sysv
« Ответ #1161 : 17.11.2019 08:16:53 »
Резюме на предмет alt-p9-xfce-sysv-20191020-{i586,x86_64}:

- Удалить из образа пакеты elogind libelogind xfce-polkit
- Добавить в образ пакет polkit-sysvinit-0.3.4-alt2.noarch (но желательно версии 0.3.5 - будет)
- Добавить в образ пакет apt-conf-ignore-systemd
- Добавить в образ пакет nm-sysvinit (NM повесить на wheel; отвязать зависимость polkit-sysvinit на nm-sysvinit)

Листинг рулеза регулировки яркости дисплея ноутбука, для включения в пакет polkit-sysvinit
# cat /etc/polkit-1/rules.d/60-xfce-power-backlight-helper.rules
polkit.addRule(function(action, subject) {
    if (action.id == "org.xfce.power.backlight-helper" && subject.isInGroup("xgrp") )
    {
        return polkit.Result.YES;
    }
});

И надо что-то думать на предмет запуска gparted, - с polkit-sysvinit он не запускается.
На gparted есть экшн, но толкать его рулезом с безусловным YES или через безусловное pkexec не очень хочется:
# sed -n '1,11p; 45p; 78,88p' /usr/share/polkit-1/actions/org.gnome.gparted.policy
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>

    <vendor>The GParted Project</vendor>
    <vendor_url>https://gparted.org</vendor_url>
    <icon_name>gparted</icon_name>
    <action id="org.gnome.gparted">

        <description>Run GParted as root</description>
        <message>Authentication is required to run the GParted Partition Editor as root</message>
        <defaults>
            <allow_any>auth_admin</allow_any>
            <allow_inactive>auth_admin</allow_inactive>
            <allow_active>auth_admin</allow_active>
        </defaults>
        <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/gparted</annotate>
        <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>

    </action>

</policyconfig>

Но есть вариант, дать право запуска gparted через рулез для группы disk (проверено, это работает):
(Только пользователи группы disk будут иметь право запуска gparted)
# cat /etc/polkit-1/rules.d/60-gnome-gparted.rules
polkit.addRule(function(action, subject) {
    if (action.id == "org.gnome.gparted" && subject.isInGroup("disk") )
    {
        return polkit.Result.YES;
    }
});

По-умолчанию, wheel-пользователь с id=500 не входит в группу disk
# grep ^disk /etc/group
disk:x:6:root
И тем же умолчанием, в доступе к gparted ему отказано.

https://wiki.archlinux.org/index.php/users_and_groups#Pre-systemd_groups
disk
/dev/sd[a-z][1-9]
Access to block devices not affected by other groups such as optical, floppy, and storage

gparted повесить на wheel, - листинг тут:
https://forum.altlinux.org/index.php?topic=36177.msg343988#msg343988
« Последнее редактирование: 17.11.2019 22:08:19 от Speccyfighter »

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
Re: Xfce c Sysv
« Ответ #1162 : 17.11.2019 09:12:56 »
И надо что-то думать на предмет запуска gparted, - с polkit-sysvinit он не запускается.

Предлагаю не включать в сборку.

Надо что-то systemd-шное удалить, не помню что.

libnss-systemd, либо почистить от слова systemd конфиг /etc/nsswitch.conf
Это "матерноное" слово вписывает туда libnss-systemd при установке.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce c Sysv
« Ответ #1163 : 17.11.2019 09:32:29 »
И надо что-то думать на предмет запуска gparted, - с polkit-sysvinit он не запускается.

Предлагаю не включать в сборку.

Можно конечно, но саму проблему gparted на sysv это не решит.
Предлагаю включить в состав polkit-sysvinit рулез
/etc/polkit-1/rules.d/60-gnome-gparted.rules
который листигом выше, даёт право запуска gparted, а заодно и право доступа к блочным устройствам, группе disk.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce c Sysv
« Ответ #1164 : 17.11.2019 09:39:59 »
И надо что-то думать на предмет запуска gparted, - с polkit-sysvinit он не запускается.

Предлагаю не включать в сборку.

Можно конечно, но саму проблему gparted на sysv это не решит.
Предлагаю включить в состав polkit-sysvinit рулез
/etc/polkit-1/rules.d/60-gnome-gparted.rules
который листигом выше, даёт право запуска gparted, а заодно и право доступа к блочным устройствам, группе disk.

Хотя лучше даже для группы wheel.
Поскольку:
# sed -n '78,82p' /usr/share/polkit-1/actions/org.gnome.gparted.policy
        <defaults>
            <allow_any>auth_admin</allow_any>
            <allow_inactive>auth_admin</allow_inactive>
            <allow_active>auth_admin</allow_active>
        </defaults>

Стало быть и рулез тогда будет таким:
# cat /etc/polkit-1/rules.d/60-gnome-gparted.rules
polkit.addRule(function(action, subject) {
    if (action.id == "org.gnome.gparted" && subject.isInGroup("wheel") )
    {
        return polkit.Result.YES;
    }
});
По-умолчанию, только первый пользователь с id=500 получит доступ к gparted, как состоящий в административной группе wheel.
« Последнее редактирование: 17.11.2019 09:47:11 от Speccyfighter »

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
Re: Xfce c Sysv
« Ответ #1165 : 17.11.2019 10:23:44 »
 
Хотя лучше даже для группы wheel.

Кстати, может для всех наших рулезов сделаем так?

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce c Sysv
« Ответ #1166 : 17.11.2019 21:01:22 »
Хотя лучше даже для группы wheel.

Кстати, может для всех наших рулезов сделаем так?

Не получится, всё сложно:
- В теории группу wheel можно для действий NetworkManager. и тогда не тащить пакет nm-sysvinit. Но это вопрос философский: а всем ли администраторам разрешено управлять сетью?
- Для backlight нельзя: у непревилегированного сломается регулировка яркости
- Для xfsm-shutdown-helper и xfce4-pm-helper тоже нельзя: у односессионного непревилегированного сломается выключение, перезагрузка и ждущий.
- filesystem-mount-system, eject-media, mount-other-seat, power-off-drive, eject-media-other-seat и power-off-drive-other-seat, сейчас висят на группе xgrp. И если это повесить на wheel, сломается монтирование/извлечение флешек для непревилегированного. В теории это (не прописанное в fstab) наверное лучше было бы повесить на группу storage. Но тогда создание группы и добавление в неё пользователя с id=500 надо ложить preinstall или postinstall скриптами. Или городить костыль подобный nm-sysvinit. Не используешь и firsttime.d: в системе которая обновляется с p8 на p9, это не сработает.

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
Re: Xfce c Sysv
« Ответ #1167 : 17.11.2019 21:09:48 »
- В теории группу wheel можно для действий NetworkManager. и тогда не тащить пакет nm-sysvinit. Но это вопрос философский: а всем ли администраторам разрешено управлять сетью?

Да, я про этого товарища. В oem-системе есть сложность с добавлением первого пользователя в группу. Скрипт отрабатывает тогда, когда пользователя в системе ещё нет, и отключает себя :-)

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
Re: Xfce c Sysv
« Ответ #1168 : 17.11.2019 21:12:33 »
Ну, и при создании нового пользователя сюрприз, что пользователя надо в группу добавить какую-то помимо wheel.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce c Sysv
« Ответ #1169 : 17.11.2019 21:27:13 »
- В теории группу wheel можно для действий NetworkManager. и тогда не тащить пакет nm-sysvinit. Но это вопрос философский: а всем ли администраторам разрешено управлять сетью?

Да, я про этого товарища. В oem-системе есть сложность с добавлением первого пользователя в группу. Скрипт отрабатывает тогда, когда пользователя в системе ещё нет, и отключает себя :-)

Давай тогда NM переведу на  wheel, а nm-sysvinit в образ ложить не будем.
Остальное оставим (пока?) так как есть, но с добавлением рулезов для gparted и backlight.

Тем более что здесь
# sed -n '11,12p; 92,96p; ' /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy
  <action id="org.freedesktop.NetworkManager.enable-disable-network">
    <description>Enable or disable system networking</description>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>
я бы с разработчиками NetworkManager поспорил:
yes для allow_active? Это где? В активных мультисессиях? Или они задумывали шоб всё было как в Windows 95? Да пользователь который в мультисессии получит дисконнект на файле в 4 гига без возможности докачки, матом таких линуксовых разработчиков обложит. И будет прав.

Поправил тут про NM и gparted на wheel:
https://forum.altlinux.org/index.php?topic=36177.msg343985#msg343985
(Т.е. сначала определяемся как это будет выглядеть, потом ваяем)
« Последнее редактирование: 17.11.2019 21:44:26 от Speccyfighter »