7.6. Opprette essensielle filer og symbolkoblinger

Historisk sett har Linux en liste over de monterte filsystemene i filen /etc/mtab. Moderne kjerner opprettholder denne listen internt og eksponerer det for brukeren via /proc filsystemet. For å tilfredsstille verktøy som forventer å finne /etc/mtab, opprett følgende symbolske lenke:

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

Lag en grunnleggende /etc/hosts fil som blir referert til i noen testsuiter, og også i en av Perls konfigurasjonsfiler :

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

For at bruker root skal kunne logge inn og for navnet «root» å bli gjenkjent, det må være relevante oppføringer i /etc/passwd og /etc/group filene.

Opprett /etc/passwd filen ved å kjøre følgende kommando:

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

Selve passordet for root settes senere.

Opprett /etc/group filen ved å kjøre følgende kommando:

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

De opprettede gruppene er ikke en del av noen standard—de er grupper delvis bestemt av kravene til Udev konfigurasjonen i kapittel 9, og delvis etter felles konvensjon brukt av en rekke eksisterende Linux distribusjoner. I tillegg er noen testsuiter avhengige av spesifikke brukere eller grupper. Linux Standard Base (LSB, tilgjengelig på https://refspecs.linuxfoundation.org/lsb.shtml) anbefaler bare at, foruten gruppen root med en Gruppe ID (GID) på 0, en gruppe bin med en GID på 1 å være tilstede. GID på 5 er mye brukt for tty gruppen, og tallet 5 er også brukt i systemd for devpts filsystemet. Alle andre gruppenavn og GID-er kan velges fritt av systemets administrator siden velskrevne programmer ikke er avhengige av GID-nummer, men bruk heller gruppens navn.

ID 65534 brukes av kjernen for NFS og separat brukernavneområder for ikke-tilordnede brukere (de finnes på NFS serveren eller den overordnede brukernavneområde, men «finnes ikke» på den lokale maskinen eller i det separate navnerommet). Vi tildeler nobody og nogroup for å unngå en ikke navngitt ID. Men andre distroer kan behandle denne IDen annerledes, så alle flyttbare programmer bør ikke være avhengig av denne tildelingen.

Noen tester i Kapittel 8 trenger en vanlig bruker. Vi legger til denne brukeren her og sletter denne kontoen på slutten av det kapittelet.

echo "tester:x:101:101::/home/tester:/bin/bash" >> /etc/passwd
echo "tester:x:101:" >> /etc/group
install -o tester -d /home/tester

For å fjerne «I have no name!» ledetekst, start et nytt skall. Siden /etc/passwd og /etc/group filer har blitt opprettet, vil brukernavn og gruppenavnoppløsning nå virke:

exec /usr/bin/bash --login

login, agetty, og init programmene (og andre) bruker en rekke loggfiler for å registrere informasjon som hvem som var logget inn på systemet og når. Disse programmene vil imidlertid ikke skrive til loggfilene hvis de ikke allerede eksisterer. Initialiser loggfilene og gi dem riktige tillatelser:

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 filen registrerer alle pålogginger og utlogginger. /var/log/lastlog filen registrerer når hver bruker sist logget på /var/log/faillog filen registrerer mislykkede påloggingsforsøk. /var/log/btmp filen registrerer de dårlige påloggingsforsøkene.

[Notat]

Notat

wtmp, btmp, og lastlog filene bruker 32-biters heltall for tidsstempler og de vil være fundamentalt ødelagte etter år 2038. Mange pakker har sluttet å bruke dem og andre pakker kommer til å slutte å bruke dem. Det er sannsynligvis best å betrakte dem som avviklet.