Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 May 2023 08:40:01 +0000
From:      Gary Jennejohn <garyj@gmx.de>
To:        Mike Karels <mike@karels.net>
Cc:        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:  <20230511104001.6b925848@ernst.home>
In-Reply-To: <4367FD0A-76AC-4E98-A133-E50D8CF841C7@karels.net>
References:  <202305101419.34AEJf1x054239@gndrsh.dnsmgr.net> <ba22a75d-06c0-371e-603e-7ded9d1dca97@freebsd.org> <20230510151313.9E7A6111@slippy.cwsent.com> <4367FD0A-76AC-4E98-A133-E50D8CF841C7@karels.net>

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>, Mitchel=
l
> > 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=3D36db6b04962a01ff7b21=
592def02d
> >> 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=3D/head/; revision=3D21242
> >>
> >>
> >> 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 a=
go I
> > used the Solaris standard of /export/home, using amd (now automount) t=
o
> > serve my /home. I'm not advocating we do this, it's overkill, but /hom=
e
> > 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-g=
o.
>
> The situation is a fair mess.  It took me a little while to figure out t=
hat
> the kludge referenced above is in the pw(8) command, which is used as th=
e
> backend to adduser(8).  Neither /home nor /usr/home is in the base packa=
ge.
> 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 pa=
rent
> to /usr.  In this case, it makes the symlink from  root.  zfs is differe=
nt,
> 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 a=
dded
> 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 defau=
lt.
> 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 klud=
ge
> and change the zfs setup to create a home dataset rather than usr/home.
> However, if zfs users explicitly configure a home directory under /usr/h=
ome,
> 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 sensib=
le),
> and create a /home directory for ufs installs.  I don't know how well kn=
own
> it is that adduser/pw will create parent directories for home directorie=
s
> though.  This cleanup would change the default location for home directo=
ries
> 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.

IMHO changing pw would be a reasonable approach.

=2D-
Gary Jennejohn



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