System wide configuration parameters in configuration files (/etc, e.g.)
Linux - NewbieThis Linux forum is for members that are new to Linux.
Just starting out and have a question?
If it is not in the man pages or the how-to's this is the place!
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
System wide configuration parameters in configuration files (/etc, e.g.)
Hy,
Although this is my first post, I was unsure to post it in here... so feel free to move it to a better place!
I am searching for a way to use a variable-like system in configuration files from different applications. For instance instead of writing my ip in sshd config file (/etc/configuration-file) and having to change it later, I would just use my-ip variable defined elsewhere. Is there a way todo that for different application configuration files?
I don't even know where or how to start looking for this, so any guidance will be appreciated!
have a look at "/etc/bashrc " or "/etc/profile ( but this should have a warning in it )"
i use a text file "/etc/profile.local "
but this is VERY dependent on just what your os is
or
write a shell script and place it in "/etc/profile.d"
but be VERY careful if you mess it up you might need the install dvd in rescue mode to undo what you did
If you have multiple NICs (inc virtual), then you might want to lock it down to a specific one or few
Code:
ListenAddress
Specifies the local addresses sshd(8) should listen on. The
following forms may be used:
ListenAddress host|IPv4_addr|IPv6_addr
ListenAddress host|IPv4_addr:port
ListenAddress [host|IPv6_addr]:port
If port is not specified, sshd will listen on the address and all
prior Port options specified. The default is to listen on all
local addresses. Multiple ListenAddress options are permitted.
Additionally, any Port options must precede this option for non-
port qualified addresses.
Yes, the idea was to lock sshd to one interface and/or NIC.
And then I started wondering... if I change IP in the future, I will most probably forget about this configuration...
So the "ideal" would be to have a file where general data is kept:
myIP=0.0.0.1
myHostname=workstation
and then be able to use that in configuration files (if one assumes, for instance, I would need to use my IP in another configuration file, maybe this idea becomes clearer)...
Many people have that set in /etc/hosts; assuming its static, not dhcp.
Sometimes they add key servers as well, so they don't have to relay on DNS always being up, eg during the boot process.
If one's running a web server (or any other sort of server), I would tend to assume a static IP. Unfortunately, I don't know a way to do what the OP wants (doesn't mean it's not possible, just that I don't know how to do it :-)). If, however, the intent is to lock down specific types of traffic to a specific interface, this could be trivially done with iptables (the "-i" flag specifically).
I realize this is not an easy question (I've been looking around, and thinking about it: since different configurations files get parsed by different applications, there would have to exist a major standard).
Anyway, thanks for your time!
...however if you wanted to look for this, where/how would you look?
(i haven't found any mention of this subject. I would thing I'm not the only one with this problem...)
The point is that (for a static IP), it is often set in eg /etc/hosts or /etc/sysconfig/network or even /etc/sysconfig/network-scripts/ifcfg-eth0 .
It can even be supplied by a DHCP server as a fixed-address.
You could set it in a custom file if you want, but certain programs/services expect to find it in certain places, so only your own custom built SW will find it in a non-std place.
Well I'm probably explaining this the wrong way. Let me give an example:
I have app A and B which save their configurations in /etc/a.cfg and /etc/b.cfg.
Booth of them need to know the IP of my machine (in this example, 2.2.2.2).
So:
*/etc/a.cfg
...
ip=2.2.2.2
...
*/etc/b.cfg
...
ip=2.2.2.2
...
But, in a week or so I'll have to change my IP, and I'm almost certain I'll forget to change one of the configurations files.
So, how can I change my IP in only one place and have all configuration files corrected?
I use IP in the example, but I could use some other value that several configuration files need, as an SDK home folder, or... anything really!
Tnks
---------- Post added 30-05-13 at 13:33 ----------
Adding a hosts file entry or running dnsmasq or a name server to translate a host name isn't a universal solution to the OP's question. Not all config files that take an IP address permit the use of a resolvable host name in place of a numeric address. Subnet addresses in many config files have to be specified numerically as well.
I gather that the OPs reference to an IP address was just an example of one possible variable substitution, and what he is really looking for is something more generic that could be used for any kind of substitution in config files. Unfortunaetly, no such thing exists as far as I know.
Yes, the idea was to lock sshd to one interface and/or NIC.
And then I started wondering... if I change IP in the future, I will most probably forget about this configuration...
So the "ideal" would be to have a file where general data is kept:
myIP=0.0.0.1
myHostname=workstation
and then be able to use that in configuration files (if one assumes, for instance, I would need to use my IP in another configuration file, maybe this idea becomes clearer)...
The way I keep track of config or other customizable files I've modified so I don't forget about them on an upgrade or a rebuild of my system is to copy them all to a directory under my root home, e.g., /root/upgrade/configs, after I've customized them. Any time I update them in their real location, I make a new copy in my root home configs folder. I also keep a text file to note any directories I add (e.g., in /var/log or whatever) or modify permissions on, and so forth.
Even if my backup copy of the customized files isn't up to date, it's usually no big deal. The main thing is that the list of files serves as a tickler so I know what I might need to update if network or other factors change, or if I upgrade or re-install my system.
There's 2 (at least) different qns here.
For sshd (and any other pre-built tool/service) you need to use the cfgs & capabilities built into the service ie do it their way.
For your own SW, you can of course create a generic cfg eg /etc/my_custom.cfg and put anything you want in there and have all YOUR SW read that.
However, it can get messy if you start putting stuff in there that only applies to SOME of your progs.
As mentioned above, its a good idea to backup cfgs before you change them.
I generally append the current date eg blah.cfg.YYYYMMDD, which sorts naturally under eg ls. It also enables you to check when you changed something at a glance eg if you start getting weird behaviour, you can see if it started about that time.
Not to mention having to have a parser in each application recognize the parameters for ALL of the applications, even those parameters not used.
Then you have to rebuild all of the applications when you add just one more...
You could try using XML.... but then you also have to put up with the complexity built in just keeping the XML syntax right... So you build an editor to do that...(yet another application), which must also be rebuilt each time you add another application... Or remove one.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.