This case is set to time-out tomorrow as a FastTrack. If there are no
issues raised, then it will be approved as a fasttrack. If people think
there are any remaining issues that require further discussion, then I
have made arrangements for this case to be converted to a full-case and
we can have the inception review next Tuesday.
Here is an update of the issues raised and the proposed solutions.
This is updated to reflect the discussion since I last sent out
a similar update on the 17th. Assuming the case closes tomorrow,
then I will update the case materials with the following proposed
changes before closing it.
What do people think?
Issues discussed & proposed solutions:
- Although nobody has raised this issue, I feel obligated to remind
people of the issue discussed in section 4.1.14. The last time
that GDM proposed to be the default login program (LSARC 2005/417),
it was derailed because GDM lacks a "drop to console" feature like
CDE login has.
When graphical VT support is integrated in build 122, it will be
possible for people to use VT switching to drop to console. However,
in my recent discussions with the VT team, they plan to not enable
the vtdaemon service by default until a later build. There are still
some remaining bugs with vtdaemon which are unlikely to be fixed by
the time that this case integrates. It is not yet clear when these
issues will be resolved and which build the service will be enabled
by default. Once the vtdaemon is enabled by default, or if the user
enables it, then GDM will work with graphical VT. So, in the
meantime, users who need a drop to console feature will need to
enable the vtdaemon service to use this.
Since users have lived without a "drop to console" feature in
OpenSolaris from day one, this case does not make the situation any
worse.
- Several people (Joerg Barfurth, Darren Moffat, Nicolas Williams) have
highlighted that GDM should not touch the user's $HOME directory
before the user authenticates. Currently GDM accesses the user's
face image ($HOME/.face) and the user's session/language defaults
($HOME/.dmrc) before pam_setcred. Touching the user's $HOME
directory before pam_setcred causes problems for kerberos, for
example.
Proposed solution:
- The SUNWgnome-display-mgr-root package would install a directory
/var/cache/gdm. This directory will be owned by root:gdm with
640 permissions.
- At run-time GDM would create a directory /var/cache/gdm/user-$uid
when a user logs in, if the directory does not already exist. In
this directory will be placed two files: dmrc and face.
- If the /var/cache/gdm/user-$uid/dmrc file does not exist, then
GDM will log the user into the default session/language or whichever
ones they selected in the GUI. Then it will save the dmrc file to
the cache with the default settings. On next login, the defaults
will be read from the cache.
- On first login the /var/cache/gdm/user-$uid/face file will not
exist so the user will see a generic user icon for their face.
After authentication, GDM will check if the user has a defined
face and copy it to the cached file. Also, on logout, GDM will
check again if the user has a defined face and copy it to the
cached file. Updating the cache on logout ensures the face image
will be available on next login if the user defined it during their
session. Obviously the face image will only be copied to the cache
if one is not already in the cache or if the cached file is older.
- A configuration option will be added to GDM that will make it
behave much like the old GDM where the default language/session
choice is "Last Selected". When this configuration option is
turned on, then GDM will copy the user's $HOME/.dmrc file
into the cache after pam_setcred and just log into whatever session
the user has defined there. This will be useful in Sun Ray
environments where there is a cluster of servers and there is a
desire to avoid the situation where the caches on different
machines can get out-of-sync, and you really want to use whatever
defaults the user has defined in their $HOME directory.
- Darren Moffat and Nicolas Williams say that the Face Browser should
not use any heuristics to determine if users should be displayed in
the Face Browser or not. For example, GDM should not assume that
only users in /etc/passwd with a valid shell should be included.
Darren Moffat further suggests that users must opt-in to be visible
in the Face Browser. Otherwise Darren feels there is a privacy issue.
Proposed solution:
To support this, the IncludeAll configuration option from the old
GDM will be added back. When IncludeAll is false, GDM will call
ck-history and present only those users who have logged in
previously. When IncludeAll is true, the existing fgetpwent()
heuristics will be used. On Solaris, the default for IncludeAll will
be false so that the heuristics are not used. However, users who
want the heuristics can change the GDM configuration to make GDM work
that way if desired.
To support opt-in/opt-out, the Include and Exclude configuration
options from the old GDM will also be added back. These contain
lists of users separated by commas. With these, the sysadmin can
define which users should be included in the face browser even if
they have not previously logged in and which users should be always
excluded.
- There are many concerns about the Face Browser and whether it should
be turned on by default.
- Glenn Faden suggested it not be the default because it is a
potential security vulnerability to expose usernames before
authentication.
Proposed Solution:
Turn off the Face Browser by default. This will make OpenSolaris
different than everybody else, but our users love us because we are
such curmudgeons about these things, I guess.
- Joerg Barfurth highlighted that Sun Ray kiosk mode needs the greeter
to not display when the PAM stack requires no user interaction. GDM
provides an Automatic Login feature which works mostly as desired.
However, some work will be needed to make it work as needed by Sun
Ray. The new GDM only allows you to hardcode a single username to
work with AutomaticLogin, while Sun Ray needs the ability to specify
this username per-display.
Proposed Solution:
The old GDM had a feature where you could specify the username as
a script which is passed the DISPLAY environment variable and which
returns the username to be used with AutomaticLogin. Adding back
this feature should provide Sun Ray kiosk mode with the feature they
need.
- Joerg Barfurth highlighted that since the "gdm" user only has a
single GConf directory that any configuration change on one seat
will affect all the others. For example, if you turn on a greeter
accessibility feature on one seat, then that feature will turn on
for all displays that are showing the greeter.
Proposed Solution:
Make use of the new GCONF_DEFAULT_SOURCE_PATH environment variable so
that each seat can specify its own GConf settings directory. Then
the settings would be sticky per-seat, which would likely be
reasonable.
Other issues which were discussed, which I think were addressed in the
email discussion, include:
- Alan Coopersmith raised the issue that we need a follow-up case to
EOL CDE Login. Lin Ma from the Sun Desktop team has agreed to be
responsible for this follow-up case. Alan Coopersmith is travelling
to Beijing soon and will assist Lin with preparing this.
- Glenn Faden had a concern that the "Shutdown" and "Reboot" buttons
should not appear in the GDM login GUI by default. This is not a
problem since they only appear if the "gdm" user has the
solaris.system.shutdown authority, which it does not have by default.
- Darren Moffat suggested that we offer an xterm.desktop file so that
users can have access to a terminal session. The project team
agreed and has already integrated this into our GDM development build.
- Joerg Barfurth highlighted that the new GDM does not provide a
true "failsafe session". While the xterm.desktop does allow people
to login without starting the full GNOME stack, it does source the
user's .profile, etc. So, if the user needs to fix an error in
this sort of configuration file, then they would need to use some
other mechanism, such as VT switching to the console.
- Nicolas Williams wanted clarification that the session should be
started by the process that did the PAM and audit work, or by its
progeny, after pam_open_session(3PAM) is called, and before
pam_close_session(3PAM) is called. I verified that this is the
case.
- Nicolas Williams wanted verification that Xserver a11y is available
when GDM is used. I verified that it is available.
- Also note the regressions in section 4.1.15. I do not think these
are cause for much concern, nor have they generated much discussion
but I recommend that people look over them if they have not already.
---
Brian