First a small introduction about wicd for those who are not familiar with it, it is a deamon/client application that manage your networks connections, more or less like Networkmanager which is the default in Ubuntu, I was using wifi-radar untill I discovered wicd reading the ArchLinux wiki, well now lets go to the problem I got while running it on Debian and how I solve it. I have installed wicd to manage my network connections on my Debian Squeeze, the daemon started OK, but when I was trying to start the client I got this error.

Loading...
Attempting to connect tray to daemon...
Success.
ERROR:dbus.proxies:Introspect error on :1.46:/org/wicd/daemon: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 1 matched rules; type="method_call", sender=":1.49" (uid=1000 pid=4108 comm="python /usr/share/wicd/wicd-client.py ") interface="org.freedesktop.DBus.Introspectable" member="Introspect" error name="(unset)" requested_reply=0 destination=":1.46" (uid=0 pid=3831 comm="python /usr/share/wicd/wicd-daemon.py "))
Traceback (most recent call last):
  File "/usr/share/wicd/wicd-client.py", line 565, in 
    main(sys.argv)
  File "/usr/share/wicd/wicd-client.py", line 546, in main
    tray_icon = TrayIcon(use_tray, animate)
  File "/usr/share/wicd/wicd-client.py", line 102, in __init__
    self.icon_info = self.TrayConnectionInfo(self.tr, use_tray, animate)
  File "/usr/share/wicd/wicd-client.py", line 127, in __init__
    self.update_tray_icon()
  File "/usr/share/wicd/wicd-client.py", line 184, in update_tray_icon
    [state, info] = daemon.GetConnectionStatus()
  File "/var/lib/python-support/python2.5/dbus/proxies.py", line 68, in __call__
    return self._proxy_method(*args, **keywords)
  File "/var/lib/python-support/python2.5/dbus/proxies.py", line 140, in __call__
    **keywords)
  File "/var/lib/python-support/python2.5/dbus/connection.py", line 622, in call_blocking
    message, timeout)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 1 matched rules; type="method_call", sender=":1.49" (uid=1000 pid=4108 comm="python /usr/share/wicd/wicd-client.py ") interface="org.wicd.daemon" member="GetConnectionStatus" error name="(unset)" requested_reply=0 destination=":1.46" (uid=0 pid=3831 comm="python /usr/share/wicd/wicd-daemon.py "))


The solution was pretty easy, but it was hard to find on google, that is why I want to put it here.

This is the content of my /etc/dbus-1/system.d/wicd.conf


<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
< busconfig >
        < policy user="root" >
                < allow own="org.wicd.daemon"/ >
                < allow send_destination="org.wicd.daemon"/ >
                < allow send_interface="org.wicd.daemon"/ >
        < /policy >
        < policy at_console="true" >
                < deny own="org.wicd.daemon"/ >
                < allow send_destination="org.wicd.daemon"/ >
                < allow send_interface="org.wicd.daemon"/ >
        < /policy >
< !--
        < policy context="default" >
                < deny own="org.wicd.daemon"/ >
                < allow send_destination="org.wicd.daemon"/ >
                < allow send_interface="org.wicd.daemon"/ >
        < /policy >
-- >

        < !-- If you would like to restrict usage of the wicd daemon to some
             subset of users, then you can do something like this after
             commenting the above  block
        -- >
        < policy group="netdev" >
                < deny own="org.wicd.daemon"/ >
                < allow send_destination="org.wicd.daemon"/ >
                < allow send_interface="org.wicd.daemon"/ >
        < /policy >
< /busconfig >


As you can see in the last block it is restricting the use of wicd to the netdev group, so I only had to add my user to that group and it start working, to do that run:

usermod -a -G netdev youruser

read more about usermod