2022-05-31 21:17:44 +03:00
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
|
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
|
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
|
|
|
|
<!ENTITY % general-entities SYSTEM "../general.ent">
|
|
|
|
|
%general-entities;
|
|
|
|
|
]>
|
|
|
|
|
|
|
|
|
|
<sect1 id="ch-tools-createfiles">
|
|
|
|
|
<?dbhtml filename="createfiles.html"?>
|
|
|
|
|
|
|
|
|
|
<title>Создание основных файлов и символических ссылок</title>
|
|
|
|
|
|
|
|
|
|
<indexterm zone="ch-tools-createfiles">
|
|
|
|
|
<primary sortas="e-/etc/passwd">/etc/passwd</primary>
|
|
|
|
|
</indexterm>
|
|
|
|
|
|
|
|
|
|
<indexterm zone="ch-tools-createfiles">
|
|
|
|
|
<primary sortas="e-/etc/group">/etc/group</primary>
|
|
|
|
|
</indexterm>
|
|
|
|
|
|
|
|
|
|
<indexterm zone="ch-tools-createfiles">
|
|
|
|
|
<primary sortas="e-/run/utmp">/run/utmp</primary>
|
|
|
|
|
</indexterm>
|
|
|
|
|
|
|
|
|
|
<indexterm zone="ch-tools-createfiles">
|
|
|
|
|
<primary sortas="e-/var/log/btmp">/var/log/btmp</primary>
|
|
|
|
|
</indexterm>
|
|
|
|
|
|
|
|
|
|
<indexterm zone="ch-tools-createfiles">
|
|
|
|
|
<primary sortas="e-/var/log/lastlog">/var/log/lastlog</primary>
|
|
|
|
|
</indexterm>
|
|
|
|
|
|
|
|
|
|
<indexterm zone="ch-tools-createfiles">
|
|
|
|
|
<primary sortas="e-/var/log/wtmp">/var/log/wtmp</primary>
|
|
|
|
|
</indexterm>
|
|
|
|
|
|
|
|
|
|
<para>Исторически сложилось, что Linux хранит список примонтированных файловых
|
|
|
|
|
систем в файле <filename>/etc/mtab</filename>. Современные ядра хранят этот список
|
|
|
|
|
внутри себя и предоставляют его пользователю через файловую систему <filename
|
|
|
|
|
class="directory">/proc</filename>. Чтобы удовлетворять требованиям утилит, которые
|
2023-06-30 01:00:18 +03:00
|
|
|
|
ожидают наличия <filename>/etc/mtab</filename>, создайте следующую символическую ссылку:</para>
|
2022-05-31 21:17:44 +03:00
|
|
|
|
|
|
|
|
|
<screen><userinput>ln -sv /proc/self/mounts /etc/mtab</userinput></screen>
|
|
|
|
|
|
2023-06-13 15:01:26 +03:00
|
|
|
|
<para>Создайте файл <filename>/etc/hosts</filename>, на который будут ссылаться
|
2022-05-31 21:17:44 +03:00
|
|
|
|
некоторые наборы тестов, а также один из файлов конфигурации Perl:</para>
|
|
|
|
|
|
|
|
|
|
<screen><userinput>cat > /etc/hosts << EOF
|
2023-06-30 01:00:18 +03:00
|
|
|
|
<literal>127.0.0.1 localhost $(hostname)
|
|
|
|
|
::1 localhost</literal>
|
2022-05-31 21:17:44 +03:00
|
|
|
|
EOF</userinput></screen>
|
|
|
|
|
|
|
|
|
|
<para>Чтобы пользователь <systemitem class="username">root</systemitem> мог войти в
|
|
|
|
|
систему и распознавался системой, в файлах
|
|
|
|
|
<filename>/etc/passwd</filename> и <filename>/etc/group</filename> должны
|
|
|
|
|
быть соответствующие записи.</para>
|
|
|
|
|
|
|
|
|
|
<para>Создайте файл <filename>/etc/passwd</filename> выполнив следующую команду:</para>
|
|
|
|
|
|
|
|
|
|
<screen revision="sysv"><userinput>cat > /etc/passwd << "EOF"
|
|
|
|
|
<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</literal>
|
|
|
|
|
EOF</userinput></screen>
|
|
|
|
|
|
|
|
|
|
<screen revision="systemd"><userinput>cat > /etc/passwd << "EOF"
|
|
|
|
|
<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
|
|
|
|
|
systemd-journal-gateway:x:73:73:systemd Journal Gateway:/:/usr/bin/false
|
|
|
|
|
systemd-journal-remote:x:74:74:systemd Journal Remote:/:/usr/bin/false
|
|
|
|
|
systemd-journal-upload:x:75:75:systemd Journal Upload:/:/usr/bin/false
|
|
|
|
|
systemd-network:x:76:76:systemd Network Management:/:/usr/bin/false
|
|
|
|
|
systemd-resolve:x:77:77:systemd Resolver:/:/usr/bin/false
|
|
|
|
|
systemd-timesync:x:78:78:systemd Time Synchronization:/:/usr/bin/false
|
|
|
|
|
systemd-coredump:x:79:79:systemd Core Dumper:/:/usr/bin/false
|
|
|
|
|
uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false
|
|
|
|
|
systemd-oom:x:81:81:systemd Out Of Memory Daemon:/:/usr/bin/false
|
|
|
|
|
nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false</literal>
|
|
|
|
|
EOF</userinput></screen>
|
|
|
|
|
|
|
|
|
|
<para>Пароль пользователя <systemitem class="username">root</systemitem>
|
|
|
|
|
будет задан позднее.</para>
|
|
|
|
|
|
2023-08-02 23:14:31 +03:00
|
|
|
|
<para>Создайте файл <filename>/etc/group</filename>, выполнив следующую команду:</para>
|
2022-05-31 21:17:44 +03:00
|
|
|
|
|
|
|
|
|
<screen revision="sysv"><userinput>cat > /etc/group << "EOF"
|
|
|
|
|
<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:</literal>
|
|
|
|
|
EOF</userinput></screen>
|
|
|
|
|
|
|
|
|
|
<screen revision="systemd"><userinput>cat > /etc/group << "EOF"
|
|
|
|
|
<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:
|
|
|
|
|
systemd-journal:x:23:
|
|
|
|
|
input:x:24:
|
|
|
|
|
mail:x:34:
|
|
|
|
|
kvm:x:61:
|
|
|
|
|
systemd-journal-gateway:x:73:
|
|
|
|
|
systemd-journal-remote:x:74:
|
|
|
|
|
systemd-journal-upload:x:75:
|
|
|
|
|
systemd-network:x:76:
|
|
|
|
|
systemd-resolve:x:77:
|
|
|
|
|
systemd-timesync:x:78:
|
|
|
|
|
systemd-coredump:x:79:
|
|
|
|
|
uuidd:x:80:
|
|
|
|
|
systemd-oom:x:81:
|
|
|
|
|
wheel:x:97:
|
|
|
|
|
users:x:999:
|
|
|
|
|
nogroup:x:65534:</literal>
|
|
|
|
|
EOF</userinput></screen>
|
|
|
|
|
|
2023-06-30 01:00:18 +03:00
|
|
|
|
<para>Созданные группы не являются частью какого-либо стандарта — это группы,
|
|
|
|
|
определяемые частично требованиями конфигурации Udev в главе 9, а частично
|
|
|
|
|
общими соглашениями, используемыми в ряде существующих дистрибутивов Linux.
|
|
|
|
|
Кроме того, некоторые наборы тестов зависят от конкретных пользователей или
|
2023-08-02 23:14:31 +03:00
|
|
|
|
групп. Спецификация LSB (доступна по адресу <ulink
|
2023-06-14 13:34:58 +03:00
|
|
|
|
url="https://refspecs.linuxfoundation.org/lsb.shtml"/>) рекомендует, чтобы,
|
2022-05-31 21:17:44 +03:00
|
|
|
|
помимо группы <systemitem class="groupname">root</systemitem> с
|
|
|
|
|
идентификатор (GID) 0 присутствовала группа <systemitem class="groupname">bin</systemitem>
|
|
|
|
|
с GID 1. GID 5 широко используется для
|
|
|
|
|
группы <systemitem class="groupname">tty</systemitem>, число 5
|
|
|
|
|
также используется в <phrase revision="systemd">systemd</phrase>
|
2023-05-23 13:35:16 +03:00
|
|
|
|
<phrase revision="sysv"><filename>/etc/fstab</filename></phrase> для
|
2022-05-31 21:17:44 +03:00
|
|
|
|
файловой системы <systemitem class="filesystem">devpts</systemitem>.
|
|
|
|
|
Все остальные имена групп и GID могут свободно выбираться системным
|
|
|
|
|
администратором, так как хорошо написанные программы не зависят от номеров GID,
|
|
|
|
|
а чаще используют название группы.</para>
|
|
|
|
|
|
|
|
|
|
<para>Идентификатор 65534 используется ядром для NFS и отдельных пользовательских
|
|
|
|
|
пространств имен для несопоставленных пользователей и групп (они существуют на сервере NFS
|
|
|
|
|
или родительском пространстве имен пользователя, но <quote>не существует</quote> на локальном
|
|
|
|
|
компьютере или в отдельном пространстве имен). Мы присваиваем <systemitem class="username">nobody</systemitem>
|
|
|
|
|
и <systemitem class="groupname">nogroup</systemitem> для того, чтобы избежать
|
|
|
|
|
несопоставленных идентификаторов. Другие дистрибутивы могут обрабатывать этот
|
|
|
|
|
идентификатор по-разному, поэтому любая переносимая программа не должна зависеть
|
2023-06-30 01:00:18 +03:00
|
|
|
|
от этого присвоения.</para>
|
2022-05-31 21:17:44 +03:00
|
|
|
|
|
2023-05-26 00:07:20 +03:00
|
|
|
|
<para>Для некоторых тестов в <xref linkend="chapter-building-system"/> требуется
|
2022-05-31 21:17:44 +03:00
|
|
|
|
обычный пользователь. Добавим такого пользователя здесь и удалим эту учетную запись
|
|
|
|
|
в конце главы.</para>
|
|
|
|
|
|
|
|
|
|
<screen><userinput>echo "tester:x:101:101::/home/tester:/bin/bash" >> /etc/passwd
|
|
|
|
|
echo "tester:x:101:" >> /etc/group
|
|
|
|
|
install -o tester -d /home/tester</userinput></screen>
|
|
|
|
|
|
|
|
|
|
<para>Чтобы удалить приглашение <quote>I have no name!</quote>, запустите новую
|
|
|
|
|
оболочку. Поскольку файлы <filename>/etc/passwd</filename> и <filename>/etc/group</filename>
|
|
|
|
|
были созданы, разрешение имен пользователей и групп теперь будет работать:</para>
|
|
|
|
|
|
|
|
|
|
<screen role="nodump"><userinput>exec /usr/bin/bash --login</userinput></screen>
|
|
|
|
|
|
|
|
|
|
<para>Программы <command>login</command>, <command>agetty</command>,
|
|
|
|
|
<command>init</command> (и другие) используют ряд журналов для записи такой
|
|
|
|
|
информации, как кто и когда входил в систему. Однако эти программы не будут
|
|
|
|
|
записывать данные в журналы, если они еще не существуют. Инициализируйте
|
|
|
|
|
журналы и предоставьте им соответствующие разрешения:</para>
|
|
|
|
|
|
|
|
|
|
<screen><userinput>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</userinput></screen>
|
|
|
|
|
|
|
|
|
|
<para>В файл <filename>/var/log/wtmp</filename> записываются все входы и выходы
|
|
|
|
|
из системы. В файл <filename>/var/log/lastlog</filename> записывается время
|
|
|
|
|
последнего входа каждого пользователя в систему. В файл <filename>/var/log/faillog</filename>
|
|
|
|
|
записываются неудачные попытки входа в систему. В файл <filename>/var/log/btmp</filename>
|
2023-09-30 18:24:59 +03:00
|
|
|
|
также записываются неудачные попытки входа в систему.</para>
|
2022-05-31 21:17:44 +03:00
|
|
|
|
|
2023-09-30 18:24:59 +03:00
|
|
|
|
<!-- systemd no longer creates this -->
|
|
|
|
|
<note revision='sysv'><para>В файл <filename>/run/utmp</filename> записываются пользователи,
|
2022-05-31 21:17:44 +03:00
|
|
|
|
которые в данный момент вошли в систему. Он создаётся динамически, в процессе
|
|
|
|
|
выполнения сценариев загрузки.</para></note>
|
|
|
|
|
|
2023-09-30 18:24:59 +03:00
|
|
|
|
<!-- AFAIK they are not vital for system function, users requiring such
|
|
|
|
|
info should rely on systemd-logind or elogind or some custom PAM
|
|
|
|
|
module. Maybe we can stop to create them at all. -->
|
|
|
|
|
<note>
|
|
|
|
|
<para>
|
2023-10-04 20:28:58 +03:00
|
|
|
|
Файлы <phrase revision='sysv'><filename>utmp</filename>, </phrase>
|
2023-09-30 18:24:59 +03:00
|
|
|
|
<filename>wtmp</filename>, <filename>btmp</filename> и
|
|
|
|
|
<filename>lastlog</filename> используют для временных меток 32-разрядные целые числа,
|
|
|
|
|
значения счетчика достигнет максимума (2 147 483 647) 19 января 2038 года ("проблема
|
|
|
|
|
2038 года"). Многие пакеты перестали их использовать, другие же, собираются прекратить
|
2023-10-02 10:11:20 +03:00
|
|
|
|
их использование. Вероятно, лучше считать их устаревшими.
|
2023-09-30 18:24:59 +03:00
|
|
|
|
</para>
|
|
|
|
|
</note>
|
|
|
|
|
|
2022-05-31 21:17:44 +03:00
|
|
|
|
</sect1>
|