Автор Тема: Замена системы инициализации systemd на sysvinit  (Прочитано 11385 раз)

dango

  • Гость
для ясности нужно резко погружаться с головой.
+1
Если система установлена на стационарнике, извлечение флешки отрабатывало и без этих двух правил.
Поглядел на правило в прошлогоднем эксперименте:
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("storage")   )
    {
   return polkit.Result.YES;
    }
});

polkit.addRule(function(action, subject) {
    if ( ( action.id == "org.freedesktop.udisks2.eject-media" || action.id == "org.freedesktop.udisks2.power-off-drive" || action.id == "org.freedesktop.udisks2.encrypted-unlock" )  && subject.isInGroup("storage") )
    {
   return polkit.Result.YES;
    }
});
Тогда проверял с USB-флэшками и USB-диском на нетбуке. Работало. А вот с подключенным HDD не проверял. И картой памяти не проверял. Надо учесть на будущее.
Но пока не пойму, к чему относится это, и что под этим имелось в виду:
  <action id="org.freedesktop.udisks2.filesystem-mount">
    <description xml:lang="ru">Монтировать файловую систему</description>
    <message xml:lang="ru">Для монтирования файловой системы требуется подтверждение подлинности пользователя</message>
Текст сообщения для файл-менеджера на событие монтирования?
The polkit actions are not considered stable and may change from release to release so administrators should take notice when upgrading from one version of udisks to another. For example, polkit authorization rules may need to be updated to match an updated policy.
Ничто не вечно под Луной :-)

Оффлайн gvy

  • alt linux team
  • ***
  • Сообщений: 1 008
    • Альт на Эльбрусе
    • Email
карту просто некуда вставить:
С livecd могу проверять, SD-читалка есть.
--
Michael Shigorin | ALT Linux Team | ANNA-News | Сделано у нас | altlinux.org/эльбрус

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Наброски по polkit

В альтовой вики по polkit написано неверно:
https://www.altlinux.org/Polkit
Цитировать
     auth_admin - пользователь должен ввести пароль root при каждом запросе разрешения
    auth_admin_keep_session - пользователь должен ввести пароль root, разрешение предоставляется для всей сессии
    auth_admin_keep_always - пользователь должен ввести пароль root, разрешение предоставляется для текущей и будущих сессий
Исправлено.

В polkit
auth_admin* != root

потому что
# grep -rHi unix-group /etc/
/etc/polkit-1/rules.d/50-default.rules:    return ["unix-group:wheel"];
# grep -v '^/' /etc/polkit-1/rules.d/50-default.rules

polkit.addAdminRule(function(action, subject) {
    return ["unix-group:wheel"];
});

Администратор для polkit (AUTH_ADMIN*), это пользователь состоящий в группе wheel.
При auth_admin* авторизация будет пройдена при вводе своего пароля пользователя состоящего в группе wheel.
auth_self* - владелец сессии. Не администратор.
AUTH_ADMIN - авторизация всегда.
AUTH_ADMIN_KEEP - авторизация один раз за период в 5 минут.


Используемые действия (actions.id):

Файловая прописанная в fstab извлекаемого устройства usb-hdd с которого загружалась система - на загрузке системы файловая монтировалась пользователем root как прописанная в fstab, отмонтируется пользователем unix-group, т.е. состоящим в группе wheel:
$ udisksctl unmount -b /dev/sda3
==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-unmount-others ===
Для демонтирования TOSHIBA MK5065GSX (/dev/sda3), смонтированного другим пользователем, требуется подтверждение подлинности пользователя
Authenticating as: Я
Password:
==== AUTHENTICATION COMPLETE ===
Unmounted /dev/sda3.

Монтирование файловой CD-диска:
$ udisksctl mount -b /dev/sr0
==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-mount-other-seat ===
Для монтирования Optiarc DVD RW AD-7560A (/dev/sr0) требуется подтверждение подлинности пользователя

Монтирование usb-flash:
$ udisksctl mount -b /dev/sdc2
==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-mount-other-seat ===
Для монтирования Kingston DataTraveler 2.0 (/dev/sdc2) требуется подтверждение подлинности пользователя

Монтирование файловой стационарного (системного, неизвлекаемого) HDD:
$ udisksctl mount -b /dev/sdb2
==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-mount-system ===
Для монтирования SAMSUNG HM160HC (/dev/sdb2) требуется подтверждение подлинности пользователя

Монтирование файловой usb-hdd прописанной в fstab:
$ udisksctl mount -b /dev/sda3
==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-mount-other-seat ===
Для монтирования TOSHIBA MK5065GSX (/dev/sda3) требуется подтверждение подлинности пользователя
Authenticating as: Я
Password:
==== AUTHENTICATION COMPLETE ===
Mounted /dev/sda3 at /mnt/sdd3.

Размонтирование файловой системного HDD прописанной в fstab:
$ udisksctl unmount -b /dev/sdb2
==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-unmount-others ===
Для демонтирования SAMSUNG HM160HC (/dev/sdb2), смонтированного другим пользователем, требуется подтверждение подлинности пользователя
Authenticating as: Я
Password:
==== AUTHENTICATION COMPLETE ===
Unmounted /dev/sdb2.
Рулез в /etc/polkit-1/ отсутствует. Используется правило из /usr/share/polkit-1/ для udisks2:
/usr/share/polkit-1/actions/org.freedesktop.udisks2.policy

<action id="org.freedesktop.udisks2.filesystem-unmount-others">
    <description>Unmount a device mounted by another user</description>
    <description xml:lang="ru">Демонтировать устройство, смонтированное другим пользователем</description>
    <defaults>
      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>
Поскольку в альтах CK сломан, несмотря на,
$ ck-list-sessions | grep 'Sess\|act'
Session1:
active = TRUE
используется,
      <allow_inactive>auth_admin</allow_inactive>
пароль auth_admin запрашивается всегда, а разрешение с запросом на период в 5 мин не работает:
      <allow_active>auth_admin_keep</allow_active>


Системные и извлекаемые устройства:
Цитировать
http://udisks.freedesktop.org/docs/latest/udisks-polkit-actions.html

Often there will be two polkit actions for one operation - one for so-called “system devices” and one for non-system devices. In this context “system device” refers to the value of the Block:HintSystem D-Bus property and is normally only TRUE for devices not considered “removable” (devices considered removable include USB attached storage, Flash media and optical drives). See udisks(8) for how to control if a device is considered a system device.

Системные устройства: устройства завязанные на D-Bus с TRUE, не съёмные (извлекаемые). mount-system
Извлекаемые (съёмные) устройства: USB-подключаемые накопители, Flash Media и оптические приводы. mount-other-seat

polkit обрабатывает рулезы *.rules в алфавином порядке в соответствии с ascii-таблицей:
Цитировать
http://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html
AUTHORIZATION RULES

polkitd reads .rules files from the /etc/polkit-1/rules.d and /usr/share/polkit-1/rules.d directories by sorting the files in lexical order based on the basename on each file (if there's a tie, files in /etc are processed before files in /usr).
Цитировать
сортируя файлы в лексическом порядке основываясь на базовом имени каждого файла
(Вот-эт-то-блин-завернул-так-завернул! А техническим, а не гуманитарным языком, вот это же можно повторить?)
Файловые системы прописанные в fstab в левом окне thunar не отображаются.
« Последнее редактирование: 12.01.2016 14:27:51 от Speccyfighter »

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

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Статью про polkit писал я и довольно давно. Прошу косяки сразу править, а не в грязь лицом ;-)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Статью про polkit писал я и довольно давно. Прошу косяки сразу править, а не в грязь лицом ;-)

Это не в грязь лицом. :-)
Пока это записки на коленках:
Мне не 17, со здоровьем проблемы, могу и забыть:
Одна вкладка документации приводит к открытию четырёх, и расти их количество начинает в геометрической прогрессии.
Уже минимум сутки из этого полкита не вылезаю, в добавок всё осложняет сломанный CK.

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

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Ладно, сам сейчас подправлю. Спасибо за наводку, а то я тут, к примеру, неправильно посоветовал: https://forum.altlinux.org/index.php?topic=34850.msg263697#msg263697 И только благодаря вам нашёл наконец правильное решение. (память феноменальная;-) ).

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Уточняю.
Отдельно правила для USB-носителей, отдельно - для HDD? А карты памяти куда?

Здесь всё хитрее:
С точки зрения ядра, usb-флеш и sd-карты, это разные устройства (см. блок-схему на скриншоте), но с точки зрения polkit, usb-флеш и sd-карты, это группа устройств подключаемых в другое место (other-seat):
Цитировать
(devices considered removable include USB attached storage, Flash media and optical drives).

По моему скромному :-)
Поэтому, на мой взгляд, несмотря на большую обтекаемость определения, более точной формулировки не подобрать, - other seat. Оно может быть очень разным это самое другое место.


И опять вернёмся в прошлое, т.е. к документации:
Цитировать
http://udisks.freedesktop.org/docs/latest/udisks-polkit-actions.html
Often there will be two polkit actions for one operation - one for so-called “system devices” and one for non-system devices. In this context “system device” refers to the value of the Block:HintSystem D-Bus property and is normally only TRUE for devices not considered “removable” (devices considered removable include USB attached storage, Flash media and optical drives). See udisks(8) for how to control if a device is considered a system device.
Цитировать
Часто будут два polkit actions для одной операции - одно для так называемых "системных устройств" и одно для несистемных устройств. В этом контексте "системное устройство" относится к значению Block:HintSystem DBus объекта, и как правило только TRUE для устройств не считающихся "извлекаемыми" (устройства которые считаются извлекаемыми, включают USB подключаемые накопители, Flash медиа и оптические приводы). См. udisks(8) как управлять, если устройство считается системным устройством.

Вот это самое TRUE, в разграничении системных и несистемных устройств, ключевой момент.

Чтобы посмотреть, является ли устройство системным или нет, нужно обратить внимание на статус HintSystem, - для системных устройств, этот статус TRUE:
# udisksctl status
MODEL                     REVISION  SERIAL               DEVICE
--------------------------------------------------------------------------
SAMSUNG HM160HC                                          sdb     #Внутренний (стационарный) винчестер
Optiarc DVD RW AD-7560A                                  sr0     #Оптический привод
TOSHIBA MK5065GSX                                        sda     #USB-винчестер
Kingston DataTraveler 2.0                                sdc     #USB-флеш
Multiple Card  Reader                                    sdd     #Кард-ридер с microSD картой
# udisksctl info -b /dev/sda|grep ' Device:\|HintSystem'
    Device:                     /dev/sda
    HintSystem:                 false
# udisksctl info -b /dev/sdb|grep ' Device:\|HintSystem'
    Device:                     /dev/sdb
    HintSystem:                 true
# udisksctl info -b /dev/sdc|grep ' Device:\|HintSystem'
    Device:                     /dev/sdc
    HintSystem:                 false
# udisksctl info -b /dev/sdd|grep ' Device:\|HintSystem'
    Device:                     /dev/sdd
    HintSystem:                 false
# udisksctl info -b /dev/sr0|grep ' Device:\|HintSystem'
    Device:                     /dev/sr0
    HintSystem:                 false

Проще и короче говоря, это устройство, системное (polkit policy: udisks2.filesystem-mount-system), его статус HintSystem стоит в true:
# udisksctl info -b /dev/sdb|grep ' Device:\|HintSystem'
    Device:                     /dev/sdb
    HintSystem:                 true
Все остальные показанные в первом выводе, это несистемные устройства (polkit policy: udisks2.filesystem-mount-other-seat) - у них статус HintSystem стоит в false.
« Последнее редактирование: 14.01.2016 12:37:04 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Разыскал откуда брал pdf-ку из которой дёргались скриншоты.
Лицензия документа: Creative Commons BY-SA
Страница скачивания в pdf и odf:
http://free-electrons.com/docs/block-drivers/
http://free-electrons.com/docs/linux-usb/

Там в Docs наверное ещё можно что-то посмотреть.