source: chapter07/createfiles.xml@ 6f090ad

12.1 12.1-rc1 multilib trunk xry111/arm64 xry111/clfs-ng xry111/loongarch xry111/loongarch-12.1 xry111/mips64el xry111/update-glibc
Last change on this file since 6f090ad was 0d8322d, checked in by Xi Ruoyao <xry111@…>, 9 months ago

createfiles: Remove doubled punctuation

  • Property mode set to 100644
File size: 8.8 KB
RevLine 
[fcc02767]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">
[02776dff]22 <primary sortas="e-/run/utmp">/run/utmp</primary>
[fcc02767]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
[ebecd08]37 <para>Historically, Linux maintained a list of the mounted file systems in the
[fcc02767]38 file <filename>/etc/mtab</filename>. Modern kernels maintain this list
[51a5442f]39 internally and expose it to the user via the <filename
[fcc02767]40 class="directory">/proc</filename> filesystem. To satisfy utilities that
[ebecd08]41 expect to find <filename>/etc/mtab</filename>, create the following
[fcc02767]42 symbolic link:</para>
43
44<screen><userinput>ln -sv /proc/self/mounts /etc/mtab</userinput></screen>
45
[6e18f2f]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
[2013a74]50<screen><userinput>cat &gt; /etc/hosts &lt;&lt; EOF
[2e9e5b4]51<literal>127.0.0.1 localhost $(hostname)
52::1 localhost</literal>
[2013a74]53EOF</userinput></screen>
[6e18f2f]54
[fcc02767]55 <para>In order for user <systemitem class="username">root</systemitem> to be
56 able to login and for the name <quote>root</quote> to be recognized, there
57 must be relevant entries in the <filename>/etc/passwd</filename> and
58 <filename>/etc/group</filename> files.</para>
59
60 <para>Create the <filename>/etc/passwd</filename> file by running the following
61 command:</para>
62
63<screen revision="sysv"><userinput>cat &gt; /etc/passwd &lt;&lt; "EOF"
[095286b]64<literal>root:x:0:0:root:/root:/bin/bash
[1f201845]65bin:x:1:1:bin:/dev/null:/usr/bin/false
66daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false
67messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false
68uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false
[813ab55]69nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false</literal>
[fcc02767]70EOF</userinput></screen>
71
72<screen revision="systemd"><userinput>cat &gt; /etc/passwd &lt;&lt; "EOF"
[095286b]73<literal>root:x:0:0:root:/root:/bin/bash
[1f201845]74bin:x:1:1:bin:/dev/null:/usr/bin/false
75daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false
76messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false
77systemd-journal-gateway:x:73:73:systemd Journal Gateway:/:/usr/bin/false
78systemd-journal-remote:x:74:74:systemd Journal Remote:/:/usr/bin/false
79systemd-journal-upload:x:75:75:systemd Journal Upload:/:/usr/bin/false
80systemd-network:x:76:76:systemd Network Management:/:/usr/bin/false
81systemd-resolve:x:77:77:systemd Resolver:/:/usr/bin/false
82systemd-timesync:x:78:78:systemd Time Synchronization:/:/usr/bin/false
83systemd-coredump:x:79:79:systemd Core Dumper:/:/usr/bin/false
84uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false
85systemd-oom:x:81:81:systemd Out Of Memory Daemon:/:/usr/bin/false
[813ab55]86nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false</literal>
[fcc02767]87EOF</userinput></screen>
88
89 <para>The actual password for <systemitem class="username">root</systemitem>
[387a32af]90 will be set later.</para>
[fcc02767]91
92 <para>Create the <filename>/etc/group</filename> file by running the following
93 command:</para>
94
95<screen revision="sysv"><userinput>cat &gt; /etc/group &lt;&lt; "EOF"
96<literal>root:x:0:
97bin:x:1:daemon
98sys:x:2:
99kmem:x:3:
100tape:x:4:
101tty:x:5:
102daemon:x:6:
103floppy:x:7:
104disk:x:8:
105lp:x:9:
106dialout:x:10:
107audio:x:11:
108video:x:12:
109utmp:x:13:
110cdrom:x:15:
111adm:x:16:
112messagebus:x:18:
113input:x:24:
114mail:x:34:
115kvm:x:61:
[742c6324]116uuidd:x:80:
[fcc02767]117wheel:x:97:
[8469f02]118users:x:999:
119nogroup:x:65534:</literal>
[fcc02767]120EOF</userinput></screen>
121
122<screen revision="systemd"><userinput>cat &gt; /etc/group &lt;&lt; "EOF"
123<literal>root:x:0:
124bin:x:1:daemon
125sys:x:2:
126kmem:x:3:
127tape:x:4:
128tty:x:5:
129daemon:x:6:
130floppy:x:7:
131disk:x:8:
132lp:x:9:
133dialout:x:10:
134audio:x:11:
135video:x:12:
136utmp:x:13:
137cdrom:x:15:
138adm:x:16:
139messagebus:x:18:
140systemd-journal:x:23:
141input:x:24:
142mail:x:34:
143kvm:x:61:
144systemd-journal-gateway:x:73:
145systemd-journal-remote:x:74:
146systemd-journal-upload:x:75:
147systemd-network:x:76:
148systemd-resolve:x:77:
149systemd-timesync:x:78:
150systemd-coredump:x:79:
[742c6324]151uuidd:x:80:
[8dd179b]152systemd-oom:x:81:
[fcc02767]153wheel:x:97:
[8469f02]154users:x:999:
155nogroup:x:65534:</literal>
[fcc02767]156EOF</userinput></screen>
157
158 <para>The created groups are not part of any standard&mdash;they are groups
[387a32af]159 decided on in part by the requirements of the Udev configuration in Chapter
[ebecd08]160 9, and in part by common conventions employed by a number of existing Linux
[387a32af]161 distributions. In addition, some test suites rely on specific users or
162 groups. The Linux Standard Base (LSB, available at <ulink
[fb66c4c]163 url="https://refspecs.linuxfoundation.org/lsb.shtml"/>) only recommends that,
[387a32af]164 besides the group <systemitem class="groupname">root</systemitem> with a
165 Group ID (GID) of 0, a group <systemitem class="groupname">bin</systemitem>
[ebecd08]166 with a GID of 1 be present. The GID of 5 is widely used for the
[7c862ea]167 <systemitem class="groupname">tty</systemitem> group, and the number 5 is
168 also used in <phrase revision="systemd">systemd</phrase>
169 <phrase revision="sysv"><filename>/etc/fstab</filename></phrase> for the
170 <systemitem class="filesystem">devpts</systemitem> filesystem.
171 All other group names and GIDs can be chosen freely by the system
172 administrator since well-written programs do not depend on GID numbers,
173 but rather use the group's name.</para>
[fcc02767]174
[14de455]175 <para>The ID 65534 is used by the kernel for NFS and separate user
[0414633]176 namespaces for unmapped users and groups (those exist on the NFS server
177 or the parent user namespace, but <quote>do not exist</quote> on the local
178 machine or in the separate namespace). We assign
[14de455]179 <systemitem class="username">nobody</systemitem> and
[ebecd08]180 <systemitem class="groupname">nogroup</systemitem> to avoid an
[14de455]181 unnamed ID. But other distros may treat this ID differently, so any
182 portable program should not depend on this assignment.</para>
183
[fcc02767]184 <para>Some tests in <xref linkend="chapter-building-system"/> need a regular
185 user. We add this user here and delete this account at the end of that
186 chapter.</para>
187
[095286b]188<screen><userinput>echo "tester:x:101:101::/home/tester:/bin/bash" &gt;&gt; /etc/passwd
[fcc02767]189echo "tester:x:101:" &gt;&gt; /etc/group
190install -o tester -d /home/tester</userinput></screen>
191
192 <para>To remove the <quote>I have no name!</quote> prompt, start a new
193 shell. Since the
194 <filename>/etc/passwd</filename> and <filename>/etc/group</filename>
195 files have been created, user name and group name resolution will now
196 work:</para>
197
[490dc153]198<screen role="nodump"><userinput>exec /usr/bin/bash --login</userinput></screen>
[fcc02767]199
200 <para>The <command>login</command>, <command>agetty</command>, and
201 <command>init</command> programs (and others) use a number of log
202 files to record information such as who was logged into the system and
203 when. However, these programs will not write to the log files if they
204 do not already exist. Initialize the log files and give them
205 proper permissions:</para>
206
207<screen><userinput>touch /var/log/{btmp,lastlog,faillog,wtmp}
208chgrp -v utmp /var/log/lastlog
209chmod -v 664 /var/log/lastlog
210chmod -v 600 /var/log/btmp</userinput></screen>
211
212 <para>The <filename>/var/log/wtmp</filename> file records all logins and
213 logouts. The <filename>/var/log/lastlog</filename> file records when each
214 user last logged in. The <filename>/var/log/faillog</filename> file records
215 failed login attempts. The <filename>/var/log/btmp</filename> file records
216 the bad login attempts.</para>
217
[6e11fe2]218 <!-- systemd no longer creates this -->
219 <note revision='sysv'><para>The <filename>/run/utmp</filename> file
220 records the users that are currently logged in. This file is created
221 dynamically in the boot scripts.</para></note>
222
223 <!-- AFAIK they are not vital for system function, users requiring such
224 info should rely on systemd-logind or elogind or some custom PAM
225 module. Maybe we can stop to create them at all. -->
226 <note>
227 <para>
228 The <phrase revision='sysv'><filename>utmp</filename>,
229 </phrase><filename>wtmp</filename>, <filename>btmp</filename>, and
[25b3c0f]230 <filename>lastlog</filename> files use 32-bit integers for timestamps
[6e11fe2]231 and they'll be fundamentally broken after year 2038. Many packages
232 have stopped using them and other packages are going to stop using
[0d8322d]233 them. It is probably best to consider them deprecated.
[6e11fe2]234 </para>
235 </note>
[fcc02767]236
237</sect1>
Note: See TracBrowser for help on using the repository browser.