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
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
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/status
No 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 package
Także póki co to musisz ze starym mechanizmem pozostać, czyli tworzyć pliki .pkla w /etc/polkit-1/localauthority/ .
Offline
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
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
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
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
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 Packages
Ostatnio edytowany przez morfik (2018-04-09 16:34:17)
Offline
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
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
Strony: 1