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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
<title>
7.6. Создание основных файлов и символических ссылок
</title>
<link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
<link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
"text/css" media="print" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
<body class="lfs" id="lfs-12.2">
<div class="navheader">
<h4>
Линукс с нуля - Версия 12.2
</h4>
<h3>
Глава 7. Вход в окружение Chroot и создание дополнительных временных
инструментов
</h3>
<ul>
<li class="prev">
<a accesskey="p" href="creatingdirs.html" title=
"Создание каталогов">Пред.</a>
<p>
Создание каталогов
</p>
</li>
<li class="next">
<a accesskey="n" href="gettext.html" title=
"Gettext-0.22.5">След.</a>
<p>
Gettext-0.22.5
</p>
</li>
<li class="up">
<a accesskey="u" href="chapter07.html" title=
"Глава 7. Вход в окружение Chroot и создание дополнительных временных инструментов">
Наверх</a>
</li>
<li class="home">
<a accesskey="h" href="../index.html" title=
"Линукс с нуля - Версия 12.2">Начало</a>
</li>
</ul>
</div>
<h1 class="sect1">
<a id="ch-tools-createfiles" name="ch-tools-createfiles"></a>7.6.
Создание основных файлов и символических ссылок
</h1>
<div class="sect1" lang="ru" xml:lang="ru">
<p>
Исторически сложилось, что Linux хранит список примонтированных
файловых систем в файле <code class="filename">/etc/mtab</code>.
Современные ядра хранят этот список внутри себя и предоставляют его
пользователю через файловую систему <code class=
"filename">/proc</code>. Чтобы удовлетворять требованиям утилит,
которые ожидают наличия <code class="filename">/etc/mtab</code>,
создайте следующую символическую ссылку:
</p>
<pre class="userinput"><kbd class=
"command">ln -sv /proc/self/mounts /etc/mtab</kbd></pre>
<p>
Создайте файл <code class="filename">/etc/hosts</code>, на который
будут ссылаться некоторые наборы тестов, а также один из файлов
конфигурации Perl:
</p>
<pre class="userinput"><kbd class=
"command">cat > /etc/hosts << EOF
<code class="literal">127.0.0.1 localhost $(hostname)
::1 localhost</code>
EOF</kbd></pre>
<p>
Чтобы пользователь <code class="systemitem">root</code> мог войти в
систему и распознавался системой, в файлах <code class=
"filename">/etc/passwd</code> и <code class=
"filename">/etc/group</code> должны быть соответствующие записи.
</p>
<p>
Создайте файл <code class="filename">/etc/passwd</code> выполнив
следующую команду:
</p>
<pre class="userinput"><kbd class=
"command">cat > /etc/passwd << "EOF"
<code class="literal">root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/usr/bin/false
daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false
messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false
uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false
nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false</code>
EOF</kbd></pre>
<p>
Пароль пользователя <code class="systemitem">root</code> будет задан
позднее.
</p>
<p>
Создайте файл <code class="filename">/etc/group</code>, выполнив
следующую команду:
</p>
<pre class="userinput"><kbd class=
"command">cat > /etc/group << "EOF"
<code class="literal">root:x:0:
bin:x:1:daemon
sys:x:2:
kmem:x:3:
tape:x:4:
tty: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:
cdrom:x:15:
adm:x:16:
messagebus:x:18:
input:x:24:
mail:x:34:
kvm:x:61:
uuidd:x:80:
wheel:x:97:
users:x:999:
nogroup:x:65534:</code>
EOF</kbd></pre>
<p>
Созданные группы не являются частью какого-либо стандарта — это
группы, определяемые частично требованиями конфигурации Udev в главе
9, а частично общими соглашениями, используемыми в ряде существующих
дистрибутивов Linux. Кроме того, некоторые наборы тестов зависят от
конкретных пользователей или групп. Спецификация LSB (доступна по
адресу <a class="ulink" href=
"https://refspecs.linuxfoundation.org/lsb.shtml">https://refspecs.linuxfoundation.org/lsb.shtml</a>)
рекомендует, чтобы, помимо группы <code class=
"systemitem">root</code> с идентификатор (GID) 0 присутствовала
группа <code class="systemitem">bin</code> с GID 1. GID 5 широко
используется для группы <code class="systemitem">tty</code>, число 5
также используется в <span class="phrase"><code class=
"filename">/etc/fstab</code></span> для файловой системы <code class=
"systemitem">devpts</code>. Все остальные имена групп и GID могут
свободно выбираться системным администратором, так как хорошо
написанные программы не зависят от номеров GID, а чаще используют
название группы.
</p>
<p>
Идентификатор 65534 используется ядром для NFS и отдельных
пользовательских пространств имен для несопоставленных пользователей
и групп (они существуют на сервере NFS или родительском пространстве
имен пользователя, но <span class="quote">«<span class="quote">не
существует</span>»</span> на локальном компьютере или в отдельном
пространстве имен). Мы присваиваем <code class=
"systemitem">nobody</code> и <code class="systemitem">nogroup</code>
для того, чтобы избежать несопоставленных идентификаторов. Другие
дистрибутивы могут обрабатывать этот идентификатор по-разному,
поэтому любая переносимая программа не должна зависеть от этого
присвоения.
</p>
<p>
Для некоторых пакетов требуется локаль.
</p>
<pre class="userinput"><kbd class=
"command">localedef -i C -f UTF-8 C.UTF-8</kbd></pre>
<p>
Для некоторых тестов в <a class="xref" href=
"../chapter08/chapter08.html" title=
"Глава 8. Установка базового системного программного обеспечения">Глава 8</a>
требуется обычный пользователь. Добавим такого пользователя здесь и
удалим эту учетную запись в конце главы.
</p>
<pre class="userinput"><kbd class=
"command">echo "tester:x:101:101::/home/tester:/bin/bash" >> /etc/passwd
echo "tester:x:101:" >> /etc/group
install -o tester -d /home/tester</kbd></pre>
<p>
Чтобы удалить приглашение <span class="quote">«<span class="quote">I
have no name!</span>»</span>, запустите новую оболочку. Поскольку
файлы <code class="filename">/etc/passwd</code> и <code class=
"filename">/etc/group</code> были созданы, разрешение имен
пользователей и групп теперь будет работать:
</p>
<pre class="userinput"><kbd class=
"command">exec /usr/bin/bash --login</kbd></pre>
<p>
Программы <span class="command"><strong>login</strong></span>,
<span class="command"><strong>agetty</strong></span>, <span class=
"command"><strong>init</strong></span> (и другие) используют ряд
журналов для записи такой информации, как кто и когда входил в
систему. Однако эти программы не будут записывать данные в журналы,
если они еще не существуют. Инициализируйте журналы и предоставьте им
соответствующие разрешения:
</p>
<pre class="userinput"><kbd class=
"command">touch /var/log/{btmp,lastlog,faillog,wtmp}
chgrp -v utmp /var/log/lastlog
chmod -v 664 /var/log/lastlog
chmod -v 600 /var/log/btmp</kbd></pre>
<p>
В файл <code class="filename">/var/log/wtmp</code> записываются все
входы и выходы из системы. В файл <code class=
"filename">/var/log/lastlog</code> записывается время последнего
входа каждого пользователя в систему. В файл <code class=
"filename">/var/log/faillog</code> записываются неудачные попытки
входа в систему. В файл <code class="filename">/var/log/btmp</code>
также записываются неудачные попытки входа в систему.
</p>
<div class="admon note">
<img alt="[Примечание]" src="../images/note.png" />
<h3>
Примечание
</h3>
<p>
В файл <code class="filename">/run/utmp</code> записываются
пользователи, которые в данный момент вошли в систему. Он создаётся
динамически, в процессе выполнения сценариев загрузки.
</p>
</div>
<div class="admon note">
<img alt="[Примечание]" src="../images/note.png" />
<h3>
Примечание
</h3>
<p>
Файлы <span class="phrase"><code class=
"filename">utmp</code>,</span> <code class="filename">wtmp</code>,
<code class="filename">btmp</code> и <code class=
"filename">lastlog</code> используют для временных меток
32-разрядные целые числа, значения счетчика достигнет максимума (2
147 483 647) 19 января 2038 года ("проблема 2038 года"). Многие
пакеты перестали их использовать, другие же, собираются прекратить
их использование. Вероятно, лучше считать их устаревшими.
</p>
</div>
</div>
<div class="navfooter">
<ul>
<li class="prev">
<a accesskey="p" href="creatingdirs.html" title=
"Создание каталогов">Пред.</a>
<p>
Создание каталогов
</p>
</li>
<li class="next">
<a accesskey="n" href="gettext.html" title=
"Gettext-0.22.5">След.</a>
<p>
Gettext-0.22.5
</p>
</li>
<li class="up">
<a accesskey="u" href="chapter07.html" title=
"Глава 7. Вход в окружение Chroot и создание дополнительных временных инструментов">
Наверх</a>
</li>
<li class="home">
<a accesskey="h" href="../index.html" title=
"Линукс с нуля - Версия 12.2">Начало</a>
</li>
</ul>
</div>
</body>
</html>
|