aboutsummaryrefslogtreecommitdiffstats
path: root/chapter06/pwdgroup.xml
blob: 66ed175bd345a304d1c66fedc1c8cf514d274e36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>
<sect1 id="ch-system-pwdgroup">
<title>Creating the passwd, group, and log Files</title>
<?dbhtml filename="pwdgroup.html"?>

<indexterm zone="ch-system-pwdgroup"><primary sortas="e-/etc/passwd">/etc/passwd</primary></indexterm>
<indexterm zone="ch-system-pwdgroup"><primary sortas="e-/etc/group">/etc/group</primary></indexterm>
<indexterm zone="ch-system-pwdgroup"><primary sortas="e-/var/run/utmp">/var/run/utmp</primary></indexterm>
<indexterm zone="ch-system-pwdgroup"><primary sortas="e-/var/log/btmp">/var/log/btmp</primary></indexterm>
<indexterm zone="ch-system-pwdgroup"><primary sortas="e-/var/log/lastlog">/var/log/lastlog</primary></indexterm>
<indexterm zone="ch-system-pwdgroup"><primary sortas="e-/var/log/wtmp">/var/log/wtmp</primary></indexterm>

<para>In order for user <emphasis>root</emphasis> to be able to login
and for the name <quote>root</quote> to be recognized, there must be relevant
entries in the <filename>/etc/passwd</filename> and
<filename>/etc/group</filename> files.</para>

<para>Create the <filename>/etc/passwd</filename> file by running the following
command:</para>

<screen><userinput>cat &gt; /etc/passwd &lt;&lt; "EOF"
<literal>root:x:0:0:root:/root:/bin/bash</literal>
EOF</userinput></screen>

<para>The actual password for <emphasis>root</emphasis> (the <quote>x</quote>
used here is just a placeholder) will be set later.</para>

<para>Create the <filename>/etc/group</filename> file by running the following 
command:</para>

<screen><userinput>cat &gt; /etc/group &lt;&lt; "EOF"
<literal>root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
tty:x:4:
tape: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:
usb:x:14:</literal>
EOF</userinput></screen>

<para>The created groups are not part of any standard&mdash;they are groups
decided on in part by the requirements of the Udev configuration in the next
chapter, and in part by common convention employed by a number of existing Linux
distributions. The Linux Standard Base (LSB, available at <ulink
url="http://www.linuxbase.org"/>) recommends only that, besides the group
<quote>root</quote> with a Group ID (GID) of 0, a group <quote>bin</quote> with
a GID of 1 be present. 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.</para>

<para>To remove the <quote>I have no name!</quote> prompt, start a new
shell. Since a full Glibc was installed in <xref
linkend="chapter-temporary-tools"/> and the
<filename>/etc/passwd</filename> and <filename>/etc/group</filename>
files have been created, user name and group name resolution will now
work.</para>

<screen><userinput>exec /tools/bin/bash --login +h</userinput></screen>

<para>Note the use of the <parameter>+h</parameter> directive. This tells
<command>bash</command> not to use its internal path hashing. Without this
directive, <command>bash</command> would remember the paths to binaries it has
executed. To ensure the use of the newly compiled binaries as soon as they are
installed, the <parameter>+h</parameter> directive will be used for the duration
of this chapter.</para>

<para>The <command>login</command>, <command>agetty</command>, and
<command>init</command> 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:</para>

<screen><userinput>touch /var/run/utmp /var/log/{btmp,lastlog,wtmp}
chgrp utmp /var/run/utmp /var/log/lastlog
chmod 664 /var/run/utmp /var/log/lastlog</userinput></screen>

<para>The <filename>/var/run/utmp</filename> file records the users
that are currently logged in. The <filename>/var/log/wtmp</filename>
file records all logins and logouts. The
<filename>/var/log/lastlog</filename> file records when
each user last logged in. The <filename>/var/log/btmp</filename> file
records the bad login attempts.</para>

</sect1>