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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2018-04-08 11:33:57

  jacekz - Użytkownik

jacekz
Użytkownik
Skąd: Lubuskie
Zarejestrowany: 2013-01-20

udisksctl - montowanie .iso bez uwierzytelniania- jak?

Próbuje podmontować  przykładowe .iso:

Kod:

$ 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: [b]Not authorized to perform operation[/b]
więc dalej:

Kod:

$ 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:

Kod:

==== AUTHENTICATION COMPLETE ===
Mounted /dev/loop0 at /media/jacek/KNOPPIX.

[b]ale czy to nie powinno działać bez roota?[/b]


mam w [b]/etc/polkit-1/rules.d/50-udisks2.rules[/b]:

Kod:

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

 

#2  2018-04-08 16:26:44

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: udisksctl - montowanie .iso bez uwierzytelniania- jak?

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:

Kod:

$ 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:

Kod:

# 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

 

#3  2018-04-09 02:36:38

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: udisksctl - montowanie .iso bez uwierzytelniania- jak?

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.


Kod:

# 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

 

#4  2018-04-09 05:17:57

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: udisksctl - montowanie .iso bez uwierzytelniania- jak?

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)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2018-04-09 11:35:58

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: udisksctl - montowanie .iso bez uwierzytelniania- jak?

Skrypty by montować zasoby? Ja sobie póki co [url=https://gist.github.com/morfikov/081ffdb391c4193b73f576e76ecb39d8]taką politykę naskrobałem[/url]. 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

 

#6  2018-04-09 15:38:53

  jacekz - Użytkownik

jacekz
Użytkownik
Skąd: Lubuskie
Zarejestrowany: 2013-01-20

Re: udisksctl - montowanie .iso bez uwierzytelniania- jak?

Dzięki,
[quote=morfik]Mi się udało dograć tę nową wersję polkit'a...[/quote]
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 [b]furiusisomount[/b]
Działa i wydaje się lżejszy niż "aceton"

Ostatnio edytowany przez jacekz (2018-04-09 15:39:47)

Offline

 

#7  2018-04-09 16:31:32

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: udisksctl - montowanie .iso bez uwierzytelniania- jak?

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:

Kod:

# 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

 

#8  2018-04-11 14:31:13

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: udisksctl - montowanie .iso bez uwierzytelniania- jak?

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

 

#9  2018-04-12 20:44:34

  jacekz - Użytkownik

jacekz
Użytkownik
Skąd: Lubuskie
Zarejestrowany: 2013-01-20

Re: udisksctl - montowanie .iso bez uwierzytelniania- jak?

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

Kod:

udisksctl loop-delete --block-device /dev/loop0

"wywala" zasób z menadżera.

Można coś z tym zrobić?

Offline

 

#10  2018-04-12 21:35:24

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: udisksctl - montowanie .iso bez uwierzytelniania- jak?

To pewnie zależy już od aplikacji. U mnie udiskie bez problemu radzi sobie z zamykaniem urządzeń loop.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.014 seconds, 9 queries executed ]

Informacje debugowania

Time (s) Query
0.00016 SET CHARSET latin2
0.00008 SET NAMES latin2
0.00185 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.224.0.25' WHERE u.id=1
0.00091 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.224.0.25', 1713514520)
0.00044 SELECT * FROM punbb_online WHERE logged<1713514220
0.00033 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=30405 AND t.moved_to IS NULL
0.00031 SELECT search_for, replace_with FROM punbb_censoring
0.00196 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=30405 ORDER BY p.id LIMIT 0,25
0.00347 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=30405
Total query time: 0.00951 s