Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 May 2011 16:26:36 -0400
From:      Jason Hellenthal <jhell@DataIX.net>
To:        Garrett Cooper <yanegomi@gmail.com>
Cc:        freebsd-rc@freebsd.org
Subject:   Re: [RFC][Change-Request] Create usefulness in rc.subr etc/rc.conf.d/*.conf namespace.
Message-ID:  <20110508202636.GF3527@DataIX.net>
In-Reply-To: <C7EC90A2-936C-44E1-BC5E-E249399AF9AB@gmail.com>
References:  <20110508191336.GC3527@DataIX.net> <C7EC90A2-936C-44E1-BC5E-E249399AF9AB@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--cHMo6Wbp1wrKhbfi
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable


Garrett,

On Sun, May 08, 2011 at 01:13:12PM -0700, Garrett Cooper wrote:
> On May 8, 2011, at 12:13 PM, Jason Hellenthal wrote:
>=20
> >=20
> > List, - Please reply-to freebsd-rc@freebsd.org
> >=20
> > Recently I have been going over some changes in the configurations that=
=20
> > are possible with the rc subsystem and to my dismay I have found some=
=20
> > inconsistencies with in particular the way rc.conf.d directory is=20
> > processed and the arguments that are supplied to load_rc_config so I ha=
ve=20
> > patched it up...
> >=20
> > Let me explain:  As determined by rc.subr load_rc_config, config's from=
=20
> > rc.conf.d are loaded by the scripts $name as an argument to load_rc_con=
fig=20
> > and thus only the name being parsed is is available to be used in the=
=20
> > rc.conf.d directory. Why is this bad ? Its not! but it is inconvenient =
as=20
> > the user has no direct way to know that a variable used by nfsd is also=
=20
> > needed by mountd or the same for various other scripts in the rc.d=20
> > directory. At this time these config's are explained to be available fo=
r=20
> > the user to utilize by rc.conf(5) but yet without much knowledge of the=
=20
> > inner workings of the rc subsystem it would be quite the feat to do.
> >=20
> >=20
> > The attachment[1] keeps this functionality the same while introducing a=
=20
> > more convenient approach for the user to modularize their configuration=
=20
> > however they see fit within a couple constraints that work very well.=
=20
> >=20
> >=20
> > What does it do ?: As stated above, current functionality is undisturbe=
d=20
> > while allowing the user to create config's by any name they so desire a=
s=20
> > long as it has an extension of ".conf", also introducing the ability to=
=20
> > turn a configuration file off by using chmod(1). You can turn nfsc1.conf
> > off/on by simply chmod [-/+]x etc/rc.conf.d/nfs1.conf
> >=20
> >=20
> > Why ? Simple. How many times have you been bitten by disabling somethin=
g=20
> > in the rc.conf file and left to discover what you just disabled was als=
o=20
> > used by another daemon but that daemon is now not starting ? This is a =
way=20
> > to virtualize your configuration allowing you to add multiple _enable=
=3D=20
> > lines to different configurations for different roles. For instance=20
> > rpcbind is used by both samba and nfs*. With this you can add=20
> > rpcbind_enable to both a configuration for samba and nfs and when you=
=20
> > disable one service you know that you have not disabled a dependent for=
=20
> > another.
> >=20
> >=20
> > This is a small addition that fixes currently broken undesirable aspect=
s=20
> > of the configuration system that deals with the rc.conf.d directory wit=
h a=20
> > SysV style init approach that is just as flexible. This should apply=20
> > cleanly to current and stable/8 & 8.2-RELEASE systems. Once more feedba=
ck=20
> > has been received Ill update the manual page with any suggestions=20
> > regenerate the patch to accommodate and file a PR.
> >=20
> >=20
> > 1). http://patches.jhell.googlecode.com/hg/rc.subr_modular_conf.patch
>=20
> 	Doing:
>=20
> find /etc/rc.conf.d/ -type f -name '*.conf' -mindepth 1 -maxdepth 1 -perm=
 +111 | while read _modular_conf; do
> 	debug "Sourcing $_modular_conf"
> 	. "$_modular_conf"
> done
>=20
> 	might be better. There's some more magic that could ultimately be done t=
o make this more secure/robust using "-print0" | xargs, but it's up to you =
how you might want to go about solving that problem.
> 	Also, I don't know if depending on a .conf file to be executable is nece=
ssarily the best course of action.
> Cheers!
> -Garrett

Yeah I see what you are getting at there and I came across thinking the=20
same thing. Fortunately /etc/rc.conf.d/*.conf is only one level deep=20
without using find(1).

As for the security sense if someone has a way to write to that directory=
=20
then most likely they are not going to be looking into placing anything in=
=20
that directory as theyll have rights to change anything under the rc sun!=
=20
plus anyting under most of the rest of the system.


I do like the approach though. Thank you.

--=20

 Regards, (jhell)
 Jason Hellenthal


--cHMo6Wbp1wrKhbfi
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (FreeBSD)
Comment: http://bit.ly/0x89D8547E

iQEcBAEBAgAGBQJNxvx7AAoJEJBXh4mJ2FR+Sg8H/j1SFy+QKO9q/twKyAZKcu+v
BLjH4RciB3SeSYX7BDZHM2mbxo81ITERT9D9ONe865AzA57rHOc3BxgdbI/NJ5aK
oS4n0cJc/QTpg8g9boG+SIr5Ucq6U2eaQOnWafyvRsCIolqcoyvsqsy9UpTNRQYl
lNf7Y1T8FpsG9CPq3+qrd18TM5pAq46gWIJpXy8AFZKjGqR3p7fuVPkfNApr7T+V
5zVtuCYkrS1aL+nBUF1Bihct1u694X9XUTiRL0oMM8JmVFAc7dY14Rb0wtq1LKYJ
7jHibCa7YoatMHdHMEVb7q7ClCFu752h3jL+F4z0ce2WK21J1QBfxN3R8uoXp4M=
=DEMi
-----END PGP SIGNATURE-----

--cHMo6Wbp1wrKhbfi--



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