А если его наоборот удалить?
Если удалить, то картина меняется:
Не удалось подключить Том 320GB
Not authorized to perform operation
Этим пакетом, добавив его в стабильный репозиторий, в образы стартеркитов, а следовательно и в образ p10-xfce-sysv:
# polkit-rule-udisks2-mount-1.2-alt1.noarch.rpm:
$ cat usr/share/polkit-1/rules.d/10-udisks2-mount.rules
polkit.addRule(function(action, subject) {
if ( (
action.id == "org.freedesktop.udisks2.filesystem-mount-system" ||
action.id == "org.freedesktop.udisks2.filesystem-mount-other-seat" ||
action.id == "org.freedesktop.udisks2.filesystem-unmount-others" ||
action.id == "org.freedesktop.udisks2.encrypted-unlock-other-seat" ||
action.id == "org.freedesktop.udisks2.eject-media-other-seat" ||
action.id == "org.freedesktop.udisks2.power-off-drive-other-seat" ) &&
subject.isInGroup("xgrp"))
{
return polkit.Result.YES;
}
});
альты в p10-xfce-sysv и во все стартеркиты, вкрячили сразу две ошибки:
# grep 'org.freedesktop.udisks2.filesystem-mount-system"' /usr/share/polkit-1/rules.d/*
/usr/share/polkit-1/rules.d/60-sysvinit-mount.rules: if (action.id == "org.freedesktop.udisks2.filesystem-mount-system" && subject.isInGroup("xgrp"))
# grep 'org.freedesktop.udisks2.filesystem-mount-other-seat"' /usr/share/polkit-1/rules.d/*
/usr/share/polkit-1/rules.d/60-sysvinit-mount.rules: if (action.id == "org.freedesktop.udisks2.filesystem-mount-other-seat" && subject.isInGroup("xgrp"))
# grep 'org.freedesktop.udisks2.filesystem-unmount-others"' /usr/share/polkit-1/rules.d/*
#
# grep 'org.freedesktop.udisks2.encrypted-unlock-other-seat"' /usr/share/polkit-1/rules.d/*
#
# grep 'org.freedesktop.udisks2.eject-media-other-seat"' /usr/share/polkit-1/rules.d/*
/usr/share/polkit-1/rules.d/60-sysvinit-mount.rules: if (action.id == "org.freedesktop.udisks2.eject-media-other-seat" && subject.isInGroup("xgrp"))
# grep 'org.freedesktop.udisks2.power-off-drive-other-seat"' /usr/share/polkit-1/rules.d/*
/usr/share/polkit-1/rules.d/60-sysvinit-mount.rules: if (action.id == "org.freedesktop.udisks2.power-off-drive-other-seat" && subject.isInGroup("xgrp"))
(К тому же, пакет polkit-rule-udisks2-mount-1.2-alt1.noarch.rpm, дублирует ^^^^ три правила пакета polkit-sysvinit. Из всего этого следует: нельзя в образы xfce-sysv, правила и пакеты, добавлять неглядя и бездумно.)
Ошибка безопасности в polkit-rule-udisks2-mount-1.2-alt1.noarch.rpm (непривилегированный пользователь состоящий в группе xgrp, может размонтироввать любую файловую любого пользователя, включая root):
$ grep 'others\|isInGroup' ./usr/share/polkit-1/rules.d/10-udisks2-mount.rules
action.id == "org.freedesktop.udisks2.filesystem-unmount-others" ||
subject.isInGroup("xgrp"))
и техническая ошибка (на монтировании файловых, используется не одно правило, а два):
$ grep 'mount-other-seat\|isInGroup' ./usr/share/polkit-1/rules.d/10-udisks2-mount.rules
action.id == "org.freedesktop.udisks2.filesystem-mount-other-seat" ||
subject.isInGroup("xgrp"))
$ grep 'filesystem-mount"' ./usr/share/polkit-1/rules.d/10-udisks2-mount.rules | wc -l
0
И второе правило, точнее первое, - отсутствует в polkit-rule-udisks2-mount-1.2-alt1.noarch.rpm.
Правило безопасности xfce-sysv (как и систем на sysvinit с kde3/tde) гласит:
- Ни при каких условиях, непривилегированный пользователь группы xgrp, не должен иметь прав размонтировать файловые смонтированные другими пользователями. Это прерогатива только root и wheel.
Иное, имеет место быть. Но только в репозитории. Не в образах xfce-sysv.
И если и может существовать в xfce-sysv, то только в виде:
polkit.addRule(function(action, subject)
{
if (action.id == "org.freedesktop.udisks2.filesystem-unmount-others" && subject.isInGroup("wheel"))
{
return polkit.Result.YES;
};
});
(Первый пользователь, он же администратор, по-умолчанию в группе wheel)
Это главная причина, по которой правило org.freedesktop.udisks2.filesystem-unmount-others, никогда не добавлялось в xfce-sysv.
Следовательно:
- Пакет polkit-rule-udisks2-mount-1.2-alt1.noarch.rpm, должен быть немедленно удалён из образов p10-xfce-sysv и из установленных систем на p10-xfce-sysv.
PS Готов предоставить любую диагностику лишь бы только работало.
Это довольно редкая юзер-специфичная ошибка:
- Отказ в авторизации за отсутствием рулеза с разрешением выполнения действия в p10-xfce-sysv. После локализации ошибки, потребует внесение изменения в файл /usr/share/polkit-1/rules.d/60-sysvinit-mount.rules пакета polkit-sysvinit. Либо вкручиванием костыля вручную в каталог /etc/polkit-1/rules.d, правила с экшном.
Для начала, перед монтированием Windows, рекомендуется отключать гибернацию в Windows:
$ man ntfs-3g | grep 'Windows hibernation and fast restarting' -A17
Windows hibernation and fast restarting
On computers which can be dual-booted into Windows or Linux,
Windows has to be fully shut down before booting into Linux,
otherwise the NTFS file systems on internal disks may be left in
an inconsistent state and changes made by Linux may be ignored
by Windows.
So, Windows may not be left in hibernation when starting Linux,
in order to avoid inconsistencies. Moreover, the fast restart
feature available on recent Windows systems has to be disabled.
This can be achieved by issuing as an Administrator the Windows
command which disables both hibernation and fast restarting :
powercfg /h off
If either Windows is hibernated or its fast restart is enabled,
partitions on internal disks are forced to be mounted in read-
only mode.
Для устранения/локализации ошибки
Не удалось подключить Том 320GB
Not authorized to perform operationпотребуется:
- Удалить из системы на p10-xfce-sysv пакет polkit-rule-udisks2-mount-1.2-alt1.noarch.rpm (и из образов xfce-sysv).
- Запустить X-терминал.
- Выполнить пользователем в X-терминале команду
udisksctl mount -b /dev/sdXY
где sdXY, файловая с Windows, выдающая в thunar на монтировании ошибку
Не удалось подключить Том 320GB
Not authorized to perform operation- Полный вывод вместе с командой, сюда.
Дальше будет видно что делать.
Фишка выполнения монтирования через udisksctl в xfce-sysv:
В выводе, в xfce-sysv, в строке после AUTHENTICATING FOR, на Not authorized to perform operation, выведет имя запрашиваемого действия, которое с return polkit.Result.YES и используется как разрешение выполнения для правила для группы.