svn commit: r367280 - head/lib/libc/gen

Stefan Esser se at freebsd.org
Mon Nov 2 22:24:36 UTC 2020


Am 02.11.20 um 22:49 schrieb Emmanuel Vadot:
> On Mon, 2 Nov 2020 22:41:38 +0100
> Stefan Esser <se at freebsd.org> wrote:
> 
>> Am 02.11.20 um 20:20 schrieb Oliver Pinter:> On Monday, November 2,
>> 2020, Stefan Eßer <se at freebsd.org
>>> <mailto:se at freebsd.org>> wrote:
>>>
>>>      Author: se
>>>      Date: Mon Nov  2 18:48:06 2020
>>>      New Revision: 367280
>>>      URL: https://svnweb.freebsd.org/changeset/base/367280
>>>      <https://svnweb.freebsd.org/changeset/base/367280>
>>>
>>>      Log:
>>>         Re-arrange some of the code to separate writable user tree
>>>      variables from
>>>         R/O variables.
>>>
>>>         While here fix some nearby style. No functional change intended.
>>>
>>>         MFC after:    1 month
>>>
>>>
>>> Is there any phabricator reference for this / these commit(s) + reviewer
>>> lists?
>>
>> The previous commit that has been refined in this one has been
>> discussed in D27009.
>>
>> I had added the new R/W sysctl variable to a switch statement that
>> contained one R/O string value, and excluded the OID from causing
>> an error return when a new value had been passed.
>>
>> This was functionally OK, but I have decided to move handling of
>> the new writable variable to before the check for a write attempt
>> and thus need to test specifically for its OID.
>>
>> This sysctl variable is referenced in Scott Longs proposed
>> getlocalbase() function (D27022), but also in the change to make
>> it define defaults paths in /etc/defaults/rc.conf (D27014).
>>
>> I do not support to make LOCALBASE dynamic for a broad range of
>> programs, since this could lead to severe security issues (e.g.
>> when a program is restricted by policy settings LOCALBASE/etc and
>> an user-defined LOCALBASE could be used to circumvent them.
>>
>> There are already programs that respect a LOCALBASE environment
>> variable, e.g. the pkg program, to allow it to e.g. operate with
>> a DESTDIR prefix other than "/". This is a program that could
>> instead use getlocalbase(), IMHO.
>>
>> But for security reasons all files that determine policies and
>> exist in LOCALBASE since they are not distributed as part of the
>> base system, should be located in a secure way, and that is by
>> referring to a compiled in trusted path, IMHO.
>>
>> Even if the sysctl variable "user.localbase" can only be written to
>> by root, the use of getlocalbase() provided by a shared library could
>> allow to perform a LD_PRELOAD attack (provide a getlocalbase() that
>> leadsto a user provided policy file instead of the admin controlled
>> one).
>>
>> Regards, STefan
> 
>   I think that the first question we want to ask is : Do we want to
> support LOCALBASE being different than /usr/local

The big majority of users will keep the default value, and I do not
see a good reason for a change, except if there is a large installed
base that traditionally uses another prefix (I have seen /vol/local
and /opt, but also OS and architecture-specific prefixes, for example).

>   I honestly don't see any advantages of making it !=/usr/local/ and
> before we start putting a lot of new/useless(for I guess 99% of our
> user base) in the tree we should here why people are using /usr/pkg or
> whatever weird location.

No, why should we [assess] (assuming that word is to be implied in
your sentence) why people want to be able to easily use a different
prefix? That would be a waste of time, IMHO.

I know that there are legitimate reasons to want a different prefix,
and we had requests to make it easier to support it.

We have literal uses of /usr/local in a lot of files in the FreeBSD
base system (more than 1700) and this is not going to change.

But it was easy to replace a number of such literal pathes in base
system binaries, and we can make it easier for those that need a
different prefix to get it consistently used.

>   If they have some good argument, then we should proceed further.

You do not have to participate in this effort - there are so many
other areas to work on (and I know you are very active in one).

But please do not ask those that have started to reduce the use of
literal /usr/local in the base system to justify this work.

If you are happy with /usr/local, then you are not affected at all.
And if you need to configure your system to use a different prefix,
you are welcome to let us know which steps are still causing much
effort and should be worked on to make it easier ...

Do you have any reason to be against removal of literal /usr/local
from the base system in favor of using a symbolic name for it?

Regards, STefan


More information about the svn-src-head mailing list