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
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-pwdgroup">
<title>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 <emphasis>root</emphasis> to be able to login and for the
name <quote>root</quote> to be recognized, there need to 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 > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
EOF</userinput></screen>
<para>The actual password for <emphasis>root</emphasis> (the <quote>x</quote>
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 > /etc/group << "EOF"
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:
EOF</userinput></screen>
<para>The created groups aren't part of any standard -- they are some of the
groups that the Udev configuration we will be using in the next section
uses. The LSB (<ulink url="http://www.linuxbase.org/">Linux Standard
Base</ulink>) recommends only that, beside the group <quote>root</quote> with a
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 packages don't depend on GID numbers but use the group's name.
</para>
<para>To get rid of the <quote>I have no name!</quote> prompt, we will start a
new shell. Since we installed a full Glibc in
<xref linkend="chapter-temporary-tools"/>, and have just created the
<filename>/etc/passwd</filename> and <filename>/etc/group</filename> files,
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. Since we want to use our newly compiled binaries as soon as
they are installed, we turn off this function for the duration of this
chapter.</para>
<para>The <command>login</command>, <command>agetty</command> and
<command>init</command> programs (and some others) use a number of log
files to record information such as who was logged into the system and when.
These programs, however, won't write to the log files if they don't already
exist. Initialize the log files and give them their 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 for
each user when he or she last logged in. The <filename>/var/log/btmp</filename>
file records the bad login attempts.</para>
</sect1>
|