Bug 31501 - Извлекаемые накопители в системах на sysv - отказ в авторизации
Summary: Извлекаемые накопители в системах на sysv - отказ в авторизации
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: polkit-sysvinit (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Michael Shigorin
QA Contact: qa-sisyphus
URL: https://forum.altlinux.org/index.php?...
Keywords:
Depends on:
Blocks:
 
Reported: 2015-11-16 22:21 MSK by Speccyfighter
Modified: 2016-11-04 18:31 MSK (History)
4 users (show)

See Also:


Attachments
Рулез монтирования извлекаемых накопителей (855 bytes, application/octet-stream)
2015-11-17 14:57 MSK, Speccyfighter
no flags Details
рулезы polkit под sysv в v0.3.2 (3.71 KB, application/octet-stream)
2016-09-06 19:33 MSK, Speccyfighter
no flags Details
polkit-sysvinit-0.3.2-alt1.noarch.rpm (3.08 KB, application/octet-stream)
2016-09-06 19:40 MSK, Speccyfighter
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Speccyfighter 2015-11-16 22:21:23 MSK
С текущим рулезом пакета polkit-sysvinit

# cat ./60-sysvinit-mount.rules 
polkit.addRule(function(action, subject) {
    if (  ( action.id == "org.freedesktop.udisks2.filesystem-mount" || action.id == "org.freedesktop.udisks2.filesystem-mount-system" || action.id == "org.freedesktop.udisks2.filesystem-mount-system-internal" ) && subject.isInGroup("xgrp")   )
    {
	return polkit.Result.YES;
    }
});

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.udisks2.eject-media"  && subject.isInGroup("xgrp") )
    {
	return polkit.Result.YES;
    }
});

на системах с sysv (например regular-xfce-sysv-2015061*-i586.iso)
монтируются файловые системы HDD если не прописаны в fstab,
и также монтируются файловые системы флешек через udisksctl
из командной строки, но при монтировании файловых систем флешек
через thunar следует отказ в авторизации:

> Не удалось подключить «alt-live-storage».
> Not authorized to perform operation.

Несмотря на то, что сессия активна:

$ ck-list-sessions 
Session1:
	unix-user = '500'
	realname = '(null)'
	seat = 'Seat1'
	session-type = ''
	active = TRUE
	x11-display = ':0'
	x11-display-device = '/dev/tty7'
	display-device = ''
	remote-host-name = ''
	is-local = TRUE
	on-since = '2015-11-16T01:45:31.597776Z'
	login-session-id = '1'


Но стоит заменить пакетный рулез монтирования на _свой_ рулез из
своей системы (базирована на enp'овом лайве xfce-sysv-t7-i586),

# cat /etc/polkit-1/rules.d/60-sysvinit-mount-lastwork.rules 
polkit.addRule(function(action, subject) {
    if (  ( action.id == "org.freedesktop.udisks2.filesystem-mount" || action.id == "org.freedesktop.udisks2.filesystem-mount-system" || action.id == "org.freedesktop.udisks2.filesystem-mount-system-internal" ) && subject.isInGroup("xgrp")   )
    {
    return polkit.Result.YES;
    }
});

polkit.addRule(function(action, subject) {
    if (  ( action.id == "org.freedesktop.udisks2.filesystem-mount" || action.id == "org.freedesktop.udisks2.filesystem-mount-system" || action.id == "org.freedesktop.udisks2.filesystem-mount-other-seat" ) && subject.isInGroup("xgrp")   )
    {
    return polkit.Result.YES;
    }
});

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.udisks2.eject-media-other-seat" && subject.isInGroup("xgrp") )
    {
    return polkit.Result.YES;
    }
});

как файловые системы флешек, без отказа в авторизации,
начинают монтироваться,отмонтироваться и извлекаться.
Файловые системы внутренних HDD не прописанные в fstab,
всё так же продолжают монтироваться в /run/media и отмонтироваться
через thunar.


Возможно ли в пакете polkit-sysvinit обновить рулез монтирования,
чтобы не вкручивать рабочий рулез руками?
Comment 1 Michael Shigorin 2015-11-17 11:44:22 MSK
Просьба приложить файлом.
Comment 2 Speccyfighter 2015-11-17 14:57:20 MSK
Created attachment 6430 [details]
Рулез монтирования извлекаемых накопителей

Готово. Файл приложил.
Comment 3 Mikhail Efremov 2015-11-17 17:54:38 MSK
(В ответ на комментарий №0)
> > Не удалось подключить «alt-live-storage».
> > Not authorized to perform operation.
> 
> Несмотря на то, что сессия активна:
> 
> $ ck-list-sessions 

Активные сеансы давно уже показывает только
loginctl list-sessions
Иначе не было бы необходимости так грязно хакать политики polkit.
Мне вообще не нравится наличие такого пакета в Сизифе. Такие грязные хаки нужно делать по месту, понимая что и зачем ты делаешь. Еще как-то можно оправдать install-хуки в конкретном дистрибутиве, наверно, но паковать это в пакет - как-то слишком.
Кстати, отсылка в названии к sysvinit не имеет особых оснований: то, что в нем, не имеет никакого отношения к sysvinit. В нем просто запакованы довольно странные (мне не очевидно, почему члены группы xgrp вдруг могут делать разные вещи с носителями без всякой авторизации) политики polkit. Пользователь с systemd, установивший этот пакет, получит точно такие же странные политики.
Хоть группу бы сменить на специальную, чтобы хотя бы приходилось самостоятельно пользователя туда добавлять.
Comment 4 Speccyfighter 2015-11-17 21:03:15 MSK
(В ответ на комментарий №3)
> (В ответ на комментарий №0)
> > > Не удалось подключить «alt-live-storage».
> > > Not authorized to perform operation.
> > 
> > Несмотря на то, что сессия активна:
> > 
> > $ ck-list-sessions 
> 
> Активные сеансы давно уже показывает только
> loginctl list-sessions

И шо она должна по вашему показать?

# loginctl list-sessions
Failed to list sessions: Launch helper exited with unknown return code 1


> Иначе не было бы необходимости так грязно хакать политики polkit.

Это с каких пор описанное в секции AUTHORIZATION RULES документации polkit'а
стало грязным хаком? Включая подсекцию The Polkit type
О как интересно становится...

> Мне вообще не нравится наличие такого пакета в Сизифе.

Мне вообще не нравится слом функциональностей в init-системах в связи с
втягиванием systemd, и что?

> Такие грязные хаки нужно

RTFM

> делать по месту,

Даже в Слаке со своими gslapt, sourcery, slapt-get, slapt-src
про это давно уже забыли.

> делать по месту, понимая что и зачем ты делаешь. Еще как-то можно оправдать
> install-хуки в конкретном дистрибутиве, наверно, но паковать это в пакет -
> как-то слишком.

Да вы скажите прямо:
init на десктопах в альте мёртв и в альтах вам делать нечего

Я пойму.

> (мне не очевидно, почему члены группы xgrp вдруг могут делать разные
> вещи с носителями без всякой авторизации)

См. выше здесь же.

> Пользователь с systemd, установивший этот пакет, получит точно такие же странные политики.

Зачем ему этот пакет который никоим образом не должен быть повязан
зависимостями к компонентам systemd? Да и вообще ни с чем.

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

Разрешение монтирования всего что не прописано в fstab только для группы storage:

Заменить группу xgrp на storage в рулезе 60-sysvinit-mount-lastwork.rules
Далее:

# groupadd -r storage
# usermod -a -G storage altlinux

relogin в X-сессию

$ whoami 
altlinux

Монтирование флешки через thunar

# grep stor /etc/group
storage:x:467:altlinux

# mount|grep stor
/dev/sdc2 on /run/media/altlinux/alt-live-storage type ext4 (rw,nosuid,nodev,relatime,uhelper=udisks2)


> Пользователь с systemd,

Пользователю в шелл вообще на всё строго до лампочки:

# mv /etc/polkit-1/rules.d/60-sysvinit-mount-lastwork.rules /root/reserv/

$ mount|grep stor
$ 

$ udisksctl mount -b /dev/sdc2
==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-mount-other-seat ===
Для монтирования TOSHIBA TransMemory (/dev/sdc2) требуется подтверждение подлинности пользователя
Authenticating as: altlinux
==== AUTHENTICATION COMPLETE ===
Mounted /dev/sdc2 at /run/media/altlinux/alt-live-storage.

Но thunar после этого вылетит с отказом в авторизации при монтировании флешки.
Тут даже проверять не нужно.
Comment 5 Michael Shigorin 2015-11-17 22:05:37 MSK
(В ответ на комментарий №4)
> > Мне вообще не нравится наличие такого пакета в Сизифе.
+1, но спрашивают слишком часто.

> Мне вообще не нравится слом функциональностей в init-системах в связи
> с втягиванием systemd, и что?
А уж мне-то как...

> > Такие грязные хаки нужно
> RTFM
Давайте всё-таки следить за четырёхбуквенными выражениями и если применять, то исключительно уместно и не на грани хамства (тем более одному из разработчиков, который как раз много делает для комфортной работы на системах с sysvinit).

> > Хоть группу бы сменить на специальную, чтобы хотя бы приходилось
> > самостоятельно пользователя туда добавлять.
Знаешь, я подумал и решил, что группа xgrp -- как раз подходящая.
Comment 6 Speccyfighter 2015-11-17 23:25:41 MSK
(В ответ на комментарий №5)
> (В ответ на комментарий №4)
> > > Мне вообще не нравится наличие такого пакета в Сизифе.
> +1, но спрашивают слишком часто.

У себя приходится там где не через hal вворачивать руками.
Такое замусоривание и не очень удобно и затрудняет контроль.


> > > Такие грязные хаки нужно
> > RTFM
> Давайте всё-таки следить за четырёхбуквенными выражениями и если применять, то
> исключительно уместно и не на грани хамства (тем более одному из разработчиков,
> который как раз много делает для комфортной работы на системах с sysvinit).

Принято. Извиняюсь.
Но там не было подтекста.
Показалось излишним цитирование функционала из man polkit.
Ведь этот функционал описан в официальной документации в системе.
Тем более что преобразовать тот man в текстовый формат через col -bfx
у меня что-то не получилось для цитирования.
С манами почти всегда это выходит, но c маном polkit не вышло.
Но и только.

> > > Хоть группу бы сменить на специальную, чтобы хотя бы приходилось
> > > самостоятельно пользователя туда добавлять.
> Знаешь, я подумал и решил, что группа xgrp -- как раз подходящая.

Мне тоже так показалось.
Особенно в плане того, что для монтирования fs, например встроенного винчестера,
правка fstab необязательна, а значит не требует от пользователя
хоть какой-то квалификации, что сильно всё упростит.
Comment 7 Mikhail Efremov 2015-11-18 20:02:48 MSK
(В ответ на комментарий №4)
> (В ответ на комментарий №3)
> > (В ответ на комментарий №0)
> > > > Не удалось подключить «alt-live-storage».
> > > > Not authorized to perform operation.
> > > 
> > > Несмотря на то, что сессия активна:
> > > 
> > > $ ck-list-sessions 
> > 
> > Активные сеансы давно уже показывает только
> > loginctl list-sessions
> 
> И шо она должна по вашему показать?
> # loginctl list-sessions
> Failed to list sessions: Launch helper exited with unknown return code 1

То, что показывает: нет никаких активных сеансов (и даже systemd-logind не запущен, очевидно). Именно это видит polkit.

> > Иначе не было бы необходимости так грязно хакать политики polkit.
> 
> Это с каких пор описанное в секции AUTHORIZATION RULES документации polkit'а
> стало грязным хаком? Включая подсекцию The Polkit type
> О как интересно становится...

Кажется, вы не понимаете что делают эти правила.

> $ udisksctl mount -b /dev/sdc2
> ==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-mount-other-seat ===
> Для монтирования TOSHIBA TransMemory (/dev/sdc2) требуется подтверждение
> подлинности пользователя
> Authenticating as: altlinux
> ==== AUTHENTICATION COMPLETE ===
> Mounted /dev/sdc2 at /run/media/altlinux/alt-live-storage.

Ну, могу объяснить что здесь происходит.
Активных пользователей нет, поэтому работают умолчательные правила авторизации allow_any, в данном случае - auth_admin.
udisksctl сам себе polkit-агент, поэтому проводит аутентификацию администратора (с точки зрения polkit, администратор polkit != root). Пользователь altlinux, очевидно, член группы wheel, поэтому - администратор. Пароля у него нет, поэтому его не спрашивают.
Если же для org.freedesktop.udisks2.filesystem-mount-other-seat написать аналогичные правила с Result.YES, то ничего этого не будет, разумеется. Все сразу будет разрешено.

> 
> Но thunar после этого вылетит с отказом в авторизации при монтировании флешки.
> Тут даже проверять не нужно.

Да, конечно. Потому что нет никакого polkit-агента и провести аутентификацию не получается. Был бы - все было бы как с udisksctl в консоли.
Проблема в том, что все polkit-агенты в Сизифе отказываются работать без systemd-logind. Даже тот, который теперь есть в nmcli :(.
Comment 8 Mikhail Efremov 2015-11-18 20:38:03 MSK
(В ответ на комментарий №5)
> Знаешь, я подумал и решил, что группа xgrp -- как раз подходящая.

Я так не думаю. На самом деле более-менее приемлемым вариантом была бы просто подмена активного сеанса членством в некоторой группе (и xgrp определенно для такой подмены не подходит, член этой группы не должен автоматически считаться имеющим активный сеанс) с сохранением умолчательных правил авторизации из пакета. Т.е. возвращать Result.YES только там, где написано allow_active yes (при условии членства пользователя в этой группе, разумеется). И не вмешиваться в политики пакета в остальных случаях.
Это был бы уже не хак, а костыль, пожалуй :). Но сделать так не получится пока у нас нет работающего без systemd polkit-агента, которого можно было бы использовать в DE.
Comment 9 Speccyfighter 2015-11-19 02:53:10 MSK
(В ответ на комментарий №7)
> Активных пользователей нет, поэтому работают умолчательные правила авторизации
> allow_any, в данном случае - auth_admin.
> udisksctl сам себе polkit-агент, поэтому проводит аутентификацию администратора


> (с точки зрения polkit, администратор polkit != root).

Ах вот оно что...
Спасибо за разъяснение.

> Пользователь altlinux,
> очевидно, член группы wheel, поэтому - администратор. Пароля у него нет,
> поэтому его не спрашивают.
> Если же для org.freedesktop.udisks2.filesystem-mount-other-seat написать
> аналогичные правила с Result.YES, то ничего этого не будет, разумеется. Все
> сразу будет разрешено.
> 
> > 
> > Но thunar после этого вылетит с отказом в авторизации при монтировании флешки.
> > Тут даже проверять не нужно.
> 
> Да, конечно. Потому что нет никакого polkit-агента и провести аутентификацию не
> получается. Был бы - все было бы как с udisksctl в консоли.
> Проблема в том, что все polkit-агенты в Сизифе отказываются работать без
> systemd-logind. Даже тот, который теперь есть в nmcli :(.
Comment 10 Michael Shigorin 2016-02-24 18:09:02 MSK
На всякий: мартовские стартеркиты явно будут ещё на p7, а на p8 выпустим отдельно по мере готовности к бранчеванию; посему если будет что добавить в пакет, то хорошо бы это знать в первых числах марта.
Comment 11 Speccyfighter 2016-02-27 21:55:02 MSK
На HP Compaq NX6110 используется тестовая сизифная сборка xfce+sysv от dango:
(линк на сборку тут)
https://forum.altlinux.org/index.php?topic=36177.msg275754#msg275754
regular-xfce-sysv-20160118-i586.iso
https://yadi.sk/d/e-2Rhp_enHDDx

В рулез монтирования

# rpm -qf /etc/polkit-1/rules.d/60*.rules
polkit-sysvinit-0.2-alt1
polkit-sysvinit-0.2-alt1

(пакетный рулез отправлен в резерв):

# ls /root/60-sysvinit-mount.rules 
/root/60-sysvinit-mount.rules

на установленной системе внесены изменения,
взятые из последней правки polkit на wiki
(причина указана на форуме):
https://forum.altlinux.org/index.php?topic=36177.msg276171#msg276171
https://www.altlinux.org/Polkit

Кратко о причине:

> Кстати, у меня файловая ext3 с usb-hdd не захотела монтироваться
> через Thunar,несмотря на то, что пакет установлен:
>
> # rpm -q polkit-sysvinit
> polkit-sysvinit-0.2-alt1

Поэтому текущее в системе пакетный рулез монтирования
был заменён на хак из вики
( https://www.altlinux.org/Polkit -- раздел 2 секции Примеры):

# cat /etc/altlinux-release 
ALT Linux Sisyphus (unstable)

# cat /etc/polkit-1/rules.d/99-udisk2_mount.rules 
polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.udisks2.filesystem-mount-system" && subject.isInGroup("xgrp")) {
	return polkit.Result.YES;
    };
    if (action.id == "org.freedesktop.udisks2.filesystem-mount-other-seat" && subject.isInGroup("xgrp")) {
	return polkit.Result.YES;
    };
        if (action.id == "org.freedesktop.udisks2.eject-media-other-seat" && subject.isInGroup("xgrp")) {
    	return polkit.Result.YES;
        };
        if (action.id == "org.freedesktop.udisks2.power-off-drive-other-seat" && subject.isInGroup("xgrp")) {
    	return polkit.Result.YES;
        };
});


Шероховатостей пока не замечено:

# date
Сб фев 27 21:32:59 MSK 2016

# tune2fs -l /dev/sda1|grep crea
Filesystem created:       Wed Jan 20 17:38:00 2016
Comment 12 Speccyfighter 2016-03-08 17:39:03 MSK
Завершающий вариант рулеза монтирования


Текущее в свежепереустановленной системе из регулярного образа сборки dango

# rpm -qa|grep systemd
libsystemd-228-alt2
systemd-utils-228-alt2


# apt-cache rdepends systemd-utils
systemd-utils
Reverse Depends:
  vargus
  vargus
  startup
  udev
  systemd-services


Выключение и Перезагрузка не работают, - затенены.
Устанавливаем systemd-services
(Потом это понадобится и для накопителей)


# apt-get install systemd-services


который в свою очередь подтянет и

# apt-cache depends systemd-services|grep pam
  Требует: pam_systemd = 1:228-alt2


Текущее в системе

# rpm -qa|grep systemd
libsystemd-228-alt2
pam_systemd-228-alt2
systemd-utils-228-alt2
systemd-services-228-alt2


Все опции xfsm-shutdown-helper работают.

Выдрать systemd-utils и/или libsystemd не вышло:
удаление любого из этих пакетов приводит к полному выносу системы на xfce.


Пакетный рулез монтирования

# ls -1 /etc/polkit-1/rules.d/
50-default.rules
60-sysvinit-mount.rules
60-sysvinit-nm.rules
60-xfsm-shutdown-helper.rules


# cat /etc/polkit-1/rules.d/60-sysvinit-mount.rules 
polkit.addRule(function(action, subject) {
    if (  ( action.id == "org.freedesktop.udisks2.filesystem-mount" || action.id == "org.freedesktop.udisks2.filesystem-mount-system" || action.id == "org.freedesktop.udisks2.filesystem-mount-system-internal" ) && subject.isInGroup("xgrp")   )
    {
	return polkit.Result.YES;
    }
});

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.udisks2.eject-media"  && subject.isInGroup("xgrp") )
    {
	return polkit.Result.YES;
    }
});


# rpm -qf /etc/polkit-1/rules.d/60-sysvinit-mount.rules 
polkit-sysvinit-0.2-alt1


не работает для несистемных (removable) устройств, если система установлена на несистемное устройство (udisks2 -- HintSystem: false) (в данном случае на usb-hdd).
Пакетный рулез монтирования работает, если система установлена на системное устройство (udisks2 -- HintSystem: true).


# udisksctl info -b /dev/sda | grep 'Device:\|HintSystem:\| \/'
    CryptoBackingDevice:        '/'
    Device:                     /dev/sda
    HintSystem:                 true
    PreferredDevice:            /dev/sda
    Symlinks:                   /dev/disk/by-id/ata-WDC_WD1000VE-00KWT0_WD-WXEZ05151397
                                /dev/disk/by-id/wwn-0x50014ee10003b206
                                /dev/disk/by-path/pci-0000:00:1f.1-ata-1


# udisksctl info -b /dev/sdb | grep 'Device:\|HintSystem:\| \/'
    CryptoBackingDevice:        '/'
    Device:                     /dev/sdb
    HintSystem:                 false
    PreferredDevice:            /dev/sdb
    Symlinks:                   /dev/disk/by-id/ata-TOSHIBA_MK5065GSX_10MIC05OT
                                /dev/disk/by-id/wwn-0x5000039243b85ee9
                                /dev/disk/by-path/pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0


# udisksctl info -b /dev/sdc | grep 'Device:\|HintSystem:\| \/'
    CryptoBackingDevice:        '/'
    Device:                     /dev/sdc
    HintSystem:                 false
    PreferredDevice:            /dev/sdc
    Symlinks:                   /dev/disk/by-id/usb-Multiple_Card_Reader_058F63666433-0:0
                                /dev/disk/by-label/ALT\x20Linux\x20regular-xfce-sysv\x2fi586
                                /dev/disk/by-path/pci-0000:03:00.2-usb-0:1:1.0-scsi-0:0:0:0
                                /dev/disk/by-uuid/2016-01-18-15-09-32-00


# udisksctl info -b /dev/sr0 | grep 'Device:\|HintSystem:\| \/'
    CryptoBackingDevice:        '/'
    Device:                     /dev/sr0
    HintSystem:                 false
    PreferredDevice:            /dev/sr0
    Symlinks:                   /dev/cdrom
                                /dev/disk/by-id/ata-Optiarc_DVD_RW_AD-7560A_30648490_3103979Q112
                                /dev/disk/by-path/pci-0000:00:1f.1-ata-1


Ключевое здесь, это состояние HintSystem для устройства, которое разделяет устройства на системные и несистемные.


Поэтому добавляем свой кастомный рулез монтирования

# cat /etc/polkit-1/rules.d/99-udisk2_mount.rules 
// Rule for system devices - internal HDD
//
polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.udisks2.filesystem-mount-system" && subject.isInGroup("xgrp")) {
    return polkit.Result.YES;
    };

// Rules for non system (removable) devices
//
// Create storage system group:
// groupadd -r storage
//
// Add USER to group storage
// gpasswd -a USER storage
//
// Relogin is needed
//
    if (action.id == "org.freedesktop.udisks2.filesystem-mount-other-seat" && subject.isInGroup("storage")) {
    return polkit.Result.YES;
    };
        if (action.id == "org.freedesktop.udisks2.eject-media-other-seat" && subject.isInGroup("storage")) {
        return polkit.Result.YES;
        };
        if (action.id == "org.freedesktop.udisks2.power-off-drive-other-seat" && subject.isInGroup("storage")) {
        return polkit.Result.YES;
        };
});


Создаём группу storage

# groupadd -r storage


Добавляем пользователя в группу storage

# gpasswd -a логин_пользователя storage


Перелогиниваемся.
Монтирование несистемных накопителей работает.

Группа storage действует для всех устройств с HintSystem: false для пользователей добавленных в группу storage. Это извлекаемые накопители и накопители оптических дисков.
Пользователям состоящим в группе xgrp рулез разрешает монтировать файловые системы системных устройств (HintSystem: true), если файловая не прописана в fstab (в официальных альтах они смонтированы дефолтом через fstab) и не требует от пользователя познаний в конфигурировании fstab.


Пакетный же рулез монтирования
polkit-sysvinit-0.2-alt1
/etc/polkit-1/rules.d/60-sysvinit-mount.rules
в системе установленной на системное устройство, при установленных пакетах

# rpm -qa|grep systemd
libsystemd-228-alt2
pam_systemd-228-alt2
systemd-utils-228-alt2
systemd-services-228-alt2

не позволяет:
- смонтировать файловую систему несистемного (removable) устройства (HintSystem: false)
- извлечь (отключить питание) несистемное устройство
- смонтировать файловую оптического диска
- извлечь лоток оптического привода с диском

позволяет:
- смонтировать файловую системного устройства (internal hdd; HintSystem: true)
Comment 13 Michael Shigorin 2016-03-10 19:50:45 MSK
Так.  Можно в режиме "для прапорщика" изложить, что надо?
Comment 14 Michael Shigorin 2016-03-10 19:56:10 MSK
В смысле "это сюда, это туда", а не развёрнутый разбор "что не так сейчас".
Comment 15 Michael Shigorin 2016-03-11 21:50:41 MSK
Похоже, уже на p8 уедет... только лучше всё равно заранее обеспечить пакет.
Comment 16 Speccyfighter 2016-03-12 00:39:03 MSK
(В ответ на комментарий №14)
> В смысле "это сюда, это туда", а не развёрнутый разбор "что не так сейчас".

Да, извиняюсь, про это-то и забыл.

В пакете

# rpm -qa|grep polkit-sysvinit
polkit-sysvinit-0.2-alt1

полностью заменить содержимое этого рулеза

# rpm -ql polkit-sysvinit|grep mount
/etc/polkit-1/rules.d/60-sysvinit-mount.rules

содержащего

# cat /etc/polkit-1/rules.d/60-sysvinit-mount.rules 
polkit.addRule(function(action, subject) {
    if (  ( action.id == "org.freedesktop.udisks2.filesystem-mount" || action.id == "org.freedesktop.udisks2.filesystem-mount-system" || action.id == "org.freedesktop.udisks2.filesystem-mount-system-internal" ) && subject.isInGroup("xgrp")   )
    {
	return polkit.Result.YES;
    }
});

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.udisks2.eject-media"  && subject.isInGroup("xgrp") )
    {
	return polkit.Result.YES;
    }
});


чтобы рулез

# rpm -ql polkit-sysvinit|grep mount
/etc/polkit-1/rules.d/60-sysvinit-mount.rules

содержал вот это

// Rule for system devices - internal HDD
//
polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.udisks2.filesystem-mount-system" && subject.isInGroup("xgrp")) {
    return polkit.Result.YES;
    };

// Rules for non system (removable) devices
//
// Create storage system group:
// groupadd -r storage
//
// Add USER to group storage
// gpasswd -a USER storage
//
// Relogin is needed
//
    if (action.id == "org.freedesktop.udisks2.filesystem-mount-other-seat" && subject.isInGroup("storage")) {
    return polkit.Result.YES;
    };
        if (action.id == "org.freedesktop.udisks2.eject-media-other-seat" && subject.isInGroup("storage")) {
        return polkit.Result.YES;
        };
        if (action.id == "org.freedesktop.udisks2.power-off-drive-other-seat" && subject.isInGroup("storage")) {
        return polkit.Result.YES;
        };
});

Здесь, строка(и) начинающиеся с if до return, это одна строка(и).
Строка(и) начинающиеся с return, это следующая строка(и).


По умолчанию этим рулезом
- разрешено монтирование файловых систем внутренних винчестеров (sata/ide-интерфейсы), если эти файловые не прописаны в fstab и пользователь входит в группу xgrp; монтирование через thunar;
- запрещено монтирование и извлечение извлекаемых носителей; разрешается для пользователя при создании системной группы storage с добавлением пользователя в эту группу.

Проверено в двух регулярных системах xfce+sysv сборки Михаила Шигорина (установлена на usb-hdd) и dango (установлена на ide-hdd ноутбука).

Был бы чрезвычайно признателен, если бы кто-то сделал контрольную проверку этого рулеза в своей системе xfce+sysv.
Comment 17 Michael Shigorin 2016-04-21 14:20:36 MSK
Собрал альфу p8 starterkits, можно попробовать что-то _конкретное_ в бету.
Comment 18 Speccyfighter 2016-04-27 16:53:58 MSK
(В ответ на комментарий №17)
> Собрал альфу p8 starterkits,

А как бы на него посмотреть?
Ссылку на образ можно?
Если xfce с sysv, глянул бы.
У меня на буке как раз винчестер помер, и его место вчера занял другой.
Который час-два назад прошёл тесты (б/у-шный же), но пока чистый.


> можно попробовать что-то _конкретное_ в бету.
Comment 19 Speccyfighter 2016-05-02 17:02:39 MSK
Проблема извлечения несистемных (usb) накопителей решена минимальными усилиями.
Полностью тут:
https://forum.altlinux.org/index.php?topic=36753.msg285597#msg285597
Comment 20 Michael Shigorin 2016-05-31 13:06:11 MSK
Так, и всё же.  Завтра собираю альфу летних стартеркитов.  Если созрел файлик, который бы обновить в пакете polkit-sysvinit -- просьба его приложить _сюда_. :)
Comment 21 Michael Shigorin 2016-06-07 13:09:02 MSK
ping
Comment 22 Michael Shigorin 2016-09-02 15:54:03 MSK
ping
Comment 23 Speccyfighter 2016-09-06 19:33:23 MSK
Created attachment 6813 [details]
рулезы polkit под sysv в v0.3.2
Comment 24 Speccyfighter 2016-09-06 19:37:52 MSK
В текущем состоянии, с откатом на
http://ftp.altlinux.org/pub/distributions/archive/sisyphus/date/2016/05/03 i586 classic
http://ftp.altlinux.org/pub/distributions/archive/sisyphus/date/2016/05/03 noarch classic

на то состояние когда polkitd не умирает
(
вероятно пересекается с
https://bugzilla.altlinux.org/show_bug.cgi?id=32364#c2
)

установленный работающий пакет
$ rpm -q polkit-sysvinit
polkit-sysvinit-0.3.2-alt1
Comment 25 Speccyfighter 2016-09-06 19:40:17 MSK
Created attachment 6814 [details]
polkit-sysvinit-0.3.2-alt1.noarch.rpm
Comment 26 Repository Robot 2016-11-04 18:31:28 MSK
polkit-sysvinit-0.3.2-alt2 -> sisyphus:

* Fri Nov 04 2016 Michael Shigorin <mike@altlinux> 0.3.2-alt2
- built for sisyphus (closes: #31501)

* Fri Aug 12 2016 Yury Pakin <zxwarior@yandex.ru> 0.3.2-alt1
- fixed: absence of LF at the end of file 60-sysvinit-mount.rules

* Thu May 05 2016 Yury Pakin <zxwarior@yandex.ru> 0.3.1-alt1
- added 60-sysvinit-console-kit.rules

* Sat Mar 12 2016 Daniil Golovanov <dangolan@yandex.ru> 0.3-alt1
- change 60-sysvinit-mount.rules (thx Speccyfighter)