Darren: > The GUI shouldn't be running as the user though. The input and output > is through the GUI and that means it has to be trusted and is in fact > part of the Trusted Path. That doesn't mean it needs to run with > privileges(5) but it shouldn't be running as the user.
Thanks for reminding me of this. For those of you who took the time to read the discussion on the GNOME screensaver-list, you'll notice that this came up. http://mail.gnome.org/archives/screensaver-list/2008-January/msg00003.html At the risk of encouraging more Linux-bashing, reading this thread you will notice that the Linux community seems to think that the Xserver supporting something called XACE (X Access Control Extension) and labelled objects will address these issues. I'm not sure if they are considering a11y, nor am I sure if XACE will be supported on Solaris. It might be helpful if Alan has any information about whether XACE might be a part of a solution here. I think the PolicyKit aspects of the discussion may be unrelated. PolicyKit was brought up because it (like the lock screen program) pops up a dialog asking for the root password, so they have a similar problem to solve. Since the lock screen program requires a backend daemon running as root which actually talks to PAM, and since this root daemon should have access to the Xauth keys for each display, it shouldn't be hard to make lockscreen work like this: 1) The user runs lockscreen, which runs any eye candy background as the user 2) When the user hits a key or moves the mouse, a message is sent to the daemon telling it to pop up the dialog. Since the daemon is running as root, and should have access to the Xauth key for each display, it should be possible to launch the dialog as another user (say the "gdm" user which is designed for UI's that accept passwords), and also run with the Security Extension to prevent Xauth snooping. It's a bad idea, in general, to run GUI's as root, so I think using a user like the "gdm" user makes more sense. 3) When the user enters the password, the GUI dialog sends the password to the daemon for actual PAM authentication. If this succeeds, a message is sent to the eye candy userland program to tell it to stop locking the screen. One idea that I have tossed around a few times, though not in this forum would be for the GDM daemon to be this background daemon. Since GDM already knows about PAM, audit, etc. it might be nicer to have just one daemon running than two. I realize PAM, audit is done a bit differently for login versus lockscreen, but I'd think it should be possible for GDM to be smart enough to handle either case. This does raise some issues for a11y. As a quick aside, it isn't strictly necessary for a program to use GTK+ to be accessible. Java is also accessible. You could also write a dialog using a widget-set that doesn't support ATK (such as Motif or X11), but hack the dialog to generate appropriate ATK events as the user interacts with the GUI. Though this last option could be a lot of work, even if you only implement ATK for the small set of widgets that a lock screen dialog would require. Most existing a11y programs (such as orca and GOK) depend on the ability to snoop on dialogs to report what is going on in other ways (text-to-speech), and to allow users to control the GUI via alternative input programs such as GOK (on-screen keyboard). If we make the password entry dialog inaccessible to snooping, then we also make it inaccessible to AT programs. However, as has been pointed out before, the UI for entering your password is not really that complicated, so a reasonable solution to provide a11y might be as follows: 1) Embed an onscreen keyboard directly into the dialog, much like gnome-screensaver already supports: http://bugzilla.gnome.org/attachment.cgi?id=69696&action=view 2) Instead of providing magnification, it might be sufficient to just provide a hotkey that increases/decreases font size in the dialog. And the ability for the user to configure the default font size. 3) Some ability to launch text-to-speech, mMuch the same as GDM currently allows you to hit a hotkey to turn this on. Or we could allow the user to configure that this is on by default. Or we could try to detect if the user is running orca, and assume they want to run it in the dialog as well. 4) Some ability for the dialog to detect and honor whatever theme is being used by the user, so if they are using a high or low contrast theme, this isn't lost when they go to the lock screen dialog. Perhaps the userland eyecandy program could communicate the theme to the background daemon. Using approaches like the above, it should be able to provide a11y support in a lock screen dialog. ----- As a separate topic, does Trusted Path apply to other programs that require password entry, such as Thunderbird, Evolution, etc.? If so, perhaps the same model could work for these programs. Using Thunderbird as an example, perhaps we could design things so it could likewise ask GDM to provide the password entry dialog so that username, password entry could be handled by a non-snoopable dialog running as the GDM user with the Security extension. I am not sure if you could do something like an IMAP/POPT connection in a PAM module. If so perhaps such a PAM module could pass back to Thunderbird whatever is necessary for it to actually talk to the server without Thunderbird ever being aware of the password. Or perhaps the dialog could be written to pass the username/password back to the application in a private fashion (perhaps via a socket), so at least the password isn't snoopable via Xauth, even if it is snoopable in the userland process (which you might be able to protect via other ways - by turning off dtrace and other programs which can snoop a process running as the same user). ---- Just some thoughts... Brian