source: chapter07/createfiles.xml

trunk
Last change on this file was 7152faa, checked in by Pierre Labastie <pierre.labastie@…>, 3 months ago

Change all xml files to utf-8 encoding

  • Property mode set to 100644
File size: 8.8 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
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 maintained a list of the mounted file systems in the
38 file <filename>/etc/mtab</filename>. Modern kernels maintain this list
39 internally and expose it to the user via the <filename
40 class="directory">/proc</filename> filesystem. To satisfy utilities that
41 expect to find <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>cat &gt; /etc/hosts &lt;&lt; EOF
51<literal>127.0.0.1 localhost $(hostname)
52::1 localhost</literal>
53EOF</userinput></screen>
54
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"
64<literal>root:x:0:0:root:/root:/bin/bash
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
69nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false</literal>
70EOF</userinput></screen>
71
72<screen revision="systemd"><userinput>cat &gt; /etc/passwd &lt;&lt; "EOF"
73<literal>root:x:0:0:root:/root:/bin/bash
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
86nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false</literal>
87EOF</userinput></screen>
88
89 <para>The actual password for <systemitem class="username">root</systemitem>
90 will be set later.</para>
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:
116uuidd:x:80:
117wheel:x:97:
118users:x:999:
119nogroup:x:65534:</literal>
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:
151uuidd:x:80:
152systemd-oom:x:81:
153wheel:x:97:
154users:x:999:
155nogroup:x:65534:</literal>
156EOF</userinput></screen>
157
158 <para>The created groups are not part of any standard&mdash;they are groups
159 decided on in part by the requirements of the Udev configuration in Chapter
160 9, and in part by common conventions employed by a number of existing Linux
161 distributions. In addition, some test suites rely on specific users or
162 groups. The Linux Standard Base (LSB, available at <ulink
163 url="https://refspecs.linuxfoundation.org/lsb.shtml"/>) only recommends that,
164 besides the group <systemitem class="groupname">root</systemitem> with a
165 Group ID (GID) of 0, a group <systemitem class="groupname">bin</systemitem>
166 with a GID of 1 be present. The GID of 5 is widely used for the
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>
174
175 <para>The ID 65534 is used by the kernel for NFS and separate user
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
179 <systemitem class="username">nobody</systemitem> and
180 <systemitem class="groupname">nogroup</systemitem> to avoid an
181 unnamed ID. But other distros may treat this ID differently, so any
182 portable program should not depend on this assignment.</para>
183
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
188<screen><userinput>echo "tester:x:101:101::/home/tester:/bin/bash" &gt;&gt; /etc/passwd
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
198<screen role="nodump"><userinput>exec /usr/bin/bash --login</userinput></screen>
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
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
230 <filename>lastlog</filename> files use 32-bit integers for timestamps
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
233 them. It is probably best to consider them deprecated.
234 </para>
235 </note>
236
237</sect1>
Note: See TracBrowser for help on using the repository browser.