6.6. 创建基本文件和符号链接
/工具/bin/{bash,cat,chmod,dd,echo,ln,mkdir,pwd,rm,stty,touch} /bin
/工具/bin/{bash,cat,chmod,dd,echo,ln,mkdir,pwd,rm,stty,touch} /bin
/tools/bin/{环境、安装、perl、printf}
/tools/lib/libgcc_s.so{,.1}
/tools/lib/libstdc++.{a,so{,.6}}
/tools/bin/{环境、安装、perl、printf}
/tools/lib/libgcc_s.so{,.1}
/tools/lib/libstdc++.{a,so{,.6}}
/ usr / bin
/ usr / lib目录
/ usr / lib目录
/ usr / bin
/ usr / lib目录
/ usr / lib目录
一些程序使用硬连线路径指向尚不存在的程序。 为了满足这些程序的要求,在安装软件后,在本章的整个过程中创建一些符号链接,这些符号链接将被真实文件替换:
ln ln
ln
-sv
-sv
-sv
-sv
ln ln
ln
ln -sv bash /bin/sh
ln -sv bash /bin/sh
每个链接的目的:
/ bin / bash
更多来自Google的 打坏 脚本指定 / bin / bash.
/斌/猫
这个路径名被硬编码到 Glibc 的配置脚本中。
/bin/dd
通往的道路 dd 将被硬编码到 /usr/bin/libtool 效用。
/斌/回声
这是为了满足 Glibc 的测试套件中的一个测试,它期望 /斌/回声.
/usr/bin/环境
这个路径名被硬编码到一些包构建过程中。
/usr/bin/安装
通往的道路 安装 将被硬编码到 /usr/lib/bash/Makefile.inc 文件中。
/bin/ln
通往的道路 ln 将被硬编码到 /usr/lib/perl5/5.30.0/ /Config_heavy.pl 文件中。
/bin/密码
有 配置 脚本,特别是 Glibc 的,有这个路径名硬编码。
/bin/rm
通往的道路 rm 将被硬编码到 /usr/lib/perl5/5.30.0/ /Config_heavy.pl 文件中。
/斌/的stty
该路径名被硬编码到 Expect 中,因此需要 Binutils 和 GCC 测试套件才能通过。
/usr/bin/perl
许多 Perl 脚本将此路径硬编码到 perl的 程序。
/usr/lib/libgcc_s.so{,.1}
Glibc 需要这个来让 pthreads 库工作。
/usr/lib/libstdc++{,.6}
Glibc 的测试套件中的几个测试以及 GMP 中的 C++ 支持都需要这样做。
/ bin / sh的
许多 shell 脚本硬编码 / bin / sh的.
历史上,Linux 在文件中维护一个已挂载的文件系统列表 / etc / mtab. 现代内核在内部维护这个列表,并通过 / proc中 文件系统。 为了满足期望存在的公用事业 /etc/mtab, 创建以下符号链接:
ln -sv /proc/self/mounts /etc/mtab
ln -sv /proc/self/mounts /etc/mtab
为了用户 根 为了能够登录并识别名称“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/空:/斌/假
messagebus:x:18:18:D-Bus 消息守护程序用户:/var/run/dbus:/bin/false 无人:x:99:99:非特权用户:/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/空:/斌/假
messagebus:x:18:18:D-Bus 消息守护程序用户:/var/run/dbus:/bin/false 无人:x:99:99:非特权用户:/dev/null:/bin/false
EOF
实际密码 根 (这里使用的“x”只是一个占位符)稍后会设置。 创建 / etc / group 通过运行以下命令创建文件:
猫 > /etc/group 根:x:0: bin:x:1:守护进程 sys:x:2:
公里:x:3:
磁带:x:4:
tty:x:5: 守护进程:x:6: 软盘:x:7: 磁盘: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: 输入:x:24: 邮件:x:34: kvm:x:61: wheel:x:97: nogroup:x:99: users:x:999:
EOF
<<
“EOF”
猫 > /etc/group 根:x:0: bin:x:1:守护进程 sys:x:2:
公里:x:3:
磁带:x:4:
tty:x:5: 守护进程:x:6: 软盘:x:7: 磁盘: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: 输入:x:24: 邮件:x:34: kvm:x:61: wheel:x:97: nogroup:x:99: users:x:999:
EOF
创建的组不是任何标准的一部分——它们部分是由本章中 Udev 配置的要求决定的,部分是由许多现有 Linux 发行版采用的通用约定决定的。 此外,一些测试套件依赖于特定的用户或组。 Linux 标准库(LSB,可在 http://www. linuxbase.org) 只建议,除了组 根 组 ID (GID) 为 0 时,组 箱子 存在 GID 为 1 的情况。 系统管理员可以自由选择所有其他组名和 GID,因为编写良好的程序不依赖于 GID 编号,而是使用组名。
删除“我没有名字!” 提示,启动一个新的shell。 由于在第 5 章中安装了完整的 Glibc,并且 /etc/passwd 和 / etc / group 文件已创建,用户名和组名解析现在可以工作:
执行 /tools/bin/bash --login +h
执行 /tools/bin/bash --login +h
注意使用 +h 指示。 这告诉 打坏 不使用其内部路径散列。 如果没有这个指令, 打坏 会记住它已执行的二进制文件的路径。 为确保新编译的二进制文件安装后立即使用, +h 指令将用于本章的持续时间。
/var/log/{btmp,lastlog,失败日志,wtmp}
/var/log/{btmp,lastlog,失败日志,wtmp}
-v
-v
-v
-v
-v
-v
转码 664
600
转码 664
600
/var/log/loadlog
/var/log/loadlog
/var/日志/btmp
/var/log/loadlog
/var/log/loadlog
/var/日志/btmp
这款 登录, 盖蒂及 初始化 程序(和其他程序)使用许多日志文件来记录信息,例如谁登录到系统以及何时登录。 但是,如果这些程序不存在,它们将不会写入日志文件。 初始化日志文件并赋予它们适当的权限:
触摸 chgrp chmod
CHMOD
触摸 chgrp chmod
CHMOD
这款 /var/日志/wtmp 文件记录所有登录和注销。 这 /var/log/loadlog 文件记录每个用户上次登录的时间。 /var/日志/故障日志 文件记录失败的登录尝试。 这 /var/日志/btmp 文件记录了错误的登录尝试。
备注
这款 /运行/utmp 文件记录了当前登录的用户。这个文件是在引导脚本中动态创建的。
备注
这款 /运行/utmp 文件记录了当前登录的用户。这个文件是在引导脚本中动态创建的。