7.2 Objective 2: Tune the User
Environment
When you create a new user account on your
Linux system, some basic setup information is necessary for
the user to initially become productive. When the user logs
into the system, she will need:
-
A minimal set of environment variables,
including a PATH that is meaningful for your system.
-
Basic configuration files in her home
directory.
The amount of default information you provide
can range from minimal to extremely detailed. In general,
you'll want to provide the setup information that will allow
the user to begin working without extensive personal
customization.
7.2.1 System-wide Startup
Scripts
When the bash
shell starts, it looks for a number of configuration script
files, including /etc/profile. Commands in this file
are executed at login time and contain global startup
information and settings for all bash users.
Example
7-1 contains an example profile.
Example 7-1. Sample
/etc/profile File # /etc/profile
# System wide environment and startup programs
# Functions and aliases go in /etc/bashrc
PATH="$PATH:/usr/X11R6/bin"
PS1="[\u@\h \W]\\$ "
ulimit -c 1000000
if [ `id -gn` = `id -un` -a `id -u` -gt 14 ]; then
umask 002
else
umask 022
fi
USER=`id -un`
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
HISTFILESIZE=1000
INPUTRC=/etc/inputrc
PATH="$PATH:/usr/local/bin"
export PATH PS1 HOSTNAME HISTSIZE HISTFILESIZE
USER LOGNAME MAIL INPUTRC
The syntax for bash programming is in Chapter
17. However, you can see that this file does basic shell
setup for the user, including the assignment of a number of
environment variables. As an example of a common local
customization, note the line containing PATH= adds an
additional directory to those already listed in the
PATH environment variable. In this case, the system
administrator expects that most users will need to run
programs stored in /usr/local/bin. Making this
modification once in /etc/profile eliminates the need
for individuals to make it in their personal bash profiles.
Remember that /etc/profile is
executed only once, while /etc/bashrc is called
for each new shell invocation. Also note that these
startup scripts are specific to bash and that users of other
shells will have a different configuration.
|
As you may have noted in the comments at the
top of Example
7-1, the definition of functions and aliases typically is
not done in /etc/profile, but instead in
/etc/bashrc. This is because functions and aliases are
not inherited by new shells.
Since commands in /etc/profile are executed only at
login time, functions and aliases defined there would only be
available in the login shell. Commands in the bashrc
file are executed each time a new shell starts; their effects
will apply to all shells.
7.2.2 Setting the Home Directory
for New Accounts
When creating a new account, usually you'll
want to create a default home directory for the user of the
account. On Linux systems, the home directory is most likely
something like /home/username, but you can define it in
any way you like.
When you create a new home directory, it is a
courtesy to the new user to initially populate the directory
with useful files. These might include startup files for the
user's shell, his desktop, or for X Window applications. To
facilitate the automated population of new user directories,
an example home directory is created in a "skeleton" directory
/etc/skel. This directory should contain all of the
files and subdirectories that all new users will need. Example
7-2 shows the contents of an example /etc/skel
directory.
Example 7-2. Sample Skeleton
(/etc/skel) Directory -rw-r--r-- 1 root root 1422 Mar 29 1999 .Xdefaults
-rw-r--r-- 1 root root 24 Jul 13 1994 .bash_logout
-rw-r--r-- 1 root root 230 Aug 22 1998 .bash_profile
-rw-r--r-- 1 root root 124 Aug 23 1995 .bashrc
drwxr-xr-x 3 root root 1024 Dec 2 09:37 .kde
-rw-r--r-- 1 root root 966 Apr 16 1999 .kderc
drwxr-xr-x 5 root root 1024 Dec 2 09:37 Desktop
This example /etc/skel directory
contains:
-
An X application startup file
(.Xdefaults).
-
Three configuration files for the shell
(.bash_logout, .bash_ profile, and
.bashrc).
-
A directory and a startup file for KDE
(.kde and .kderc).
-
A Desktop directory, which defines
the appearance of the user's desktop.
The specifics of this example are not
important, but illustrate that a number of default files can
be included in a new user's account setup. Additions could
include default files for other desktop environments such as
GNOME as well as startup files for other shells.
When a new account is created with a home
directory, the entire contents of /etc/skel are copied
recursively (that is, including subdirectories) to the new
home directory location. The home directory and its entire
contents are then set to the new account's UID and GID, making
the new user owner of her initial files. She is then free to
modify these files and directories as necessary.
As the system administrator, you may add,
modify, and delete files in /etc/skel as needed for
your environment.
|