Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

27.11.2009, 03:38

autologin, dbus, hal, consolekit & policykit - funktioniert das?

hallo forum,

vorab ein wenig info:
ich habe mir auf basis von gentoo (i686) ein relativ schlankes system für meinen htpc konfiguriert, welches ausschliesslich xbmc als gui nutzt. um ein wenig settopbox feeling zu bekommen, setze ich auf openrc mit parallel startup und autologin. um den autologin zu bewerkstelligen gibt es nun, wie immer in der welt von linux, verschiedene möglichkeiten:

1. dm (xdm -> kdm, gdm, slim)
2. /etc/init.d/local.start
3. /etc/inittab
4. ...

da das system möglichst schlank bleiben soll, und nach einem praktischen vergleich xorg und xbmc per inittab subjektiv am schnellsten gestartet wird, habe ich mich dazu entschlossen die inttab für den autologin zu nutzen. auch ist ein respawn sehr angenehm, sollte xbmc einmal abschmieren; eine tastatur ist nicht angeschlossen, da wird es dann schwierig beim dm. meine vorgehensweise sieht folgendermassen aus:

/etc/inittab:

Quellcode

1
2
3
4
5
6
7
8
# TERMINALS
c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:2345:respawn:/sbin/agetty 38400 tty2 linux
c3:2345:respawn:/sbin/agetty 38400 tty3 linux
c4:2345:respawn:/sbin/agetty 38400 tty4 linux
c5:2345:respawn:/sbin/agetty 38400 tty5 linux
#c6:2345:respawn:/sbin/agetty 38400 tty6 linux
c6:2345:respawn:/usr/bin/openvt -fwc 7 -- /bin/su USER -l -c "/bin/bash --login -c startx >/dev/null 2>&1"


/etc/X11/Sessions/xbmc.desktop:

Quellcode

1
2
3
4
5
6
7
8
9
10
[Desktop Entry]
Version=1.0
Name=XBMC Media Center
GenericName=Media Center
Comment=Manage and view your media 
Exec=/usr/local/bin/xbmc-gentoo
Icon=xbmc.png
Terminal=false
Type=Application
Categories=AudioVideo;Video;Player;TV;


/etc/env.d/90xsession:

Quellcode

1
XSESSION="/usr/local/bin/xbmc-gentoo"


/usr/local/bin/xbmc-gentoo

Quellcode

1
2
3
#!/bin/bash
/usr/bin/xsetroot -cursor /opt/.modResources/xcursor/emptyCursor.xbm /opt/.modResources/xcursor/emptyCursor.xbm ;
/usr/bin/dbus-launch --exit-with-session /usr/bin/xbmc --standalone


grundsätzlich funktioniert auf diesem weg der autologin reibungslos, dennoch bin ich dabei auf ein paar probleme mit dbus, hal, consolekit und policykit gestossen. xbmc arbeitet grundsätzlich mit policies um nötige rechte zu bekommen, um z.b. mount, shutdown, restart, suspend, etc. ausführen zu dürfen. nachdem ich o.g. änderungen durchgeführt habe, musste ich festellen, dass mein benutzer keine rechte besitzt um per xbmc aktionen wie reboot, suspend, eject, usw. auszuführen. ein blick in xbmc.log brachte folgendes zu tage.

grep -i error | .xbmc/temp/xbmc.log:

Quellcode

1
2
3
4
00:30:51 T:3025618784 M:3096489984   ERROR: DBus: org.freedesktop.Hal.Device.PermissionDeniedByPolicy - org.freedesktop.hal.storage.mount-removable no <-- (action, result)
00:30:51 T:3025618784 M:3095982080   ERROR: DBus: org.freedesktop.Hal.Device.PermissionDeniedByPolicy - org.freedesktop.hal.storage.mount-removable no <-- (action, result)
00:30:52 T:3025618784 M:3091181568   DEBUG: ConsoleKit.Manager: org.freedesktop.DBus.Error.AccessDenied - A security policy in place prevents this sender from sending this message to this recipient, see message bus configuration file (rejected message had interface "org.freedesktop.ConsoleKit.Manager" member "CanStop" error name "(unset)" destination "org.freedesktop.ConsoleKit")
00:30:52 T:3025618784 M:3091181568   DEBUG: DeviceKit.Power: org.freedesktop.DBus.Error.ServiceUnknown - The name org.freedesktop.DeviceKit.Disks was not provided by any .service files


den devicekit fehler kann man vernachlässigen, ist nicht installiert und daher wird ein fehler ausgegeben. xbmc prüft verschiedene möglichkeiten, welche mit einem error geloggt werden falls davon eine nicht verfügbar ist. die beiden dbus fehler beziehen sich auf die versuche einen usb stick und eine dvd zu mounten. den consolekit fehler kann ich mir nicht ganz erklären. sieht man sich allerdings useflags von kdm oder gdm an, so stellt man fest, dass beide unterstützung für consolekit und policykit mitbringen. vermutlich sollte mit den beiden alles oob funktionieren. wie dem auch sei. zunächst habe ich versucht auf dem offiziellen weg per polkit-auth meinem benutzer diverse rechte zu verpassen, allerdings hat dies nichts an der situation geändert:

allgemein verfügbare policies:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
polkit-auth
org.freedesktop.hal.leds.brightness
org.freedesktop.hal.storage.mount-fixed
org.freedesktop.hal.storage.mount-removable
org.freedesktop.hal.storage.unmount-others
org.freedesktop.hal.storage.eject
org.freedesktop.hal.storage.crypto-setup-fixed
org.freedesktop.hal.storage.crypto-setup-removable
org.freedesktop.hal.dockstation.undock
org.freedesktop.hal.power-management.shutdown
org.freedesktop.hal.power-management.shutdown-multiple-sessions
org.freedesktop.hal.power-management.reboot
org.freedesktop.hal.power-management.reboot-multiple-sessions
org.freedesktop.hal.power-management.set-powersave
org.freedesktop.hal.power-management.suspend
org.freedesktop.hal.power-management.hibernate
org.freedesktop.hal.power-management.cpufreq
org.freedesktop.hal.power-management.lcd-panel
org.freedesktop.hal.power-management.light-sensor
org.freedesktop.hal.power-management.keyboard-backlight
org.freedesktop.policykit.read
org.freedesktop.policykit.revoke
org.freedesktop.policykit.grant
org.freedesktop.policykit.modify-defaults
org.freedesktop.hal.lock
org.freedesktop.hal.wol.enabled
org.freedesktop.hal.wol.enable
org.freedesktop.hal.wol.supported
org.freedesktop.hal.killswitch.bluetooth
org.freedesktop.hal.killswitch.wlan
org.freedesktop.hal.killswitch.wwan
org.freedesktop.consolekit.system.stop
org.freedesktop.consolekit.system.stop-multiple-users
org.freedesktop.consolekit.system.restart
org.freedesktop.consolekit.system.restart-multiple-users


verfügbare policies für USER:

Quellcode

1
polkit-auth --user USER --show-obtainable


hm, keine verfügaren policies für den USER?

gewähre USER diverse aktionen:

Quellcode

1
2
3
4
polkit-auth --user USER --grant org.freedesktop.hal.power-management.suspend
polkit-auth --user USER --grant org.freedesktop.hal.power-management.reboot
polkit-auth --user USER --grant org.freedesktop.hal.power-management.shutdown
polkit-auth --user USER --grant org.freedesktop.hal.storage.mount-removable


prüfe ob alle berechtigungen übernommen wurden:

Quellcode

1
2
3
4
5
6
7
8
9
10
cat /var/lib/PolicyKit/user-USER.auths 
# This file lists authorizations for user USER
# 
# File format may change at any time; do not rely on it. To manage
# authorizations use polkit-auth(1) instead.

scope=grant:action-id=org.freedesktop.hal.power-management.suspend:when=1259279029:granted-by=0
scope=grant:action-id=org.freedesktop.hal.power-management.reboot:when=1259279034:granted-by=0
scope=grant:action-id=org.freedesktop.hal.power-management.shutwown:when=1259279039:granted-by=0
scope=grant:action-id=org.freedesktop.hal.storage.mount-removable:when=1259279309:granted-by=0


nun gut. policies wurden erfolgreich übernommen, eigentlich sollten diese sofort greifen. leider fehlanzeige. ein neustart veränderte ebenfalls nichts an der situation. weder darf ich neustarten, herunterfahren, schlafen gehen oder extere medien benutzen. meiner meinung nach funktioniert es auf grund der bereits o.g. erwähnten consolekit fehlermeldung. noch mal zur wiederholung:

grep -i error | .xbmc/temp/xbmc.log:

Quellcode

1
00:30:52 T:3025618784 M:3091181568   DEBUG: ConsoleKit.Manager: org.freedesktop.DBus.Error.AccessDenied - A security policy in place prevents this sender from sending this message to this recipient, see message bus configuration file (rejected message had interface "org.freedesktop.ConsoleKit.Manager" member "CanStop" error name "(unset)" destination "org.freedesktop.ConsoleKit")


offensichtlich kann "org.freedesktop.ConsoleKit.Manager" nicht mit "org.freedesktop.ConsoleKit" sprechen, da eine policy genau das verhindert!? sollte dem so sein, so nehme ich an, dass alles im lot wäre, wenn die beiden sich unterhalten könnten. im anschluss habe ich folgendes geprüft:

prüfung aktiver sessions:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ck-list-sessions 
Session1:
	unix-user = '1000'
	realname = ''
	seat = 'Seat1'
	session-type = ''
	active = TRUE
	x11-display = ':0'
	x11-display-device = '/dev/tty6'
	display-device = '/dev/tty7'
	remote-host-name = ''
	is-local = TRUE
	on-since = '2009-11-27T02:27:45.798596Z'
	login-session-id = ''


mein user erhält keine login-session-id. könnte das alle probleme hervorrufen? falls ja, wie bringe ich mein system dazu, dem benutzer eine id zu vergeben?
da ich auf dem offiziellen weg nicht weitergekommen bin, habe ich folgende "lösungen" ausprobiert, welche ich aber nicht dauerhaft einsetzen möchte, allerdings zum gewüschten ziel führen:

lösung 1:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cat /etc/PolicyKit/PolicyKit.conf 
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->

<!DOCTYPE pkconfig PUBLIC "-//freedesktop//DTD PolicyKit Configuration 1.0//EN"
"http://hal.freedesktop.org/releases/PolicyKit/1.0/config.dtd">

<!-- See the manual page PolicyKit.conf(5) for file format -->

<config version="0.1">
<define_admin_auth group="wheel"/>
<match user="USER">
	<return result="yes"/>
</match>
</config>


ersetze ich "root" durch "USER" funktioniert alles wie gewünscht, kann aber nicht im sinne des erfinders sein.

lösung 2:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
cat /etc/PolicyKit/PolicyKit.conf 
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->

<!DOCTYPE pkconfig PUBLIC "-//freedesktop//DTD PolicyKit Configuration 1.0//EN"
"http://hal.freedesktop.org/releases/PolicyKit/1.0/config.dtd">

<!-- See the manual page PolicyKit.conf(5) for file format -->
<config version="0.1">
<match action="org.freedesktop.hal.storage.mount-removable">
	<return result="yes"/>
</match>

<match action="org.freedesktop.hal.power-management.shutdown">
	<return result="yes"/>
</match>

<match action="org.freedesktop.hal.power-management.reboot">
	<return result="yes"/>
</match>

<match action="org.freedesktop.hal.power-management.suspend">
	<return result="yes"/>
</match>

<match action="org.freedesktop.hal.power-management.set-powersave">
	<return result="yes"/>
</match>

<match action="org.freedesktop.hal.power-management.lcd-panel">
	<return result="yes"/>
</match>

<match action="org.freedesktop.hal.storage.eject">
	<return result="yes"/>
</match>

<match action="org.freedesktop.hal.storage.mount-removable">
	<return result="yes"/>
</match>
</config>


auch hier funktioniert alles wie gewünscht, nur kommt dieser weg auch nicht dauerhaft in frage.
tjo, was meint ihr? wo hakt es hier? ich habe ja den consolekit error im xbmc.log in verdacht, und nehme an dass dieser mit der fehlenden session id in verbindung steht. irgendwelche configs möchte ich nicht unbedingt verbiegen und missbrauchen, sondern schon eher den offiziellen weg gehen.
über hinweise bin ich schonmal im voraus dankbar. ;)

bis später,
hal2050

2

27.11.2009, 14:37

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ cat /etc/dbus-1/system.d/org.freedesktop.PolicyKit.conf
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->

<!DOCTYPE busconfig PUBLIC
 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
  <!-- Only polkituser can own the service -->
  <policy user="polkituser">
    <allow own="org.freedesktop.PolicyKit"/>
  </policy>

  <!-- any user can talk to the service (fd.o #18948) -->
  <policy context="default">
    <allow send_destination="org.freedesktop.PolicyKit"/>
  </policy>
</busconfig>


Habe ich nach einer Standardinstallation von Policykit .. und ich habe auch in /etc/group einen eintrag namens 'polkituser' hast du diese gruppe auch? bzw hast du den User dieser gruppe hinzugefügt?
Intel core 2 duo E6600
XFX Geforce 7950 gt
4096 MB DDR2
Intel DP35DP

3

27.11.2009, 14:59

hi schade, :)

hier zum vergleich:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cat /etc/dbus-1/system.d/org.freedesktop.PolicyKit.conf
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->

<!DOCTYPE busconfig PUBLIC
 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
  <!-- Only polkituser can own the service -->
  <policy user="polkituser">
    <allow own="org.freedesktop.PolicyKit"/>
  </policy>

  <!-- any user can talk to the service (fd.o #18948) -->
  <policy context="default">
    <allow send_destination="org.freedesktop.PolicyKit"/>
  </policy>
</busconfig>


gruppen des USER:

Quellcode

1
wheel floppy audio cdrom video cdrw usb users portage cron crontab polkituser plugdev USER


hast du denn eine session-id wenn du "ck-list-sessions" ausführst?

4

27.11.2009, 15:03

habe ich :

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ ck-list-sessions
Session1:
        unix-user = '1000'
        realname = '(null)'
        seat = 'Seat1'
        session-type = ''
        active = TRUE
        x11-display = ':0'
        x11-display-device = '/dev/tty7'
        display-device = ''
        remote-host-name = ''
        is-local = TRUE
        on-since = '2009-11-27T12:50:43.625547Z'
        login-session-id = '4294967295'



ich bin jedoch NICHT in der gruppe: polkituser
Intel core 2 duo E6600
XFX Geforce 7950 gt
4096 MB DDR2
Intel DP35DP

5

27.11.2009, 15:16

hm ok.
habe nun den USER mal aus der polkit gruppe genommen. an der situation hat es leider nichts verändert, es ist 1:1 alles beim alten.

6

27.11.2009, 15:32

hmm


hast du devicekit installiert? .. weil ich bei deinen fehlermeldungen was davon lese ... ich nämlich nicht.


Da das alles etwas in schwäbe ist Hal/devicekit/dbus .. habe ich mich damit noch nicht sonderlich befasst
Intel core 2 duo E6600
XFX Geforce 7950 gt
4096 MB DDR2
Intel DP35DP

7

27.11.2009, 15:41

nein, devicekit ist nicht installiert, das wirkt unter gentoo irgendwie noch wackelig, bzw. habe ich den eindruck, dass devicekit unter gentoo etwas zögerlich angenommen wird.
den fehler den du aus dem log ansprichst, ist zu vernachlässigen. xbmc prüft nur ob devicekit verfügbar ist, wenn nicht vergügbar wird hal benutzt.

8

27.11.2009, 15:51

Hi

nur ein Schuss ins Blaue,
schaue doch mal ob ein neubauen von "dbus" was ändert..
siehe hierzu zb [gelöst] Probleme mit nm-applet 0.73

9

27.11.2009, 15:52

hi josef.95,

alles klar, dbus wird gerade neu gebaut. melde mich gleich zurück. was sollte meiner session eine session id zuweisen?

10

27.11.2009, 15:56

wie schauts eigentlich mit consolekit aus ? hast dus installiert? wenn ja mit welche USE flags? hast du es auch gestartet?
Intel core 2 duo E6600
XFX Geforce 7950 gt
4096 MB DDR2
Intel DP35DP

11

27.11.2009, 16:10

ok ein neubauen von dbus hat ebenfalls nichts verändert.

Zitat

wie schauts eigentlich mit consolekit aus ? hast dus installiert? wenn ja mit welche USE flags? hast du es auch gestartet?



services status:

Quellcode

1
2
3
4
5
6
xbmc ~ # /etc/init.d/dbus status
* status: started
xbmc ~ # /etc/init.d/hald status
* status: started
xbmc ~ # /etc/init.d/consolekit status
* status: started


services runlevels:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
rc-update show 
           fbcondecor | boot                                          
          consolefont | boot                                          
            killprocs |                     shutdown                  
             mount-ro |                     shutdown                  
              keymaps | boot                                          
                 udev |                                        sysinit
             bootmisc | boot                                          
                 fsck | boot                                          
              urandom | boot                                          
            savecache |                     shutdown                  
               net.lo | boot                                          
                 sshd |             default                           
                 hald |             default                           
           vixie-cron |             default                           
                 mtab | boot                                          
            alsasound | boot                                          
                samba |             default                           
             hostname | boot                                          
                devfs |                                        sysinit
                acpid | boot                                          
             net.eth0 |             default                           
                local |             default          nonetwork        
                 root | boot                                          
               sysctl | boot                                          
               procfs | boot                                          
       udev-postmount |             default                           
                 ntpd |             default                           
              hwclock | boot                                          
                dmesg |                                        sysinit
              modules | boot                                          
             netmount |             default                           
            bluetooth |             default                           
             nfsmount |             default                           
           consolekit |             default                           
           localmount | boot                                          
              metalog | boot                                          
         termencoding | boot 


useflags:

Quellcode

1
2
3
[ebuild   R   ] sys-auth/consolekit-0.3.0-r2  USE="pam policykit -debug -doc" 0 kB
[ebuild   R   ] sys-apps/dbus-1.2.3-r1  USE="X -debug -doc (-selinux)" 0 kB
[ebuild   R   ] sys-apps/hal-0.5.13-r2  USE="X acpi consolekit laptop policykit -apm -crypt -debug -dell -disk-partition -doc (-selinux)" 0 kB

12

27.11.2009, 16:16

komisch .. von den useflags her ists bei mir ident .. nur das ich ein testing system (habe überall die neuesten versionen installiert) habe, und du stable ...
Intel core 2 duo E6600
XFX Geforce 7950 gt
4096 MB DDR2
Intel DP35DP

13

27.11.2009, 16:30

hm. weisst du zufällig was meinem user eine session id normalerweise zuweisen sollte? ich gehe mal von dbus aus?

was mir gerade einfällt, ich habe das minimal useflag benutzt, könnte das kuriose auswirkungen haben? folgende pakete wurden mit USE="minimal" gebaut:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
xbmc ~ # equery hasuse minimal
[ Searching for USE flag minimal in all categories among: ]
 * installed packages
[I--] [  ] sys-libs/ncurses-5.6-r2 (5)
[I--] [  ] media-libs/libsndfile-1.0.20 (0)
[I--] [  ] media-sound/alsa-utils-1.0.20-r5 (0.9)
[I--] [  ] x11-libs/libpciaccess-0.10.6 (0)
[I--] [  ] x11-apps/xinit-1.0.8-r10 (0)
[I--] [  ] sys-apps/miscfiles-1.4.2 (0)
[I--] [  ] x11-base/xorg-server-1.6.3.901-r2 (0)
[I--] [  ] dev-libs/libcdio-0.80 (0)
[I--] [  ] app-editors/nano-2.1.10 (0)
[I--] [  ] dev-db/mysql-5.0.84-r1 (0)

14

27.11.2009, 16:34

so wie ich das verstanden habe, sollte das conolekit machen .. und nicht dbus .. kann mich auch irren .. ist ja nicht ganz so trivial das thema
Intel core 2 duo E6600
XFX Geforce 7950 gt
4096 MB DDR2
Intel DP35DP

15

27.11.2009, 16:42

ok, das ist natürlich möglich.
vllt. ist es auch umgekehrt, d.h. der consolekit error im xbmc.log verhindert dass ich eine session-id bekomme und dadurch die polkit policies nicht greifen.

Quellcode

1
00:30:52 T:3025618784 M:3091181568   DEBUG: ConsoleKit.Manager: org.freedesktop.DBus.Error.AccessDenied - A security policy in place prevents this sender from sending this message to this recipient, see message bus configuration file (rejected message had interface "org.freedesktop.ConsoleKit.Manager" member "CanStop" error name "(unset)" destination "org.freedesktop.ConsoleKit")


EDIT:
soeben in meinem ~/ enteckt:

Quellcode

1
2
3
4
5
6
7
8
9
cat .dbus/session-bus/093c295693b36af2fa4c26d74b0a0e64-0 
# This file allows processes on the machine with id 093c295693b36af2fa4c26d74b0a0e64 using 
# display :0 to find the D-Bus session bus with the below address.
# If the DBUS_SESSION_BUS_ADDRESS environment variable is set, it will
# be used rather than this file.
# See "man dbus-launch" for more details.
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-FCkcVloDkI,guid=1ce54749a2f5f712dffc03614b0feac2
DBUS_SESSION_BUS_PID=5561
DBUS_SESSION_BUS_WINDOWID=4194305


EDIT:
soeben hier gefunden: http://www.freebsd.org/gnome/docs/halfaq.html

Zitat

Step 2: In order to mount volumes using hal, you must be authorized. This authorization is carried out by ConsoleKit and PolicyKit. If you are a GNOME user, and you use GDM to login to GNOME, then you do not need to make any additional configuration changes in order to mount removable media. If you are not a GNOME user, or you start GNOME without using GDM, then you will need to edit /usr/local/etc/PolicyKit/PolicyKit.conf, and add the org.freedesktop.hal.storage.mount-removable action to your username. For example, if your username is "marcus," you would add the following lines:

<match action="org.freedesktop.hal.storage.mount-removable">
<match user="marcus">
<return result="yes"/>
</match>
</match>


NOTE: All config lines in this file MUST be between the opening and closing <config> tags:

<config version="0.1">
<!-- New configuration lines go here. -->
</config>


If you use GDM to login to GNOME, GDM will add a ConsoleKit record for the session. If this session is active, then you will be allowed to mount removable media without any additional PolicyKit configuration. You can confirm if ConsoleKit is working correctly by running the command, ck-list-sessions. The active property must be TRUE for auto-mounting to work.


wenn das stimmt, wird wohl nichts anderes übrig bleiben als dediziert regeln in policykit.conf zu definieren. oder man findet heraus wie gdm eine session erstellt. zwar ist meine session active, allerdings fehlt ja eine session id.

EDIT:
nun habe ich mal testweise dbus-1.3.0-r1 unmasked. dadurch hat sich die fehlermeldung im xbmc.log verändert, bzw. ist ein wenig detailierter geworden:

Quellcode

1
DEBUG: ConsoleKit.Manager: org.freedesktop.DBus.Error.AccessDenied - Rejected send message, 2 matched rules; type="method_call", sender=":1.11" (uid=1000 pid=5202 comm="/usr/share/xbmc/xbmc.bin) interface="org.freedesktop.ConsoleKit.Manager" member="CanStop" error name="(unset)" requested_reply=0 destination="org.freedesktop.ConsoleKit" (uid=0 pid=4911 comm="/usr/sbin/console-kit-daemon))


EDIT:
es wird heller. :)
ich habe mal neben dbus auch consolekit unmasked. dadurch wurden folgende abhängigkeiten verlangt:

Quellcode

1
2
3
4
sys-auth/consolekit
sys-auth/polkit
dev-libs/glib
dev-libs/eggdbus


dadurch ist der ominöse fehler im xbmc.log verschwunden. das log sieht nun folgendermassen aus:

Quellcode

1
DEBUG: DeviceKit.Power: org.freedesktop.DBus.Error.ServiceUnknown - The name org.freedesktop.DeviceKit.Disks was not provided by any .service files


schön sauber. ^^ der devicekit error ist normal, ist ja kein devicekit installiert (ob man sich da mal trauen sollte?)
eine login-session-id habe ich dennoch nicht bekommen. ob das nun hier noch eine rolle spielt wird sich zeigen. ich werde mal testen sobald der tv von meiner freundin freigegeben wurde.

EDIT:
fast perfekt! mount, reboot, etc. funktioniert nun. sobald aber eine zweite session läuft hat mein user keine rechte das system z.b. herunterzufahren.

xbmc.log

Quellcode

1
ERROR: DBus: org.freedesktop.Hal.Device.PermissionDeniedByPolicy - org.freedesktop.hal.power-management.reboot-multiple-sessions auth_admin <-- (action, result)


daher habe ich diese rechte meinem user hinzugefügt:

Quellcode

1
2
scope=grant:action-id=org.freedesktop.hal.power-management.reboot-multiple-sessions:when=1259346284:granted-by=0
scope=grant:action-id=org.freedesktop.hal.power-management.shutdown-multiple-sessions:when=1259346297:granted-by=0


dennoch greifen diese nicht. ich vermute es liegt an "auth_admin". ich vermute es würde, z.b. in gnome, ein passwort abgefragt um den vorgang zu verifizieren. wie kann man das umgehen?

Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von »hal2050« (27.11.2009, 19:37)


16

28.11.2009, 13:02

du verwendest gnome parallell zu xbmc ? .. weil du die ganze zeit von gnome schreibst ...


ich kenne gnome kaum ... bei kde ists so das man extra bestättigen muss wenn mehrere VTs opffen sind .. aber passwort wird keins verlangt
Intel core 2 duo E6600
XFX Geforce 7950 gt
4096 MB DDR2
Intel DP35DP

17

28.11.2009, 16:14

nein nein. das ist nicht der fall. hier läuft nur xbmc und xorg. in der bsd faq ging es hauptsächlich um gdm als dm. falls dieser nicht genutzt wird, sind wohl manuell bestimmte einstellungen vorzunehmen. dies hat sich allerdings zu 90% als nicht richtig erwiesen, da nach dem upgrade von consolekit, dbus und policykit fast alles funktioniert.
meine letzes EDIT stellt nur die vermutung auf, dass wahrscheinlich in gnome, von mir aus auch in kde, eine passwortabfrage, oder wie du schreibts eine benachrichtigung die bestätigt werden muss, erscheinen würde. den rückschluss habe ich aus dem error log gezogen -> ...auth_admin.

Quellcode

1
ERROR: DBus: org.freedesktop.Hal.Device.PermissionDeniedByPolicy - org.freedesktop.hal.power-management.reboot-multiple-sessions auth_admin <-- (action, result)


d.h. bisher konnte ich durch das upgrade und durch ein zuweisen von rechten per polkit-auth vieles lösen. was aktuell noch nicht funktioniert ist wie gesagt, ein reboot, shutdown im falle von "multiple sessions". dh wenn ich parallel auf dem system per ssh angemeldet bin, habe ich als user keine rechte per xbmc das system herunterzufahren oder neuzustarten, obwohl entsprechende rechte per polkit-auth vergeben wurden. melde ich mich per ssh ab, dann darf ich das.
was ebenfalls noch streikt ist die möglichkeit eine cd per knopfdruck am gehäuse auszuwerfen.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »hal2050« (28.11.2009, 16:21)


18

28.11.2009, 17:14

Off-Topic
Hehe, Respekt wie du dich da bisher durchgeboxt hast :thumbup:
................................................................................
was ebenfalls noch streikt ist die möglichkeit eine cd per knopfdruck am gehäuse auszuwerfen.
fehlt dir evtl. noch "sys-apps/eject" ?

19

28.11.2009, 17:19

hi joseph.95, :)

Quellcode

1
2
3
4
5
[I] sys-apps/eject
     Available versions:  2.1.5-r1 ~2.1.5-r2 {nls}
     Installed versions:  2.1.5-r1(04:52:43 11/23/09)(nls)
     Homepage:            http://eject.sourceforge.net/ http://ca.geocities.com/jefftranter@rogers.com/eject.html
     Description:         A command to eject a disc from the CD-ROM drive


ist bereits als abhängigkeit durch hal installiert worden.
zum verständnis: manuelles ausführen von "eject (-t)" als root oder benutzer funktioniert tadellos. leider kann ich in dem neuen xbmc skin den eject button nicht finden. ich nehme aber an, dass es funktionieren sollte, da es ja in der shell als benutzer auch funktioniert. nur wenn ich auf den physisch vorhandenen knopf am laufwerk drücke wenn ein medium eingelegt ist, dann wird das laufwerk nicht geöffnet. d.h. irgendetwas im system "denkt" vmtl., ein physischer zugriff ist nicht gleichzusetzen mit der aktion eines angemeldeten benutzers oder root.

EDIT:
soeben gefunden:
1. http://forum.ubuntuusers.de/topic/xubunt…cht-herunter-1/
2. http://article.gmane.org/gmane.linux.ubu…buntu.user/1423

Zitat

From: dave selby <dave6502@...>
Subject: Re: Unable to cleanly shutdown, auth_admin <-- (action, result) ?
Newsgroups: gmane.linux.ubuntu.xubuntu.user
Date: 2009-06-20 11:09:56 GMT (23 weeks, 5 hours and 17 minutes ago)

Slightly refined script + my policy kit notes in case anyone is interested

Lets less priveledged processes communicate with more privileged processes, its a cool sudo's replacement !
Problem is xubuntu forgot to add a couple of important rules.

polkit-action ... lists all possible policy kit actions
polkit-auth ... prints policy kit authentications
polkit-config-file-validate ... validates /etc/PolicyKit/PolicyKit.conf

man PolicyKit.conf
sudo vi /etc/PolicyKit/PolicyKit.conf

<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->

<!DOCTYPE pkconfig PUBLIC "-//freedesktop//DTD PolicyKit Configuration 1.0//EN"
"http://hal.freedesktop.org/releases/PolicyKit/1.0/config.dtd">

<!-- See the manual page PolicyKit.conf(5) for file format -->

<config version="0.1">
<match user="root">
<return result="yes"/>
</match>
<define_admin_auth group="admin"/>

<match action="org.freedesktop.hal.power-management.shutdown-multiple-sessions">
<return result="yes"/>
</match>

<match action="org.freedesktop.hal.power-management.reboot-multiple-sessions">
<return result="yes"/>
</match>

</config>


die frage ist da nur, ob der kollege recht hat? denn eigentlich sollte ja alles über "polkit-auth" geregelt werden.
regulär sieht die "/etc/PolicyKit/PolicyKit.conf" so aus:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cat /etc/PolicyKit/PolicyKit.conf 
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->

<!DOCTYPE pkconfig PUBLIC "-//freedesktop//DTD PolicyKit Configuration 1.0//EN"
"http://hal.freedesktop.org/releases/PolicyKit/1.0/config.dtd">

<!-- See the manual page PolicyKit.conf(5) for file format -->

<config version="0.1">
<define_admin_auth group="wheel"/>
<match user="root">
	<return result="yes"/>
</match>
</config>


wenn ich wie in dem post beschrieben vorgehe, dann funktioniert die sache mit den multiple sessions. angepasst würde die config z.b. so aussehen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->

<!DOCTYPE pkconfig PUBLIC "-//freedesktop//DTD PolicyKit Configuration 1.0//EN"
"http://hal.freedesktop.org/releases/PolicyKit/1.0/config.dtd">

<!-- See the manual page PolicyKit.conf(5) for file format -->

<config version="0.1">
<define_admin_auth group="wheel"/>
<match user="root">
	<return result="yes"/>
</match>

    <match action="org.freedesktop.hal.power-management.shutdown-multiple-sessions">
        <return result="yes"/>
    </match>

    <match action="org.freedesktop.hal.power-management.reboot-multiple-sessions">
        <return result="yes"/>
    </match>

</config>


dieser weg führt allerdings, wie oben bereits erwähnt, die datei "/var/lib/PolicyKit/user-USER.auths" ad absurdum, da ich dann gleich alles in "/etc/PolicyKit/PolicyKit.conf" definieren könnte.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »hal2050« (28.11.2009, 17:44)


20

28.11.2009, 17:57

Puhh.., da fällt mir zZt auch nichts so recht zu ein...
lässt sich da evtl. mit

Quellcode

1
# lshal --monitor
etwas hilfreiches zu finden?
starte den Befehl doch mal bevor du ein Medium einlegst und schaue dann ob du da evtl. Infos, oder gar eine Fehlermeldung beim Eject bekommst...

/edit: da warst du mit deinem "edit" schneller