Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1

Użytkownik


Próbuje podmontować przykładowe .iso:
$ udisksctl loop-setup -r -f /home/jacek/dsl-4.11.rc2.iso Mapped file /home/jacek/dsl-4.11.rc2.iso as /dev/loop0.
W otwartym oknie menadżera plików pojawia się nowe niezamontowane urządzenie
i komunikat błędu: Not authorized to perform operation
więc dalej:
$ udisksctl mount --block-device /dev/loop0 ==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-mount-system === Wymagane jest uwierzytelnienie, aby zamontować urządzenie /dev/loop0 Authenticating as: root Password:
Po podaniu hasła oczywiście grzecznie się montuje:
==== AUTHENTICATION COMPLETE === Mounted /dev/loop0 at /media/jacek/KNOPPIX.
ale czy to nie powinno działać bez roota?
mam w /etc/polkit-1/rules.d/50-udisks2.rules:
polkit.addRule(function(action, subject) {
var YES = polkit.Result.YES;
var permission = {
// only required for udisks1:
"org.freedesktop.udisks.filesystem-mount": YES,
"org.freedesktop.udisks.filesystem-mount-system-internal": YES,
"org.freedesktop.udisks.luks-unlock": YES,
"org.freedesktop.udisks.drive-eject": YES,
"org.freedesktop.udisks.drive-detach": YES,
// only required for udisks2:
"org.freedesktop.udisks2.filesystem-mount": YES,
"org.freedesktop.udisks2.filesystem-mount-system": YES,
"org.freedesktop.udisks2.encrypted-unlock": YES,
"org.freedesktop.udisks2.eject-media": YES,
"org.freedesktop.udisks2.power-off-drive": YES,
// required for udisks2 if using udiskie from another seat (e.g. systemd):
"org.freedesktop.udisks2.filesystem-mount-other-seat": YES,
"org.freedesktop.udisks2.encrypted-unlock-other-seat": YES,
"org.freedesktop.udisks2.eject-media-other-seat": YES,
"org.freedesktop.udisks2.power-off-drive-other-seat": YES
};
if (subject.isInGroup("plugdev")) {
return permission[action.id];
}
});użytkownik należny do grupy plugdev
Dlaczego wymaga roota?
Ostatnio edytowany przez jacekz (2018-04-08 11:34:34)
Offline





Cenzor wirtualnego świata
Na początek to ci mogę powiedzieć jedynie, że ta twoja reguła w ogóle nie jest przetwarzana. xD
Ten katalog /etc/polkit-1/rules.d/ to jest dopiero od wersji 0.106+ , a w debianie jest:
$ apt-cache policy policykit-1
policykit-1:
Installed: 0.105-20
Candidate: 0.105-20
Version table:
0.113-6 130
130 https://deb.debian.org/debian experimental/main amd64 Packages
*** 0.105-20 990
990 https://deb.debian.org/debian sid/main amd64 Packages
100 /var/lib/dpkg/statusNo i nie da rady tej 0.113 zainstalować, bo:
# aptitude -t experimental install policykit-1
The following packages will be REMOVED:
libpolkit-backend-1-0{u}
The following packages will be upgraded:
libpolkit-agent-1-0 libpolkit-gobject-1-0 policykit-1{b}
3 packages upgraded, 0 newly installed, 1 to remove and 181 not upgraded.
Need to get 169 kB of archives. After unpacking 44.0 kB will be freed.
The following packages have unmet dependencies:
policykit-1 : Depends: libmozjs185-1.0 (>= 1.8.5-1.0.0+dfsg) which is a virtual package and is not provided by any available packageTakże póki co to musisz ze starym mechanizmem pozostać, czyli tworzyć pliki .pkla w /etc/polkit-1/localauthority/ .
Offline





Cenzor wirtualnego świata
Mi się udało dograć tę nową wersję polkit'a i w sumie ogarnąłem sobie te obrazy i urządzenia loop w taki sposób.
# cat /etc/polkit-1/rules.d/20-udisks2.rules
polkit.addRule(function(action, subject) {
if (action.id.indexOf("org.freedesktop.udisks2.loop-") == 0 &&
subject.local && subject.active &&
subject.user == "morfik") {
return polkit.Result.YES;
}
});
polkit.addRule(function(action, subject) {
if (action.id.indexOf("org.freedesktop.udisks2.") == 0 &&
subject.local && subject.active &&
(action.lookup("device").match(/\/dev\/loop[a-z0-9]*/)) &&
subject.user == "morfik") {
return polkit.Result.YES;
}
});
polkit.addRule(function(action) {
if (action.id.indexOf("org.freedesktop.udisks2.") == 0) {
return polkit.Result.NO;
}
});Pierwsza reguła zezwala userowi morfik na skonfigurowanie urządzeń loop.
Druga reguła pozwala morfikowi na przeprowadzenie wszystkich akcji z rodziny org.freedesktop.udisks2.* (mount i inne takie) ale tylko gdy urządzenia pasują do /dev\/loop[a-z0-9]* , czyli min. /dev/loop1, /dev/loop2p10, itp.
Ostatnia reguła blokuje wszystkie wykonania akcji org.freedesktop.udisks2.* , tak by nikt nieuprawniony ich nie używał.
Nawet działa. xD
Offline







Podobno człowiek...;)








Nie prościej naskrobać skrypta do montowania, i w sudoers ustawić, żeby szedł przez sudo bez hasła?
Nie trzeba wtedy ani udiska ani policykit, a całość łatwiej przeżyje aktualizacje czy zmiany systemu.
Jeśli natomiast ktoś lubi kolorowe, automatyczne klikadła, to zawsze jest:
https://packages.debian.org/stretch/acetoneiso
Ostatnio edytowany przez Jacekalex (2018-04-09 05:21:01)
Offline





Cenzor wirtualnego świata
Skrypty by montować zasoby? Ja sobie póki co taką politykę naskrobałem. To w dużej mierze przykłady by sprawdzić jak to działa. Oczywiście to tylko czubek góry lodowej, bo akcje nie ograniczają się tylko i wyłącznie do udisks2. Można np. sobie gparted odpalać jako zwykły user bez hasełka, to prawie jak sudo tylko bez sudo. xD
Offline

Użytkownik


Dzięki,
morfik napisał(-a):
Mi się udało dograć tę nową wersję polkit'a...
to jakieś karkołomne było? - napisz co i jak.
@Jacekalex ... skrypty wydają się takie mało eleganckie...
a jesli mowa o rozwiązaniu sposobem windowsowskim to jest furiusisomount
Działa i wydaje się lżejszy niż "aceton"
Ostatnio edytowany przez jacekz (2018-04-09 15:39:47)
Offline





Cenzor wirtualnego świata
No technicznie rzecz biorąc, to są jakieś dziwne problemy z zależnościami z libmozjs185-1.0 i przez niego nie można zainstalować tego policykit z experimental. Więc sobie go pobrałem ze stable, bo w sid i testing on nie występuje:
# apt-cache policy libmozjs185-1.0
libmozjs185-1.0:
Installed: 1.8.5-1.0.0+dfsg-6
Candidate: 1.8.5-1.0.0+dfsg-6
Version table:
*** 1.8.5-1.0.0+dfsg-6 300
300 https://deb.debian.org/debian stable/main amd64 Packages
100 /var/lib/dpkg/status
# apt-cache policy policykit-1
policykit-1:
Installed: 0.113-6
Candidate: 0.113-6
Version table:
*** 0.113-6 995
130 https://deb.debian.org/debian experimental/main amd64 Packages
100 /var/lib/dpkg/status
0.105-20 990
500 https://deb.debian.org/debian testing/main amd64 Packages
990 https://deb.debian.org/debian sid/main amd64 Packages
0.105-18 300
300 https://deb.debian.org/debian stable/main amd64 PackagesOstatnio edytowany przez morfik (2018-04-09 16:34:17)
Offline





Cenzor wirtualnego świata
Jak coś to był update policykit w experimental i poprawili ten błąd z zależnościami i teraz już wchodzi czysto.
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=863784
Offline

Użytkownik


W zasadzie trzeba podnieść do wersji 0.114-1 z experimentala trzy paczki:
policykit-1
libpolkit-agent-1-0
libpolkit-gobject-1-0
i doinstalować (u mnie)
libmozjs-52-0
Działa.
...jedynym zgrzytem jest to że po odmontowaniu .iso
w menadżerze plików (pcmanfm) pozostaje ikona niezamontowanego zasobu,
dopiero wykonanie w konsoli
udisksctl loop-delete --block-device /dev/loop0
"wywala" zasób z menadżera.
Można coś z tym zrobić?
Offline





Cenzor wirtualnego świata
Strony: 1