Re: Writing to /etc/ from a "privileged" UI
* David Paleino <firstname.lastname@example.org> [110509 04:19]:
> On Mon, 9 May 2011 11:12:53 +0200, Adam Borowski wrote:
> > /etc may include only _static_ configuration. What you have is variable
> > state which belongs in /var. It's no different from a database, or dpkg's
> > status data.
> Static IPs, DNS servers and WEP/WPA keys for a given wireless network are
> "variable state"? Sorry, I disagree.
> I already said that I have a patch not to save networks for which no
> configuration is made -- which is the "variable state" thing at the moment. The
> question was different :)
This isn't about whether the data saved in the config file is variable,
it is about whether the config file is variable. Files in /etc should
only be modified when the sysadmin is doing what (s)he considers to be
"configuration", not when a user is running a program.
The specific data shown in the bug report is clearly variable "state"
information and not static configuration info, but even adding and
removing more permanent wireless access point info should not be done in
/etc during the normal, continuous operation of a daemon.
If I were designing the config structure, since each AP is a distinct
entity that doesn't depend on any other AP (maybe that should be essid,
not AP), I would have a .d directory where each essid had its own config
file. There could be corresponding /etc/wicd/something.d and
/var/lib/wicd/something.d directories. The admin could place files in
/etc that he didn't want users messing with. Non-conflicting files in
/etc, /var/lib, and ~user/.wicd (or better, ~user/.config/wicd), would
be treated equally by wicd, with preference to ~user/.config/wicd then
/var/lib/wicd, then /etc/wicd for any conflicting entries.
Actually, one normal user should not be able to override the admin
defaults for another user, so if there is already an entry in /etc, wicd
should place any user change to that entry in ~user, but new,
non-conflicting entries should go in /var/lib. Then, the order of
preference should be ~user, /etc, /var/lib.
Transient state information, like signal strength and quality should
_not_ go in these files, but rather in /var/run/wicd/ (soon to be