On Mon, 31 Jan 2011, Soo-Hyun Choi wrote: > Hi there, > > As you know, $HOME is generally located at "/home/$username" by default. > > I would like to re-locate all users' $HOME directories to something > like "/export/home/$username" without having a hassle/trouble. > > Initially, I've thought of just copying them to the new directory > (under /export/home/xxx), but guessed it might trouble for the > normal use (I'm pretty new to CentOS, although many experiences with > Debian/Ubuntu). > > Is there any good tricks (or caveats) when moving users' home > directory cleanly with CentOS? (I'm with CentOS 5.5 x86_64) For the sake of argument, I'm going to assume that your current /home and the new /export/home are on separate disks or partitions. That is, you need to make a full copy of the existing directories rather than just renaming them. The following instructions should all be done as root. 1. rsync -av --delete /home/ /export/home/ 2. Edit /etc/default/useradd so that HOME=/export/home 3. Run /usr/sbin/genhomedircon 4. Verify the change in /etc/selinux/<<SELINUXTYPE>>/contexts/files/file_contexts.homedirs 5. Make sure that /export/home has the right contect: semanage fcontext -a -t home_root_t /export/home 6. Run fixfiles to see if anything is amiss: /sbin/fixfiles check /export/home If something fixfile reports errors, use it to fix things: /sbin/fixfiles restore /export/home 7. Disable user logins (including your own). 8. Update /etc/password with new $HOME definitions 9. Re-run rsync, if necessary, to catch last-minute changes: rsync -av --delete /home/ /export/home/ 10. Make the older /home/* directories unreadable. 11. Enable user logins 12. Tell your users emphatically that they should use $HOME anywhere they're tempted to hardwire their home directory path into a script. :-) -- Paul Heinlein <> heinlein at madboa.com <> http://www.madboa.com/