Исторически сложилось, что Linux хранит список примонтированных
файловых систем в файле /etc/mtab
.
Современные ядра хранят этот список внутри себя и предоставляют его
пользователю через файловую систему /proc
. Чтобы удовлетворять требованиям утилит,
которые ожидают наличия /etc/mtab
,
создайте следующую символическую ссылку:
ln -sv /proc/self/mounts /etc/mtab
Создайте файл /etc/hosts
, на который
будут ссылаться некоторые наборы тестов, а также один из файлов
конфигурации Perl:
cat > /etc/hosts << EOF
127.0.0.1 localhost $(hostname)
::1 localhost
EOF
Чтобы пользователь root
мог войти в
систему и распознавался системой, в файлах /etc/passwd
и /etc/group
должны быть соответствующие записи.
Создайте файл /etc/passwd
выполнив
следующую команду:
cat > /etc/passwd << "EOF"
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
EOF
Пароль пользователя root
будет задан
позднее.
Создайте файл /etc/group
, выполнив
следующую команду:
cat > /etc/group << "EOF"
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:
EOF
Созданные группы не являются частью какого-либо стандарта — это
группы, определяемые частично требованиями конфигурации Udev в главе
9, а частично общими соглашениями, используемыми в ряде существующих
дистрибутивов Linux. Кроме того, некоторые наборы тестов зависят от
конкретных пользователей или групп. Спецификация LSB (доступна по
адресу https://refspecs.linuxfoundation.org/lsb.shtml)
рекомендует, чтобы, помимо группы root
с идентификатор (GID) 0 присутствовала
группа bin
с GID 1. GID 5 широко
используется для группы tty
, число 5
также используется в systemd для файловой
системы devpts
. Все остальные имена
групп и GID могут свободно выбираться системным администратором, так
как хорошо написанные программы не зависят от номеров GID, а чаще
используют название группы.
Идентификатор 65534 используется ядром для NFS и отдельных
пользовательских пространств имен для несопоставленных пользователей
и групп (они существуют на сервере NFS или родительском пространстве
имен пользователя, но «не
существует» на локальном компьютере или в отдельном
пространстве имен). Мы присваиваем nobody
и nogroup
для того, чтобы избежать несопоставленных идентификаторов. Другие
дистрибутивы могут обрабатывать этот идентификатор по-разному,
поэтому любая переносимая программа не должна зависеть от этого
присвоения.
Для некоторых пакетов требуется локаль.
localedef -i C -f UTF-8 C.UTF-8
Для некоторых тестов в Глава 8 требуется обычный пользователь. Добавим такого пользователя здесь и удалим эту учетную запись в конце главы.
echo "tester:x:101:101::/home/tester:/bin/bash" >> /etc/passwd echo "tester:x:101:" >> /etc/group install -o tester -d /home/tester
Чтобы удалить приглашение «I
have no name!», запустите новую оболочку. Поскольку
файлы /etc/passwd
и /etc/group
были созданы, разрешение имен
пользователей и групп теперь будет работать:
exec /usr/bin/bash --login
Программы login, agetty, init (и другие) используют ряд журналов для записи такой информации, как кто и когда входил в систему. Однако эти программы не будут записывать данные в журналы, если они еще не существуют. Инициализируйте журналы и предоставьте им соответствующие разрешения:
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
В файл /var/log/wtmp
записываются все
входы и выходы из системы. В файл /var/log/lastlog
записывается время последнего
входа каждого пользователя в систему. В файл /var/log/faillog
записываются неудачные попытки
входа в систему. В файл /var/log/btmp
также записываются неудачные попытки входа в систему.
Файлы wtmp
, btmp
и lastlog
используют для временных меток 32-разрядные целые числа, значения
счетчика достигнет максимума (2 147 483 647) 19 января 2038 года
("проблема 2038 года"). Многие пакеты перестали их использовать,
другие же, собираются прекратить их использование. Вероятно, лучше
считать их устаревшими.