source: chapter07/createfiles.xml@ 193913e

s6-init
Last change on this file since 193913e was 193913e, checked in by Thomas Trepl (Moody) <thomas@…>, 21 months ago

First commit to add S6 as init system (like systemd)

  • Property mode set to 100644
File size: 8.1 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
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
[51a5442f]39 internally and expose it to the user via the <filename
[fcc02767]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
[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
[887b02bd]51127.0.0.1 localhost $(hostname)
[2013a74]52::1 localhost
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
[193913e]63<screen revision="sysv,s6"><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
[193913e]95<screen revision="sysv,s6"><userinput>cat &gt; /etc/group &lt;&lt; "EOF"
[fcc02767]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:
110usb:x:14:
111cdrom:x:15:
112adm:x:16:
113messagebus:x:18:
114input:x:24:
115mail:x:34:
116kvm:x:61:
[742c6324]117uuidd:x:80:
[fcc02767]118wheel:x:97:
[8469f02]119users:x:999:
120nogroup:x:65534:</literal>
[fcc02767]121EOF</userinput></screen>
122
123<screen revision="systemd"><userinput>cat &gt; /etc/group &lt;&lt; "EOF"
124<literal>root:x:0:
125bin:x:1:daemon
126sys:x:2:
127kmem:x:3:
128tape:x:4:
129tty:x:5:
130daemon:x:6:
131floppy:x:7:
132disk:x:8:
133lp:x:9:
134dialout:x:10:
135audio:x:11:
136video:x:12:
137utmp:x:13:
138usb:x:14:
139cdrom:x:15:
140adm:x:16:
141messagebus:x:18:
142systemd-journal:x:23:
143input:x:24:
144mail:x:34:
145kvm:x:61:
146systemd-journal-gateway:x:73:
147systemd-journal-remote:x:74:
148systemd-journal-upload:x:75:
149systemd-network:x:76:
150systemd-resolve:x:77:
151systemd-timesync:x:78:
152systemd-coredump:x:79:
[742c6324]153uuidd:x:80:
[8dd179b]154systemd-oom:x:81:
[fcc02767]155wheel:x:97:
[8469f02]156users:x:999:
157nogroup:x:65534:</literal>
[fcc02767]158EOF</userinput></screen>
159
160 <para>The created groups are not part of any standard&mdash;they are groups
[387a32af]161 decided on in part by the requirements of the Udev configuration in Chapter
162 9, and in part by common convention employed by a number of existing Linux
163 distributions. In addition, some test suites rely on specific users or
164 groups. The Linux Standard Base (LSB, available at <ulink
165 url="http://refspecs.linuxfoundation.org/lsb.shtml"/>) only recommends that,
166 besides the group <systemitem class="groupname">root</systemitem> with a
167 Group ID (GID) of 0, a group <systemitem class="groupname">bin</systemitem>
[7c862ea]168 with a GID of 1 be present. The GID of 5 is widely used for
169 <systemitem class="groupname">tty</systemitem> group, and the number 5 is
170 also used in <phrase revision="systemd">systemd</phrase>
[193913e]171 <phrase revision="sysv,s6"><filename>/etc/fstab</filename></phrase> for the
[7c862ea]172 <systemitem class="filesystem">devpts</systemitem> filesystem.
173 All other group names and GIDs can be chosen freely by the system
174 administrator since well-written programs do not depend on GID numbers,
175 but rather use the group's name.</para>
[fcc02767]176
[14de455]177 <para>The ID 65534 is used by the kernel for NFS and separate user
[0414633]178 namespaces for unmapped users and groups (those exist on the NFS server
179 or the parent user namespace, but <quote>do not exist</quote> on the local
180 machine or in the separate namespace). We assign
[14de455]181 <systemitem class="username">nobody</systemitem> and
182 <systemitem class="groupname">nogroup</systemitem> for it to avoid an
183 unnamed ID. But other distros may treat this ID differently, so any
184 portable program should not depend on this assignment.</para>
185
[fcc02767]186 <para>Some tests in <xref linkend="chapter-building-system"/> need a regular
187 user. We add this user here and delete this account at the end of that
188 chapter.</para>
189
[095286b]190<screen><userinput>echo "tester:x:101:101::/home/tester:/bin/bash" &gt;&gt; /etc/passwd
[fcc02767]191echo "tester:x:101:" &gt;&gt; /etc/group
192install -o tester -d /home/tester</userinput></screen>
193
194 <para>To remove the <quote>I have no name!</quote> prompt, start a new
195 shell. Since the
196 <filename>/etc/passwd</filename> and <filename>/etc/group</filename>
197 files have been created, user name and group name resolution will now
198 work:</para>
199
[490dc153]200<screen role="nodump"><userinput>exec /usr/bin/bash --login</userinput></screen>
[fcc02767]201
202 <para>The <command>login</command>, <command>agetty</command>, and
203 <command>init</command> programs (and others) use a number of log
204 files to record information such as who was logged into the system and
205 when. However, these programs will not write to the log files if they
206 do not already exist. Initialize the log files and give them
207 proper permissions:</para>
208
209<screen><userinput>touch /var/log/{btmp,lastlog,faillog,wtmp}
210chgrp -v utmp /var/log/lastlog
211chmod -v 664 /var/log/lastlog
212chmod -v 600 /var/log/btmp</userinput></screen>
213
214 <para>The <filename>/var/log/wtmp</filename> file records all logins and
215 logouts. The <filename>/var/log/lastlog</filename> file records when each
216 user last logged in. The <filename>/var/log/faillog</filename> file records
217 failed login attempts. The <filename>/var/log/btmp</filename> file records
218 the bad login attempts.</para>
219
220 <note><para>The <filename>/run/utmp</filename> file records the users that
221 are currently logged in. This file is created dynamically in the boot
222 scripts.</para></note>
223
224</sect1>
Note: See TracBrowser for help on using the repository browser.