Configuration Files in Linux
Configuration Files in Linux
Configuration Files in Linux
Every Linux program is an executable file holding the list of opcodes the CPU executes to accomplish
specific operations. For instance, the ls command is provided by the file /bin/ls, which holds the list
of machine instructions needed to display the list of files in the current directory onto the screen.
The behaviour of almost every program can be customized to your preferences or needs by
modifying its configuration files.
Is there a standard configuration file format in Linux?
In a word, no. Users who are new to Linux (rightly) feel frustrated that each configuration file looks
like a new challenge to figure out. In Linux each programmer is free to choose the configuration file
format he or she prefers. Format options range from the /etc/shells file, which contains a list of
possible shells separated by a newline, to Apache's complex /etc/httpd.conf file.
What are system configuration files?
The kernel itself may be considered a "program." Why does the kernel need configuration files? The
kernel needs to know the list of users and groups in the system, and manage file permissions (that is,
determine if a file can be opened by a specific user, according to the permissions, UNIX_USERS). Note
that these files are not specifically read by programs, but by a function provided by a system library,
and used by the kernel. For instance, a program needing the (encrypted) password of a user should
not open the /etc/passwd file. Instead, it should call the system library function getpw(). This kind of
function is also known as a system call. It is up to the kernel (through the system library) to open
the /etc/passwd file and after that, search for the password of the requested user.
Most of the configuration files in the Red Hat Linux system are in the /etc directory unless otherwise
specified. The configuration files can be broadly classified into the following categories:
Access files
/etc/host.conf Tells the network domain server how to look up hostnames. (Normally
/etc/hosts, then name server; it can be changed through netconf.)
/etc/hosts Contains a list of known hosts (in the local network). Can be used if the IP of the
system is not dynamically generated. For simple hostname resolution (to dotted
notation), /etc/hosts.conf normally tells the resolver to look here before asking
the network nameserver, DNS or NIS.
/etc/redhat-release Includes one line stating the Red Hat release number and name. Used by
rc.local.
/etc/rc.d/rc Normally run for all run levels with level passed as argument. For example, to
boot your machine in the Graphics mode (X-Server), run the following
command from your command line: init 5. The runlevel 5 is starts the system
in graphics mode.
/etc/rc.d/rc.local Not official. May be called from rc, rc.sysinit, or /etc/inittab.
/etc/rc.d/rc.sysinit Normally the first script run for all run levels.
/etc/rc.d/rc/rcX.d Scripts run from rc (X stands for any number from 1 to 5). These directories
are "run-level" specific directories. When a system starts up, it identifies the
run-level to be initiated, and then it calls all the startup scripts present in the
specific directory for that run-level. For example, the system usually starts up
and the message "entering run-level 3" is shown after the boot messages;
this means that all the init scripts in the directory /etc/rc.d/rc3.d/ will be
called.
File system
The kernel provides an interface to display some of its data structures that can be useful for
determining the system parameters like interrupts used, devices initialised, memory statistics, etc.
This interface is provided as a separate but dummy filesystem known as the /proc filesystem. Many
system utilities use the values present in this filesystemf or displaying the system statistics. For
example, the file /proc/modules lists the currently loaded modules in the system. This information is
read by the command lsmod, which then displays it in a human readable format. In the same way,
the file mtab specified in the following table reads the /proc/mount file, which contains the currently
mounted filesystems.
/etc/mtab This changes continuously as the file /proc/mount changes. In other words,
when filesystems are mounted and unmounted, the change is immediately
reflected in this file.
/etc/fstab Lists the filesystems currently "mountable" by the computer. This is important
because when the computer boots, it runs the command mount -a, which takes
care of mounting every file system marked with a "1" in the next-to-last column
of fstab.
/ Configuration for all the operations (mkdir, copy, format, etc.) on a DOS-type
etc/mtools.conf filesystem.
System administration
/etc/group Contains the valid group names and the users included in the specified groups. A
single user can be present in more than one group if he performs multiple tasks.
For example, is a "user" is the administrator as well as a member of the project
group "project 1", then his entry in the group file will look like: user: * : group-id :
project1
/etc/nologin If the file /etc/nologin exists, login(1) will allow access only to root. Other users will
be shown the contents of this file and their logins refused.
etc/passwd See "man passwd". Holds some user account info including passwords (when not
"shadowed").
/etc/rpmrc rpm command configuration. All the rpm command line options can be set
together in this file so that all of the options apply globally when any rpm
command is run on that system.
/ Contains the device names of tty lines (one per line, without leading /dev/) on
etc/securetty which root is allowed to login.
/etc/usertty Contains the encrypted password information for users' accounts and optionally
/etc/shadow the password aging information. Included fields are:
Login name
Encrypted password
Days since Jan 1, 1970 that password was last changed
Days before password may be changed
Days after which password must be changed
Days before password is to expire that user is warned
Days after password expires that account is disabled
Days since Jan 1, 1970 that account is disabled
/etc/motd Message Of The Day; used if an administrator wants to convey some message to all
the users of a Linux server.
Networking
/etc/gated.conf Configuration for gated. Used only by the gated daemon.
/etc/networks Lists names and addresses of networks accessible from the network to
which the machine is connected. Used by route command. Allows use of
name for network.
/etc/protocols Lists the currently available protocols. See the NAG (Network
Administrators Guide) and man page.
C interface is getprotoent. Should never change.
/etc/resolv.conf Tells the kernel which name server should be queried when a program
asks to "resolve" an IP Address.
/etc/rpc Contains instructions/rules for RPC, which can be used in NFS calls,
remote file system mounting, etc.
/etc/exports The file system to be exported (NFS) and permissions for it.
/etc/inetd.conf Config file for inetd. See the inetd man page. Holds an entry for each
network service for which inetd must control daemons or other
servicers. Note that services will be running, but comment them out in
/etc/services so they will not be available even if running. Format:
<service_name><sock_type><proto><flags><user><server_path><args>
/etc/sendmail.cf The Mail program sendmail's configuration file. Cryptic to understand.
System commands
System commands are meant exclusively to control the system, and make everything work properly.
All the programs like login (performing the authentication phase of a user on the console) or bash
(providing the interaction between a user and the computer) are system commands. The files
associated with them are therefore particularly important. This category has the following files of
interest to users and administrators.
/etc/lilo.conf Contains the system's default boot command line parameters and also the
different images to boot with. You can see this list by pressing Tab at the LILO
prompt.
/etc/identd.conf Identd is a server that implements the TCP/IP proposed standard IDENT user
identification protocol as specified in the RFC 1413 document. identd operates
by looking up specific TCP/IP connections and returning the user name of the
process owning the connection. It can optionally return other information
instead of a user name. See the identd man page.
/etc/inittab This is chronologically the first configuration file in UNIX. The first program
launched after a UNIX machine is switched on is init, which knows what to
launch, thanks to inittab. It is read by init at run level changes, and controls
the startup of the main process.
/etc/termcap A database containing all of the possible terminal types and their capabilities.
Daemons
A daemon is a program running in non-interactive mode. Typically, daemon tasks are related to the
networking area: they wait for connections, so that they can provide services through them. Many
daemons are available for Linux, ranging from Web servers to ftp servers.
/etc/syslogd.conf The configuration file for the syslogd daemon. syslogd is the daemon that
takes care of logging (writing to disk) messages coming from other
programs to the system. This service, in particular, is used by daemons that
would not otherwise have any means of signaling the presence of possible
problems or sending messages to users.
The configuration file for Apache, the Web server. This file is typically not in
/etc/httpd.conf /etc. It may be in /usr/local/httpd/conf/ or /etc/httpd/conf/, but to make
sure, you need to check the particular Apache installation.
/etc/conf.modules The configuration file for kerneld. Ironically, it is not the kernel "as a
or /etc/modules.conf daemon". It is rather a daemon that takes care of loading additional kernel
modules "on the fly" when needed.
User programs
A user or system program reads its configuration file every time it is launched. Remember, though,
that some system programs are spawned when the computer is turned on, and their behaviour
depends on what they read in the configuration files in /etc/. So, the first time a user program is
started, the default configuration is read from the files present in the /etc/ directory. Later, the user
can customise the programs by using rcand . (dot) files as explained in the next section.
~/.bash_login Look at "man bash". Treated by bash like ~/.bash_profile if that doesn't exist.
~/.bashrc Look at "man bash". Sourced by bash non-login interactive shells (no other
files are). Non-interactive shells source nothing unless BASH_ENV or ENV are
set.
~/.forward If this contains an e-mail address, then all mail to owner of ~ will be
forwarded to that e-mail address.
~/.fvwmrc Config files for fvwm and fvwm2 (the basic X Window manager).
~/.fvwm2rc
~/.hushlogin Look at "man login". Causes a "quiet" login (no mail notice, last login info, or
MOD).
~/.ncftp/ Directory for ncftp program; contains bookmarks, log, macros, preferences,
trace. See man ncftp. The purpose of ncftp is to provide a powerful and
flexible interface to the Internet standard File Transfer Protocol. It is
intended to replace the stock ftp program that comes with the system.
~/.profile Look at "man bash". Treated by bash like ~/.bash_profile if that and
~/.bash_login don't exist, and used by other Bourn-heritage shells too.
~/.rhosts Used by the r-tools: rsh, rlogin, etc. Very weak security since host
impersonation is easy.
1. Must be owned by user (owner of ~/) or superuser.
2. Lists hosts from which users may access this account.
3. Ignored if it is a symbolic link.
~/.signature Message text that will be appended automatically to the mail sent from this
account.
~/.xinitrc Read by X at startup (not by xinit script). Mostly starts some progs.
Example: exec /usr/sbin/startkde
If the above line is present in this file, then the KDE Window Manager is
started in when the startx command is issued from this account.
~/.xmodmaprc This file is passed to the xmodmap program, and could be named anything
(~/.Xmodmap and ~/.keymap.km, for example).
~/.Xauthority Read and written by xdm program to handle authorization. See the X, xdm,
and xauth man pages.
~/.Xmodmap Points to .xmodmaprc; Red Hat had (has) .xinitrc using this name.
~/.Xresources Usually the name for the file passed to xrdb to load the X resources database,
to avoid the need for applications to read a long .Xdefaults file. (~/.Xres has
been used by some.)