Linux From Scratch - Version 12.1-systemd
Chapter 7. Entering Chroot and Building Additional Temporary Tools
이전 위로 / 처음으로 다음
디렉터리 생성 Gettext-0.22.4

7.6. 필수 파일 및 심볼릭 링크 생성

과거에 Linux는 /etc/mtab 파일에 마운트된 파일 시스템 목록을 유지 관리했습니다. 최신 커널은 이 목록을 내부적으로 유지 관리하고 /proc 파일 시스템을 통해 사용자에게 보여집니다. /etc/mtab을 찾을 것으로 예상되는 유틸리티를 위해서 다음과 같이 심볼릭 링크를 생성합니다.

ln -sv /proc/self/mounts /etc/mtab

일부 테스트 스위트와 Perl의 구성 파일 중 하나에서 참조할 기본 /etc/hosts 파일을 만듭니다.

cat > /etc/hosts << EOF
127.0.0.1  localhost $(hostname)
::1        localhost
EOF

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:/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

생성된 그룹은 표준의 일부가 아니며, 부분적으로는 9장의 Udev 설정 요건에 따라, 부분적으로는 기존의 여러 Linux 배포판에서 사용하는 공통 규칙에 따라 결정된 그룹입니다. 또한 일부 테스트 스위트는 특정 사용자 또는 그룹에 의존합니다. Linux 표준 베이스(LSB 참조)에서는 그룹 ID(GID)가 0인 그룹 root 외에 GID가 1인 그룹 bin만 존재할 것을 권장합니다. GID 5는 tty 그룹에 널리 사용되며 숫자 5는 systmed의 devpts 파일시스템에도 사용됩니다. 다른 모든 그룹 이름과 GID는 시스템 관리자가 자유롭게 선택할 수 있는데, 잘 작성된 프로그램은 GID 번호에 의존하지 않고 그룹 이름을 사용하기 때문입니다.

ID 65534는 NFS용 커널과 매핑되지 않은 사용자 및 그룹(NFS 서버 또는 상위 사용자 네임스페이스에는 존재하지만 로컬 머신이나 별도의 네임스페이스에는 “존재하지 않는”)을 위한 별도의 사용자 네임스페이스에 사용됩니다. LFS에서는 이름 없는 ID를 피하기 위해 nobodynogroup을 할당합니다. 그러나 다른 배포판에서는 이 ID를 다르게 처리할 수 있으므로 이식 가능한 프로그램은 이러한 할당에 의존해서는 안 됩니다.

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, btmplastlog 파일은 타임스탬프에 32비트 정수를 사용하며 2038년 이후에는 근본적으로 중단될 예정입니다. 많은 패키지가 사용을 중단했으며 다른 패키지도 사용을 중단할 예정입니다. 아마도 더 이상 사용되지 않는 것으로 간주하는 것이 가장 좋습니다.