Historically, Linux maintained a list of the mounted file systems in
        the file /etc/mtab. Modern kernels
        maintain this list internally and expose it to the user via the
        /proc filesystem. To satisfy utilities
        that expect to find /etc/mtab, create
        the following symbolic link:
      
ln -sv /proc/self/mounts /etc/mtab
        Create a basic /etc/hosts file to be
        referenced in some test suites, and in one of Perl's configuration
        files as well:
      
cat > /etc/hosts << EOF
127.0.0.1  localhost $(hostname)
::1        localhost
EOF
      
        In order for user root to be able to
        login and for the name “root” to be recognized, there must be relevant
        entries in the /etc/passwd and
        /etc/group files.
      
        Create the /etc/passwd file by running
        the following command:
      
cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/usr/bin/false
daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false
messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false
uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false
nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false
EOF
      
        The actual password for root will be
        set later.
      
        Create the /etc/group file by running
        the following command:
      
cat > /etc/group << "EOF"
root:x:0:
bin:x:1:daemon
sys:x:2:
kmem:x:3:
tape:x:4:
tty:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
cdrom:x:15:
adm:x:16:
messagebus:x:18:
input:x:24:
mail:x:34:
kvm:x:61:
uuidd:x:80:
wheel:x:97:
users:x:999:
nogroup:x:65534:
EOF
      
        The created groups are not part of any standard—they are groups
        decided on in part by the requirements of the Udev configuration in
        Chapter 9, and in part by common conventions employed by a number of
        existing Linux distributions. In addition, some test suites rely on
        specific users or groups. The Linux Standard Base (LSB, available at
        https://refspecs.linuxfoundation.org/lsb.shtml)
        only recommends that, besides the group root with a Group ID (GID) of 0, a group
        bin with a GID of 1 be present. The
        GID of 5 is widely used for the tty
        group, and the number 5 is also used in /etc/fstab for the
        devpts filesystem. All other group
        names and GIDs can be chosen freely by the system administrator since
        well-written programs do not depend on GID numbers, but rather use
        the group's name.
      
        The ID 65534 is used by the kernel for NFS and separate user
        namespaces for unmapped users and groups (those exist on the NFS
        server or the parent user namespace, but “do not exist” on the local
        machine or in the separate namespace). We assign nobody and nogroup to avoid an unnamed ID. But other distros
        may treat this ID differently, so any portable program should not
        depend on this assignment.
      
Some packages need a locale.
localedef -i C -f UTF-8 C.UTF-8
Some tests in Chapter 8 need a regular user. We add this user here and delete this account at the end of that chapter.
echo "tester:x:101:101::/home/tester:/bin/bash" >> /etc/passwd echo "tester:x:101:" >> /etc/group install -o tester -d /home/tester
        To remove the “I have no
        name!” prompt, start a new shell. Since the
        /etc/passwd and /etc/group files have been created, user name and
        group name resolution will now work:
      
exec /usr/bin/bash --login
The login, agetty, and init programs (and others) use a number of log files to record information such as who was logged into the system and when. However, these programs will not write to the log files if they do not already exist. Initialize the log files and give them proper permissions:
touch /var/log/{btmp,lastlog,faillog,wtmp}
chgrp -v utmp /var/log/lastlog
chmod -v 664  /var/log/lastlog
chmod -v 600  /var/log/btmp
      
        The /var/log/wtmp file records all
        logins and logouts. The /var/log/lastlog file records when each user last
        logged in. The /var/log/faillog file
        records failed login attempts. The /var/log/btmp file records the bad login attempts.
      
![[Note]](../images/note.png) 
        
          The /run/utmp file records the users
          that are currently logged in. This file is created dynamically in
          the boot scripts.
        
![[Note]](../images/note.png) 
        
          The utmp,
          wtmp, btmp, and lastlog
          files use 32-bit integers for timestamps and they'll be
          fundamentally broken after year 2038. Many packages have stopped
          using them and other packages are going to stop using them. It is
          probably best to consider them deprecated.