source: chapter07/createfiles.xml@ 02776dff

10.1 10.1-rc1 11.0 11.0-rc1 11.0-rc2 11.0-rc3 11.1 11.1-rc1 11.2 11.2-rc1 11.3 11.3-rc1 12.0 12.0-rc1 12.1 12.1-rc1 arm bdubbs/gcc13 ml-11.0 multilib renodr/libudev-from-systemd s6-init trunk xry111/arm64 xry111/arm64-12.0 xry111/clfs-ng xry111/lfs-next xry111/loongarch xry111/loongarch-12.0 xry111/loongarch-12.1 xry111/mips64el xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since 02776dff was 02776dff, checked in by Xi Ruoyao <xry111@…>, 3 years ago

use /run for runtime state directories

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@12093 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

  • Property mode set to 100644
File size: 7.5 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../general.ent">
5 %general-entities;
6]>
7
8<sect1 id="ch-tools-createfiles">
9 <?dbhtml filename="createfiles.html"?>
10
11 <title>Creating Essential Files and Symlinks</title>
12
13 <indexterm zone="ch-tools-createfiles">
14 <primary sortas="e-/etc/passwd">/etc/passwd</primary>
15 </indexterm>
16
17 <indexterm zone="ch-tools-createfiles">
18 <primary sortas="e-/etc/group">/etc/group</primary>
19 </indexterm>
20
21 <indexterm zone="ch-tools-createfiles">
22 <primary sortas="e-/run/utmp">/run/utmp</primary>
23 </indexterm>
24
25 <indexterm zone="ch-tools-createfiles">
26 <primary sortas="e-/var/log/btmp">/var/log/btmp</primary>
27 </indexterm>
28
29 <indexterm zone="ch-tools-createfiles">
30 <primary sortas="e-/var/log/lastlog">/var/log/lastlog</primary>
31 </indexterm>
32
33 <indexterm zone="ch-tools-createfiles">
34 <primary sortas="e-/var/log/wtmp">/var/log/wtmp</primary>
35 </indexterm>
36
37 <para>Historically, Linux maintains a list of the mounted file systems in the
38 file <filename>/etc/mtab</filename>. Modern kernels maintain this list
39 internally and exposes it to the user via the <filename
40 class="directory">/proc</filename> filesystem. To satisfy utilities that
41 expect the presence of <filename>/etc/mtab</filename>, create the following
42 symbolic link:</para>
43
44<screen><userinput>ln -sv /proc/self/mounts /etc/mtab</userinput></screen>
45
46 <para>Create a basic <filename>/etc/hosts</filename> file to be
47 referenced in some test suites, and in one of Perl's configuration files
48 as well:</para>
49
50<screen><userinput>echo "127.0.0.1 localhost $(hostname)" &gt; /etc/hosts</userinput></screen>
51
52 <para>In order for user <systemitem class="username">root</systemitem> to be
53 able to login and for the name <quote>root</quote> to be recognized, there
54 must be relevant entries in the <filename>/etc/passwd</filename> and
55 <filename>/etc/group</filename> files.</para>
56
57 <para>Create the <filename>/etc/passwd</filename> file by running the following
58 command:</para>
59
60<screen revision="sysv"><userinput>cat &gt; /etc/passwd &lt;&lt; "EOF"
61<literal>root:x:0:0:root:/root:/bin/bash
62bin:x:1:1:bin:/dev/null:/bin/false
63daemon:x:6:6:Daemon User:/dev/null:/bin/false
64messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/bin/false
65nobody:x:99:99:Unprivileged User:/dev/null:/bin/false</literal>
66EOF</userinput></screen>
67
68<screen revision="systemd"><userinput>cat &gt; /etc/passwd &lt;&lt; "EOF"
69<literal>root:x:0:0:root:/root:/bin/bash
70bin:x:1:1:bin:/dev/null:/bin/false
71daemon:x:6:6:Daemon User:/dev/null:/bin/false
72messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/bin/false
73systemd-bus-proxy:x:72:72:systemd Bus Proxy:/:/bin/false
74systemd-journal-gateway:x:73:73:systemd Journal Gateway:/:/bin/false
75systemd-journal-remote:x:74:74:systemd Journal Remote:/:/bin/false
76systemd-journal-upload:x:75:75:systemd Journal Upload:/:/bin/false
77systemd-network:x:76:76:systemd Network Management:/:/bin/false
78systemd-resolve:x:77:77:systemd Resolver:/:/bin/false
79systemd-timesync:x:78:78:systemd Time Synchronization:/:/bin/false
80systemd-coredump:x:79:79:systemd Core Dumper:/:/bin/false
81nobody:x:99:99:Unprivileged User:/dev/null:/bin/false</literal>
82EOF</userinput></screen>
83
84 <para>The actual password for <systemitem class="username">root</systemitem>
85 will be set later.</para>
86
87 <para>Create the <filename>/etc/group</filename> file by running the following
88 command:</para>
89
90<screen revision="sysv"><userinput>cat &gt; /etc/group &lt;&lt; "EOF"
91<literal>root:x:0:
92bin:x:1:daemon
93sys:x:2:
94kmem:x:3:
95tape:x:4:
96tty:x:5:
97daemon:x:6:
98floppy:x:7:
99disk:x:8:
100lp:x:9:
101dialout:x:10:
102audio:x:11:
103video:x:12:
104utmp:x:13:
105usb:x:14:
106cdrom:x:15:
107adm:x:16:
108messagebus:x:18:
109input:x:24:
110mail:x:34:
111kvm:x:61:
112wheel:x:97:
113nogroup:x:99:
114users:x:999:</literal>
115EOF</userinput></screen>
116
117<screen revision="systemd"><userinput>cat &gt; /etc/group &lt;&lt; "EOF"
118<literal>root:x:0:
119bin:x:1:daemon
120sys:x:2:
121kmem:x:3:
122tape:x:4:
123tty:x:5:
124daemon:x:6:
125floppy:x:7:
126disk:x:8:
127lp:x:9:
128dialout:x:10:
129audio:x:11:
130video:x:12:
131utmp:x:13:
132usb:x:14:
133cdrom:x:15:
134adm:x:16:
135messagebus:x:18:
136systemd-journal:x:23:
137input:x:24:
138mail:x:34:
139kvm:x:61:
140systemd-bus-proxy:x:72:
141systemd-journal-gateway:x:73:
142systemd-journal-remote:x:74:
143systemd-journal-upload:x:75:
144systemd-network:x:76:
145systemd-resolve:x:77:
146systemd-timesync:x:78:
147systemd-coredump:x:79:
148wheel:x:97:
149nogroup:x:99:
150users:x:999:</literal>
151EOF</userinput></screen>
152
153 <para>The created groups are not part of any standard&mdash;they are groups
154 decided on in part by the requirements of the Udev configuration in Chapter
155 9, and in part by common convention employed by a number of existing Linux
156 distributions. In addition, some test suites rely on specific users or
157 groups. The Linux Standard Base (LSB, available at <ulink
158 url="http://refspecs.linuxfoundation.org/lsb.shtml"/>) only recommends that,
159 besides the group <systemitem class="groupname">root</systemitem> with a
160 Group ID (GID) of 0, a group <systemitem class="groupname">bin</systemitem>
161 with a GID of 1 be present. All other group names and GIDs can be chosen
162 freely by the system administrator since well-written programs do not depend
163 on GID numbers, but rather use the group's name.</para>
164
165 <para>Some tests in <xref linkend="chapter-building-system"/> need a regular
166 user. We add this user here and delete this account at the end of that
167 chapter.</para>
168
169<screen><userinput>echo "tester:x:$(ls -n $(tty) | cut -d" " -f3):101::/home/tester:/bin/bash" &gt;&gt; /etc/passwd
170echo "tester:x:101:" &gt;&gt; /etc/group
171install -o tester -d /home/tester</userinput></screen>
172
173 <para>To remove the <quote>I have no name!</quote> prompt, start a new
174 shell. Since the
175 <filename>/etc/passwd</filename> and <filename>/etc/group</filename>
176 files have been created, user name and group name resolution will now
177 work:</para>
178
179<screen role="nodump"><userinput>exec /bin/bash --login +h</userinput></screen>
180
181 <para>Note the use of the <parameter>+h</parameter> directive. This tells
182 <command>bash</command> not to use its internal path hashing. Without this
183 directive, <command>bash</command> would remember the paths to binaries it has
184 executed. To ensure the use of the newly compiled binaries as soon as they are
185 installed, the <parameter>+h</parameter> directive will be used for the duration
186 of this and the next chapter.</para>
187
188 <para>The <command>login</command>, <command>agetty</command>, and
189 <command>init</command> programs (and others) use a number of log
190 files to record information such as who was logged into the system and
191 when. However, these programs will not write to the log files if they
192 do not already exist. Initialize the log files and give them
193 proper permissions:</para>
194
195<screen><userinput>touch /var/log/{btmp,lastlog,faillog,wtmp}
196chgrp -v utmp /var/log/lastlog
197chmod -v 664 /var/log/lastlog
198chmod -v 600 /var/log/btmp</userinput></screen>
199
200 <para>The <filename>/var/log/wtmp</filename> file records all logins and
201 logouts. The <filename>/var/log/lastlog</filename> file records when each
202 user last logged in. The <filename>/var/log/faillog</filename> file records
203 failed login attempts. The <filename>/var/log/btmp</filename> file records
204 the bad login attempts.</para>
205
206 <note><para>The <filename>/run/utmp</filename> file records the users that
207 are currently logged in. This file is created dynamically in the boot
208 scripts.</para></note>
209
210</sect1>
Note: See TracBrowser for help on using the repository browser.