GDM and Alternate Home Directories
September 17, 2010
I run home directories for 115,000 users out of OpenAFS. Sometimes, just to spite the user, we have an outage, network blip, or some other planetary alignment that prevents your home directory from being available. Sucks to be you.
For my Linux workstations I support, I’d really like to setup GDM to
detect this and go into save the day mode. Create a directory in
/tmp, toss the user in there, altert them with a dialog, and continue
with a semi-normal session.
With SSH and normal terminal sessions this works with some fairly simple
scripting. Detect the problem, set the HOME environment variable to a
temporary directory, copy in
/etc/skel, alter the user, off they go.
However, I’ve never had much success doing with in the GDM controled
environment. The script integration points always use their own, made on
the spot, environments, and altering them does no good. The Gnome bits
are also quick to query the system libraries to find your home directory
again as well. I guess I can’t fault that as that should also be a
“propper” way to find your home directory. Nautilus tosses up some evil
looking errors to the user and you can’t get rid of them.
I’ve been trying to get a script in
/etc/X11/xinit/xinitrc.d to at
least let a user log in semi-normally. I’ve had some success in altering
your HOME environment variable there. Your session will start, Gconf
blows up badly, and Nautilus errors even worse. But it does work. What
really grinds my gears is still in 2010 we have issues with environment
variables here. In terminal/ssh mode I set a TMPHOME variable to
indicate we are working under emergency conditions. However, if I set
that variable in my xinitrc script, that will blow up the user session.
Log in all you want, all you ever see is the GDM Simple Greeter.
At least I have some form of getting the feature I want. In the future, I think I will make the automounter use a program to find the maps to your home directory rather than directly using the LDAP maps. I can detect this condition then and re-route your home directory. Now, if only my current LDAP setup used the automounted-path for the “homeDirectory” attribute rather than the direct AFS path. Sigh…