[OpenIndiana-discuss] Relocated root home directory

Sašo Kiselkov skiselkov.ml at gmail.com
Sat Feb 9 11:44:56 UTC 2013


On 02/09/2013 02:52 AM, Jim Klimov wrote:
> Hello all,
> 
>   I found it not very convenient to have root's home directory
> as a part of rootfs - if I switch between different BEs, the
> homedir changes back and forth. It also consumes space in the
> snapshots, if a BE is cloned from a variant which had some
> junk in this path.
> 
>   I know this is less relevant by default now that root is a
> role, but it is still used as a user account by some, and it's
> used as a user during repairs/single-user mode in particular.
> The latter usage breaks if the home path defined in /etc/passwd
> is not available (i.e. relocated to a pool that's not available
> during single-user admin works).
> 
>   My shot at fixing the situation was this:
> 
> 1) created dedicated dataset, i.e. rpool/export/home/root
>    and transferred all contents of /root into it
> 
> 2) created /root/.profile with this text:
> 
> # === /root/.profile
> if [ x"$_SLASH_PROFILE" = x ]; then
>     _SLASH_PROFILE=Y
>     export _SLASH_PROFILE
>     if [ -d /export/home/root ]; then
>         HOME=/export/home/root
>         cd $HOME
>         export HOME
>         /bin/test -s ./.profile && . ./.profile
>     fi
>     unset _SLASH_PROFILE
> fi
> # === /root/.profile
> 
>    The idea is that interactive shells would first interpret
>    ~/.profile - and in case of the relocated home, switch
>    into it transparently. Just in case, I tried to protect
>    against loops such as including the /root/.profile from
>    other profiles again - I've seen such practices in life :)
> 
>    This is hopefully portable across various shells, does
>    work with bash and old Bourne Shell.
> 
> 3) The entry in /etc/passwd still points to /root. The repair
>    modes - if they don't mount the ZFS path with root's new
>    home - can use /root/ to lay their little waste such as
>    .bash_history; however for usual interactive use of root
>    as a user account the home is persistent across all BEs.
> 
> Are there any fundamental drawbacks to such a tweak?
> Any more variables to set/export when switching $HOME? ;)
> 
> Thanks, and hope this trick helps others,

What's with all the black magic?

Why couldn't you simply do:

# mv /root /root-old
# zfs create -o mountpoint=/root rpool/export/home/root
# chmod 700 /root
# /usr/gnu/bin/cp -ar /root2/* /root/

Cheers,
--
Saso



More information about the OpenIndiana-discuss mailing list