воскресенье, 2 января 2011 г.

org.freedesktop.UDisks.Error.PermissionDenied: Not Authorized или монтирование без HAL

Итак, HAL стал deprecated и с него надо слазать. Мир пересобран -hal, сделан --depclean и этого костыля больше в системе нет. Вместо него теперь есть свыше 9000 других. Но не суть - движемся вперёд и хорошо. Однако, такие координальные перемены нередко заканчиваются некоторыми неожиданностями. И этот случай не исключение. После апдейта вроде всё работает: вставляем флешку, и на боковой панели pcmanfm'а успешно появляется соответствующий съёмник, однако при тычке на него появляется сообщение "Not Authorized" - и думай, что хочется. Если глянуть в хвост /var/log/messages, то можно усмотреть, что стартанул некий polkitd. Это демон из пакета sys-auth/polkit - он теперь всем "заправляет" и, в частности, не разрешает смонтировать диск. Шерстим маны, нашерстиваем нужный (man pklocalauthority) и всё становится понятно: не хватает простого конфига. В мане можно прочесть всё детально, я же укажу лишь основные моменты:

Конфиги polkit'а лежат в /etc/polkit-1/

В каталоге /etc/polkit-1/localauthority/50-local.d/ необходимо создать файл с именем, напр. 10-user-mount.pkla со следующим содержанием:

[bla-bla-bla bla-bla]
Identity=unix-user:username
Action=org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.drive-eject
ResultAny=yes

Этого хватит для монтирования и размонтирования флешек. username поменяйте на свой логин. Можно разрешить группе:
Identity=unix-group:groupname
Через точку с запятой можно вообще какую-угодно сложную чахорду устроить, если оно вам надо.
Остальные action'ы можно посмотреть в файле /usr/share/polkit-1/actions/org.freedesktop.udisks.policy или вообще в родительском каталоге.
Разрешить вообще всё оттуда можно так:
Action=org.freedesktop.udisks.*



btw, для опеределения пользователей, которые могут авторизироваться как админы, когда это нужно, необходимо в каталоге /etc/polkit-1/localauthority.conf.d/ создать файл старше 60-и со своим конфигом (напр. 60-my-config.conf) со следующим содержанием:

[Configuration]
AdminIdentities=unix-group:groupname
или unix-user:username

3 комментария:

gena комментирует...

Спасибо, помогло. Правда дополнительно пришлось перезагрузиться -- иначе не срабатывало (udev restart тоже не помогал).

suleman комментирует...

Большое спасибо, все заработало.
Убил целый рабочий день чтобы понять почему не монттируются флешки при удаленном заходе с X терминала на Fedora 15. Причем локальном заходе с консоли сервера все монтировалось на ура.

CYnabr комментирует...

Ценная статья. Все сразу же заработало.