LINUX.ORG.RU

polkit/udisk + PyXDG и как оно работает

 , , , ,


0

1

Была в общем вот тут проблемка при

ck-launch-session dbus-launch --exit-with-session ${WM}-session
для монтирования разделов на hdd подключенного в компе и само монтирование через FM (1Thunar, 2Caja, &etc.), в то время как различные usb-диски и флэшки подключаемые по клику в ФМ монтируются.
udisks_1.0.5
udisks2_2.1.5
polkit_0.113
ConsoleKit2_1.0.0
dbus_1.10.8
dbus-glib_0.106
dbus-python_1.2.4
gvfs_1.26.3
*на x86-i?86-usr/lib32 выше-ниже не обращайте внимание, это просто тестовая система в виртуалке, рабочая на 64
slackware-14.2 # cat /etc/polkit-1/rules.d/20-plugdev-group-mount-override.rules 
/* http://udisks.freedesktop.org/docs/latest/udisks-polkit-actions.html */

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

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.udisks2.eject-media" &&
        subject.isInGroup("plugdev")) {
        return polkit.Result.YES;
    }
});
Я решение нашел Not authorized for perform operation, но все ж). Решение было найдено через правку /etc/polkit-1/rules.d/20-plugdev-group-mount-override.rules

«org.freedesktop.udisks2.filesystem-mount-system»

но когда-то давно я начал вспоминать, что никакие системный файлы не трогал. И, вспомнил, что ставил pyxdg, от которого у меня еще и другие проги начинали стартовать, в том числе nm-applet и blueman-applet, последний который я даже умышленно вырубал, как я понял отсюда весь набор в ряд .desktop запускается /etc/xdg/autostart/ (не знаю как вас, но меня лично это не радует, особенно из-за отказа от DE в пользу WM).

PyXDG contains implementations of freedesktop.org standards in python

Содержимое пакета pyxdg следующее: cat /var/log/packages/pyxdg-0.26-i686-1_SBo

...
usr/lib/
usr/lib/python2.7/
usr/lib/python2.7/site-packages/
usr/lib/python2.7/site-packages/pyxdg-0.26-py2.7.egg-info
usr/lib/python2.7/site-packages/xdg/
usr/lib/python2.7/site-packages/xdg/BaseDirectory.py
usr/lib/python2.7/site-packages/xdg/BaseDirectory.pyc
usr/lib/python2.7/site-packages/xdg/Config.py
usr/lib/python2.7/site-packages/xdg/Config.pyc
usr/lib/python2.7/site-packages/xdg/DesktopEntry.py
usr/lib/python2.7/site-packages/xdg/DesktopEntry.pyc
usr/lib/python2.7/site-packages/xdg/Exceptions.py
usr/lib/python2.7/site-packages/xdg/Exceptions.pyc
usr/lib/python2.7/site-packages/xdg/IconTheme.py
usr/lib/python2.7/site-packages/xdg/IconTheme.pyc
usr/lib/python2.7/site-packages/xdg/IniFile.py
usr/lib/python2.7/site-packages/xdg/IniFile.pyc
usr/lib/python2.7/site-packages/xdg/Locale.py
usr/lib/python2.7/site-packages/xdg/Locale.pyc
usr/lib/python2.7/site-packages/xdg/Menu.py
usr/lib/python2.7/site-packages/xdg/Menu.pyc
usr/lib/python2.7/site-packages/xdg/MenuEditor.py
usr/lib/python2.7/site-packages/xdg/MenuEditor.pyc
usr/lib/python2.7/site-packages/xdg/Mime.py
usr/lib/python2.7/site-packages/xdg/Mime.pyc
usr/lib/python2.7/site-packages/xdg/RecentFiles.py
usr/lib/python2.7/site-packages/xdg/RecentFiles.pyc
usr/lib/python2.7/site-packages/xdg/__init__.py
usr/lib/python2.7/site-packages/xdg/__init__.pyc
usr/lib/python2.7/site-packages/xdg/util.py
usr/lib/python2.7/site-packages/xdg/util.pyc
...

В общем, (после сборки и) установки PyXDG монтирование от и для пользователя разделов жесткого диска стало работать (правда с запросом root-пароля) , я предполагаю, что это вызвано автозапуском какого-то из .desktop-файла в /etc/xdg/autostart/

# ls -l /etc/xdg/autostart/
at-spi-dbus-bus.desktop                      mate-volume-control-applet.desktop
blueman.desktop                              nm-applet.desktop
gnome-keyring-gpg.desktop                    polkit-gnome-authentication-agent-1.desktop
gnome-keyring-pkcs11.desktop                 polkit-mate-authentication-agent-1.desktop
gnome-keyring-secrets.desktop                print-applet.desktop
gnome-keyring-ssh.desktop                    pulseaudio.desktop
gsettings-data-convert.desktop               xdg-user-dirs-update.desktop
mate-power-manager.desktop                   xfce4-clipman-plugin-autostart.desktop
mate-screensaver.desktop                     xfsettingsd.desktop
mate-settings-daemon.desktop                 xscreensaver.desktop
В дереве репозитория pyxdg, в файле README есть интересная приписка

- Implementation of the XDG-Recent File Storage Specification http://standards.freedesktop.org/recent-file-spec/

Я тут это все расписал, но у меня пара вопросов. [+] полный список пакетов в системе вот https://pastebin.com/zHjnC13c

  1. rules: Можно ли как-то файл-правило /etc/polkit-1/rules.d/10-udisks2.rules положить в $HOME конкретного пользователя и что бы оно там лежало, а не в корне и работало так сказать только для конкретного (здесь я имею в виду всякие каталоги из разряда .local/share/)?
  2. pyxdg: Кто разбирается, подскажите, как все таки pyxdg реализовано, что вроде как нет никакого автостарта его (autostart.sh), но всякие файлы из /etc/xdg/autostart/ он мне их поназапускал(?
★★★★★

Ответ на: комментарий от t184256

да тут нет зависимостей (слака), а так
полная установка слаки, копал откуда ноги растут, ну и в довесок стоят KDE4, Xfce4, Mate
в DE через вход в них через *DM делал, само-собой все нормально с монтированием в них и без PyXDG
я в обще думал что это может какой-то демон gvfs при Thunar такое творит, но по идеи,
да и на самом деле без gvfs в Thunar/Caja монтирование в обще не было бы возможным

полный список пакетов в системе вот https://pastebin.com/zHjnC13c

NK ★★★★★ ()
Последнее исправление: NK (всего исправлений: 4)

В принципе, ответ по 2 пункту найден: https://www.archlinux.org/packages/community/x86_64/openbox/

python2-xdg (optional)

Т.е. по сути разработчики не исключают использование pyxdg,
но в тоже самое время как зависимость он необязателен https://packages.debian.org/ru/sid/openbox
значит, на уровне исходников это продумано.

Кто не понял про что речь (grep polkit /etc/xdg/autostart/*)

$ cat /etc/xdg/autostart/polkit-* | grep Exec
Exec=/usr/libexec/polkit-gnome-authentication-agent-1
Exec=/usr/libexec/polkit-mate-authentication-agent-1
запустите одну из комманд и у вас по клику монтирование запашет

Самая печаль в том, что в /etc/xdg/autostart/

gnome-keyring-gpg.desktop
gnome-keyring-pkcs11.desktop
gnome-keyring-secrets.desktop
gnome-keyring-ssh.desktop
gsettings-data-convert.desktop
это что выходит если вы свой WM с DESKTOP_SESSION=gnome запускаете, от установленного PyXDG он все это поназапускает

Конечно несильно, но неприятно

$ cat /etc/xdg/autostart/gsettings-data-convert.desktop
...
Name[ru]=Преобразование данных GSettings
Comment[ru]=Переносит настройки пользователя из GConf в dconf

Дополнительная информация: https://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html

$ ls /usr/libexec/openbox-*
/usr/libexec/openbox-autostart*  /usr/libexec/openbox-xdg-autostart*

$ cat /usr/libexec/openbox-autostart
...
# Run the XDG autostart stuff.  These are found in /etc/xdg/autostart and
# in $HOME/.config/autostart.  This requires PyXDG to be installed.
# See openbox-xdg-autostart --help for more details.
/usr/libexec/openbox-xdg-autostart "$@"

$ /usr/libexec/openbox-xdg-autostart --help
ERROR: openbox-xdg-autostart requires PyXDG to be installed

slackware-14.2 $ file /usr/libexec/openbox-xdg-autostart 
/usr/libexec/openbox-xdg-autostart: Python script, ASCII text executable

в debian так же $ file /usr/lib/x86_64-linux-gnu/openbox-xdg-autostart
/usr/lib/x86_64-linux-gnu/openbox-xdg-autostart: Python script, ASCII text executable

openbox-xdg-autostart requires PyXDG to be installed

и когда установите pyxdg выполните: /Полный.путь/до/openbox-xdg-autostart --list

$ /usr/libexec/openbox-xdg-autostart --list
получите информативный вывод.

NK ★★★★★ ()
Последнее исправление: NK (всего исправлений: 1)