Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 May 2023 07:58:26 -0700 (PDT)
From:      "Rodney W. Grimes" <freebsd@gndrsh.dnsmgr.net>
To:        garyj@gmx.de
Cc:        Mike Karels <mike@karels.net>, Cy Schubert <Cy.Schubert@cschubert.com>, Mitchell Horne <mhorne@freebsd.org>, rgrimes@freebsd.org, src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org
Subject:   Re: git: 36db6b04962a - main - hier(7): document /home/ and /usr/home/
Message-ID:  <202305111458.34BEwQR9058840@gndrsh.dnsmgr.net>
In-Reply-To: <20230511104001.6b925848@ernst.home>

next in thread | previous in thread | raw e-mail | index | archive | help
> On Wed, 10 May 2023 16:48:12 -0500
> Mike Karels <mike@karels.net> wrote:
> 
> > On 10 May 2023, at 10:13, Cy Schubert wrote:
> >
> > > In message <ba22a75d-06c0-371e-603e-7ded9d1dca97@freebsd.org>, Mitchell
> > > Horne w
> > > rites:
> > >> On 5/10/23 11:19, Rodney W. Grimes wrote:
> > >>>> The branch main has been updated by mhorne:
> > >>>>
> > >>>> URL: https://cgit.FreeBSD.org/src/commit/?id=36db6b04962a01ff7b21592def02d
> > >> 4c570dac939
> > >>>>
> > >>>> commit 36db6b04962a01ff7b21592def02d4c570dac939
> > >>>> Author:     Mitchell Horne <mhorne@FreeBSD.org>
> > >>>> AuthorDate: 2023-05-10 12:53:56 +0000
> > >>>> Commit:     Mitchell Horne <mhorne@FreeBSD.org>
> > >>>> CommitDate: 2023-05-10 13:25:17 +0000
> > >>>>
> > >>>>      hier(7): document /home/ and /usr/home/
> > >>>>
> > >>>>      Reviewed by:    imp
> > >>>>      MFC after:      1 week
> > >>>>      Sponsored by:   The FreeBSD Foundation
> > >>>>      Differential Revision:  https://reviews.freebsd.org/D40002
> > >>>> ---
> > >>>>   share/man/man7/hier.7 | 10 ++++++++++
> > >>>>   1 file changed, 10 insertions(+)
> > >>>>
> > >>>> diff --git a/share/man/man7/hier.7 b/share/man/man7/hier.7
> > >>>> index ff11289436a1..b6759dd6e65b 100644
> > >>>> --- a/share/man/man7/hier.7
> > >>>> +++ b/share/man/man7/hier.7
> > >>>> @@ -90,6 +90,10 @@ file descriptor files;
> > >>>>   see
> > >>>>   .Xr \&fd 4
> > >>>>   .El
> > >>>> +.It Pa /home/
> > >>>> +user HOME directories.
> > >>>> +This is a symlink to
> > >>>> +.Pa /usr/home/
> > >>>
> > >>> /usr is "contains the majority of user utilities and applications"
> > >>> it should not contain home directories.
> > >>>> I do not know when this move to usr came about it was traditionally
> > >> /home.
> > >>> I do not know why /usr/home even exists, it is not needed by
> > >>> anything I am aware of.  If we have a compatible link it
> > >>> should be, usr/home -> ../home and /home should be the
> > >>> directory.
> > >>>
> > >>
> > >> I agree that /usr/home is strange, and is unique (?) to FreeBSD.
> > >>
> > >> The oldest commit in the output of `git log --grep '/usr/home'` is:
> > >>
> > >> commit f2400d465896a8e4f6fdc57eba840cf49b25bbbd
> > >> Author: David Nugent <davidn@FreeBSD.org>
> > >> Date:   Fri Jan 3 04:42:18 1997 +0000
> > >>
> > >>      Implemented /home -> /usr/home symlink kludge.
> > >>      If home basedir would be created in the root partition, create
> > >>      it under /usr instead, and symlink /basedir -> /usr/basedir.
> > >>
> > >> Notes:
> > >>      svn path=/head/; revision=21242
> > >>
> > >>
> > >> So it has been this way for 26 years at least. I do not know what to say
> > >> about whether /usr "should" contain it, but it does.
> > >
> > > Usually history matters. I can understand not changing it. On the flip
> > > side, I cut my UNIX teeth on SunOS 4 and Solaris where /home was /home --
> > > albeit automounted from /export/home on localhost or some NFS server. In
> > > the Red Hat land at $JOB, /home is its own partition (actually an LVM
> > > volume). In both cases /home is not in /usr because end-users can fill
> > > /usr. This can be problematic operationally because it's yet another
> > > headache to deal with should someone fill the filesystem. Filling /usr is
> > > more serious than filling /home.
> > >
> > > As a point of interest, when I installed my first FreeBSD many moons ago I
> > > used the Solaris standard of /export/home, using amd (now automount) to
> > > serve my /home. I'm not advocating we do this, it's overkill, but /home
> > > should not live in /usr. It's a potential headache for any sysadmin.
> > >
> > > With ZFS the solution is easy. With UFS based systems there are a lot of
> > > other factors that go into how we install the "default" from the get-go.
> >

First off, thank you Mike for looking at this closer.  Add me to any reviews
you might creat.

> > The situation is a fair mess.  It took me a little while to figure out that
> > the kludge referenced above is in the pw(8) command, which is used as the
> > backend to adduser(8).  Neither /home nor /usr/home is in the base package.
> > adduser defaults to /home/user, and creates the parent directory (e.g. /home)
> > if it does not exist, but if there is no internal slash, pw moves the parent
> > to /usr.  In this case, it makes the symlink from  root.  zfs is different,
> > in that it includes a usr/home dataset already (created by bsdinstall).
> > In this case, creating a user with /home/user causes the symlink to be added
> > as a side effect.
> >
> > I?m sure the kludge was originally done when root and /usr were separate
> > file systems by default, root was small, and there was no /home by default.
> > However, we now default to a single large file system (with datasets, in
> > the zfs case).
> >
> > All of this really is a horrible kludge, and it is a house of cards.  I'm
> > amazed that it doesn't break more often.  I'm tempted to remove the kludge
> > and change the zfs setup to create a home dataset rather than usr/home.

Or make it a menu option(s):
if (zfs) "Create a user home dataset?" (default yes)
if (ufs) "Create a user home directory?" (default yes)

	"User home location: /home" (This is default)

As far as I am concerned the symlink can just die....

> > However, if zfs users explicitly configure a home directory under /usr/home,
> > this would end up in the usr dataset.  An alternative would be to remove the
> > code from pw to create the parent directory entirely (which seems sensible),
> > and create a /home directory for ufs installs.  I don't know how well known
> > it is that adduser/pw will create parent directories for home directories
> > though.  This cleanup would change the default location for home directories
> > to /home, which makes more sense.  It would require documentation, e.g. in
> > the release notes.  The changes would only affect new installations, not
> > upgrades.
> >
> > Thoughts?
> >
> 
> Adding home would require a change to BSD.root.dist, since it's not
> currently in there.  Only usr is present.

It should *not* be in the etc/mtree/BSD.*.dist files at all.
And it is not on my 13.1R system.  It would not need to be
in BSD.root.dist either, this is a *post distribution* created
directory/dataset.

> 
> IMHO changing pw would be a reasonable approach.

I am mixed on this.... it more or less does the right
thing, and if a user specifies /tmp/foolishidea/home/$USER
that is on them.   No one said all users homes must be
in the same location.

> Gary Jennejohn

-- 
Rod Grimes                                                 rgrimes@freebsd.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202305111458.34BEwQR9058840>