| Summary: | Извлекаемые накопители в системах на sysv - отказ в авторизации | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | Speccyfighter <zxwarior> | ||||||||
| Component: | polkit-sysvinit | Assignee: | Michael Shigorin <mike> | ||||||||
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||||||
| Severity: | normal | ||||||||||
| Priority: | P3 | CC: | aen, lav, mike, sem | ||||||||
| Version: | unstable | ||||||||||
| Hardware: | all | ||||||||||
| OS: | Linux | ||||||||||
| URL: | https://forum.altlinux.org/index.php?topic=34428.msg257188#msg257188 | ||||||||||
| Attachments: |
|
||||||||||
Просьба приложить файлом. Created attachment 6430 [details]
Рулез монтирования извлекаемых накопителей
Готово. Файл приложил.
(В ответ на комментарий №0)
> > Не удалось подключить «alt-live-storage».
> > Not authorized to perform operation.
>
> Несмотря на то, что сессия активна:
>
> $ ck-list-sessions
Активные сеансы давно уже показывает только
loginctl list-sessions
Иначе не было бы необходимости так грязно хакать политики polkit.
Мне вообще не нравится наличие такого пакета в Сизифе. Такие грязные хаки нужно делать по месту, понимая что и зачем ты делаешь. Еще как-то можно оправдать install-хуки в конкретном дистрибутиве, наверно, но паковать это в пакет - как-то слишком.
Кстати, отсылка в названии к sysvinit не имеет особых оснований: то, что в нем, не имеет никакого отношения к sysvinit. В нем просто запакованы довольно странные (мне не очевидно, почему члены группы xgrp вдруг могут делать разные вещи с носителями без всякой авторизации) политики polkit. Пользователь с systemd, установивший этот пакет, получит точно такие же странные политики.
Хоть группу бы сменить на специальную, чтобы хотя бы приходилось самостоятельно пользователя туда добавлять.
(В ответ на комментарий №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 после этого вылетит с отказом в авторизации при монтировании флешки. Тут даже проверять не нужно. (В ответ на комментарий №4) > > Мне вообще не нравится наличие такого пакета в Сизифе. +1, но спрашивают слишком часто. > Мне вообще не нравится слом функциональностей в init-системах в связи > с втягиванием systemd, и что? А уж мне-то как... > > Такие грязные хаки нужно > RTFM Давайте всё-таки следить за четырёхбуквенными выражениями и если применять, то исключительно уместно и не на грани хамства (тем более одному из разработчиков, который как раз много делает для комфортной работы на системах с sysvinit). > > Хоть группу бы сменить на специальную, чтобы хотя бы приходилось > > самостоятельно пользователя туда добавлять. Знаешь, я подумал и решил, что группа xgrp -- как раз подходящая. (В ответ на комментарий №5) > (В ответ на комментарий №4) > > > Мне вообще не нравится наличие такого пакета в Сизифе. > +1, но спрашивают слишком часто. У себя приходится там где не через hal вворачивать руками. Такое замусоривание и не очень удобно и затрудняет контроль. > > > Такие грязные хаки нужно > > RTFM > Давайте всё-таки следить за четырёхбуквенными выражениями и если применять, то > исключительно уместно и не на грани хамства (тем более одному из разработчиков, > который как раз много делает для комфортной работы на системах с sysvinit). Принято. Извиняюсь. Но там не было подтекста. Показалось излишним цитирование функционала из man polkit. Ведь этот функционал описан в официальной документации в системе. Тем более что преобразовать тот man в текстовый формат через col -bfx у меня что-то не получилось для цитирования. С манами почти всегда это выходит, но c маном polkit не вышло. Но и только. > > > Хоть группу бы сменить на специальную, чтобы хотя бы приходилось > > > самостоятельно пользователя туда добавлять. > Знаешь, я подумал и решил, что группа xgrp -- как раз подходящая. Мне тоже так показалось. Особенно в плане того, что для монтирования fs, например встроенного винчестера, правка fstab необязательна, а значит не требует от пользователя хоть какой-то квалификации, что сильно всё упростит. (В ответ на комментарий №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 :(. (В ответ на комментарий №5)
> Знаешь, я подумал и решил, что группа xgrp -- как раз подходящая.
Я так не думаю. На самом деле более-менее приемлемым вариантом была бы просто подмена активного сеанса членством в некоторой группе (и xgrp определенно для такой подмены не подходит, член этой группы не должен автоматически считаться имеющим активный сеанс) с сохранением умолчательных правил авторизации из пакета. Т.е. возвращать Result.YES только там, где написано allow_active yes (при условии членства пользователя в этой группе, разумеется). И не вмешиваться в политики пакета в остальных случаях.
Это был бы уже не хак, а костыль, пожалуй :). Но сделать так не получится пока у нас нет работающего без systemd polkit-агента, которого можно было бы использовать в DE.
(В ответ на комментарий №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 :(. На всякий: мартовские стартеркиты явно будут ещё на p7, а на p8 выпустим отдельно по мере готовности к бранчеванию; посему если будет что добавить в пакет, то хорошо бы это знать в первых числах марта. На 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 Завершающий вариант рулеза монтирования
Текущее в свежепереустановленной системе из регулярного образа сборки 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)
Так. Можно в режиме "для прапорщика" изложить, что надо? В смысле "это сюда, это туда", а не развёрнутый разбор "что не так сейчас". Похоже, уже на p8 уедет... только лучше всё равно заранее обеспечить пакет. (В ответ на комментарий №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. Собрал альфу p8 starterkits, можно попробовать что-то _конкретное_ в бету. (В ответ на комментарий №17) > Собрал альфу p8 starterkits, А как бы на него посмотреть? Ссылку на образ можно? Если xfce с sysv, глянул бы. У меня на буке как раз винчестер помер, и его место вчера занял другой. Который час-два назад прошёл тесты (б/у-шный же), но пока чистый. > можно попробовать что-то _конкретное_ в бету. Проблема извлечения несистемных (usb) накопителей решена минимальными усилиями. Полностью тут: https://forum.altlinux.org/index.php?topic=36753.msg285597#msg285597 Так, и всё же. Завтра собираю альфу летних стартеркитов. Если созрел файлик, который бы обновить в пакете polkit-sysvinit -- просьба его приложить _сюда_. :) ping ping Created attachment 6813 [details]
рулезы polkit под sysv в v0.3.2
В текущем состоянии, с откатом на 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 Created attachment 6814 [details]
polkit-sysvinit-0.3.2-alt1.noarch.rpm
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) |
С текущим рулезом пакета 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 обновить рулез монтирования, чтобы не вкручивать рабочий рулез руками?