%general-entities; ]> Создание основных файлов и символических ссылок /etc/passwd /etc/group /var/run/utmp /var/log/btmp /var/log/lastlog /var/log/wtmp Некоторые программы используют жестко зашитые пути к другим программам, которые еще не установлены. Чтобы скорректировать этот недостаток, требуется создать ряд символических ссылок, которые    будут заменены реальными файлами в процессе установки программ в этой главе. ln -sv /tools/bin/{bash,cat,chmod,dd,echo,ln,mkdir,pwd,rm,stty,touch} /bin ln -sv /tools/bin/{env,install,perl,printf} /usr/bin ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib ln -sv /tools/lib/libstdc++.{a,so{,.6}} /usr/lib ln -sv bash /bin/sh Описание каждоый ссылки /bin/bash Большинство bash сценариев указывают на /bin/bash. /bin/cat Этот путь жестко закодирован в сценарии конфигурирования Glibc. /bin/dd Путь к dd будет жестко закодирован в утилите /usr/bin/libtool /bin/echo Используется для тестирования Glibc. Наборам тестов требуется /bin/echo. /usr/bin/env Этот путь жестко зашит в процедуры сборки некоторых пакетов /usr/bin/install Путь к install будет жестко закодирован в файле /usr/lib/bash/Makefile.inc /bin/ln Путь к ln будет жестко закодирован в файле /usr/lib/perl5/&perl-version;/<target-triplet>/Config_heavy.pl /bin/pwd Некоторые configure сценарии, в частности Glibc's, имеют жестко закодированный путь /bin/rm Путь к rm будет жестко закодирован в файле /usr/lib/perl5/&perl-version;/<target-triplet>/Config_heavy.pl file. /bin/stty Этот путь жестко закодирован в программе Expect, кроме того он необходим для выполнения набора тестов такими пакетами как Binutils и GCC. /usr/bin/perl Большинство Perl сценариев имеют жестко закодированный путь к программе perl /usr/lib/libgcc_s.so{,.1} Glibc требует эти ссылки для правильной работы библиотеки pthreads. /usr/lib/libstdc++{,.6} Эти ссылки необходимы для некоторых тестов в Glibc, а также          для поддержки C ++ в GMP. /bin/sh Многие сценарии оболочки имеют жестко закодированный путь к /bin/sh. Исторически, Linux поддерживает список примонтированных файловых систем в файле /etc/mtab. Современные ядра Linux имеют поддержку такого списка внутри себя, и предоставляют его через виртуальный каталог /proc. Для осуществления поддержки тех утилит и программ, которым нужны ссылка на /etc/mtab необходимо создать следующую символическую ссылку: ln -sv /proc/self/mounts /etc/mtab Для осуществления возможности авторизации пользователем root от имени 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:/bin/false daemon:x:6:6:Daemon User:/dev/null:/bin/false messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false nobody:x:99:99:Unprivileged User:/dev/null:/bin/false EOF cat > /etc/passwd << "EOF" root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/dev/null:/bin/false daemon:x:6:6:Daemon User:/dev/null:/bin/false messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false systemd-bus-proxy:x:72:72:systemd Bus Proxy:/:/bin/false systemd-journal-gateway:x:73:73:systemd Journal Gateway:/:/bin/false systemd-journal-remote:x:74:74:systemd Journal Remote:/:/bin/false systemd-journal-upload:x:75:75:systemd Journal Upload:/:/bin/false systemd-network:x:76:76:systemd Network Management:/:/bin/false systemd-resolve:x:77:77:systemd Resolver:/:/bin/false systemd-timesync:x:78:78:systemd Time Synchronization:/:/bin/false systemd-coredump:x:79:79:systemd Core Dumper:/:/bin/false nobody:x:99:99:Unprivileged User:/dev/null:/bin/false EOF Фактический пароль для root (символ x здесь используется только для заполнения) будет указан позднее. Необходимо создать файл/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: usb:x:14: cdrom:x:15: adm:x:16: messagebus:x:18: input:x:24: mail:x:34: kvm:x:61: wheel:x:97: nogroup:x:99: users:x:999: EOF 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: usb:x:14: cdrom:x:15: adm:x:16: messagebus:x:18: systemd-journal:x:23: input:x:24: mail:x:34: kvm:x:61: systemd-bus-proxy:x:72: 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: wheel:x:97: nogroup:x:99: users:x:999: EOF Созданные группы не являются частью какого-либо стандарта. Эти группы необходимы для конфигурации Udev в этой главе, и частично общей конвенцией используемой рядом существующих дистрибутивов Linux. Кроме того, некоторые наборы тестов зависят от конкретных пользователей и групп. Специфкация LSB (The Linux Standard Base, доступная по ссылке ) рекомендует, чтобы кроме группы root с идентификатором группы (GID), равным 0, присутствовала группа bin с GID, равным 1. Все другие имена групп и идентификаторы GID могут свободно выбираться системным администратором, поскольку хорошо написанные программы не зависят от номеров GID, а используют только имя группы. Для того, чтобы убрать приглашение коммандной строки I have no name!, необходимо запустить новую командную оболочку. Когда был установлен пакет Glibc в главе и файл /etc/group был создан, имя пользователя и группы, теперь будут работать: exec /tools/bin/bash --login +h Обратите внимание на использование аргумента +h. Он сообщает программе bash не использовать собственный механизм хеширования путей. Без этого аргумента, bash будет запоминать пути к двоичным файлам которые выполнялись. Для того, чтобы использовать новые скомплированные пакеты, по мере их установки, аргумент +h будет использован на протяжении всей главы. Программы login, agetty, и init (и другие) используют файлы с записями о событиях (log - файлов), например кто и когда авторизовался в системе. Однако, эти программы не смогут записывать файлы, до тех пор, пока их нет. Необходимо создать такие файлы, и назначить им правильные права: 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/faillog хранит записи о неудачных попытках входа в систему. Очень полезно при проверке угроз в системе безопасности, хакерских атаках, попыток взлома методом перебора. Прочитать содержимое можно с помощью команды faillog. Файл /var/log/btmp хранит записи неудачных попыток входа в систему. Просто так, на всякий случай, если вы еще не догадались где следует искать следы активности взломщиков. Файл /run/utmp хранит записи о тех пользователях, которые на данные момент авторизованы в системе. Он создётся динамически, в процессе выполнения сценариев загрузки.