Together, the /usr/sbin/useradd command and /etc/skel
directory (both are easy to
set up and use) provide a way to assure new users are added to your LFS
system with the same beginning settings for things such as the
PATH
, keyboard processing and other environmental variables.
Using these two facilities makes it easier to assure this initial state for
each new user added to the system.
The /etc/skel
directory holds
copies of various initialization and other files that may be copied to the
new user's home directory when the /usr/sbin/useradd
program adds the new user.
The useradd program uses a collection of default
values kept in /etc/default/useradd
. This file
is created in a base LFS installation by the
Shadow package. If it has been removed or
renamed, the useradd program uses some internal
defaults. You can see the default values by running
/usr/sbin/useradd -D.
To change these values, simply modify the
/etc/default/useradd
file as the
root
user. An alternative to
directly modifying the file is to run useradd as the
root
user while supplying the
desired modifications on the command line. Information on how to do this
can be found in the useradd man page.
To get started, create an
/etc/skel
directory and make sure it
is writable only by the system administrator, usually
root
. Creating the directory as
root
is the best way to go.
The mode of any files from this part of the book that you put in /etc/skel
should be writable only by the
owner. Also, since there is no telling what kind of sensitive information
a user may eventually place in their copy of these files, you should
make them unreadable by "group" and "other".
You can also put other files in
/etc/skel
and
different permissions may be needed for them.
Decide which initialization files should be provided in every (or most)
new user's home directory. The decisions you make will affect what you
do in the next two sections, The Bash Shell Startup Files and
The vimrc Files. Some or all of those files will be
useful for root
, any
already-existing users, and new users.
The files from those sections that you might want to place in
/etc/skel
include
.inputrc
, .bash_profile
,
.bashrc
, .bash_logout
,
.dircolors
, and .vimrc
. If
you are unsure which of these should be placed there, just continue to
the following sections, read each section and any references provided,
and then make your decision.
You will run a slightly modified set of commands for files which are
placed in /etc/skel
. Each section
will remind you of this. In brief, the book's commands have been written
for files not added to
/etc/skel
and instead just sends the results to the user's
home directory. If the file is going to be in
/etc/skel
, change the book's command(s) to send output there
instead and then just copy the file from
/etc/skel
to the appropriate directories, like /etc
, ~
or the home directory of any other user already in the system.
When adding a new user with useradd, use
the -m
parameter, which tells
useradd to create the user's home directory and
copy files from /etc/skel
(can be
overridden) to the new user's home directory. For example (perform as the
root
user):
useradd -m <newuser>
If you are sharing a /home
or /usr/src
with another
Linux distro (for example, the host distro used for building LFS), you
can create a user with the same UID (and, same primary group GID) to
keep the file ownership consistent across the systems. First, on
the other distro, get the UID of the user and the
GID of the user's primary group:
getent passwd <username>
| cut -d ':' -f 3,4
The command should output the UID and GID, separated by a colon. Now on the BLFS system, create the primary group and the user:
groupadd -g<GID>
<username>
&& useradd -u<UID>
-g<username>
<username>