Files
lpic-sim/simulator/data/lpic1_102/questions_107_set2.json
T
2026-10-30 15:40:37 +01:00

338 lines
21 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"$schema": "../schema/questions.schema.json",
"format": "lpic-sim-questions",
"meta": {
"file": "questions_107_set2.json",
"brief": "Zweiter Fragensatz zu Topic 107 Administrative Aufgaben (LPIC-1 102-500, Objectives 5.0)",
"author": "Björn Runden <br@runden.de>",
"owner": "Björn Runden <br@runden.de>",
"assist": "KI-unterstützt (Claude Opus 5.5), geprüft von Björn Runden <br@runden.de>",
"version": "0.1.0 (30.10.2026)"
},
"exam": "lpic1-102",
"questions": [
{
"id": "107.1-009",
"objective": "107.1",
"type": "single",
"difficulty": 1,
"question": "Welcher Eintrag in `/etc/group` ist korrekt aufgebaut?",
"options": [
{ "id": "a", "text": "`docker:x:998:anna,bob`", "correct": true, "explanation": "Name, Passwortplatzhalter, GID, Mitglieder durch Komma getrennt." },
{ "id": "b", "text": "`docker:998:anna,bob`", "correct": false, "explanation": "Es fehlt das Passwortfeld; die Datei hat vier Felder." },
{ "id": "c", "text": "`docker:x:998:anna bob`", "correct": false, "explanation": "Mitglieder werden durch Kommas getrennt, nicht durch Leerzeichen." },
{ "id": "d", "text": "`998:docker:x:anna,bob`", "correct": false, "explanation": "Der Gruppenname steht im ersten Feld, die GID im dritten." },
{ "id": "e", "text": "`docker:x:anna,bob:998`", "correct": false, "explanation": "Die GID steht vor der Mitgliederliste." }
],
"explanation": "In der Mitgliederliste stehen nur Zusatzmitglieder; wer die Gruppe als primäre Gruppe hat, steht über die GID in `/etc/passwd`.",
"references": ["man 5 group"]
},
{
"id": "107.1-010",
"objective": "107.1",
"type": "fill",
"difficulty": 1,
"question": "Welcher Befehl (mit Argument) zeigt UID, primäre GID und alle Gruppen des Benutzers `anna`?",
"answers": ["id anna"],
"explanation": "Ausgabe z. B. `uid=1001(anna) gid=1001(anna) groups=1001(anna),998(docker)`. `groups anna` zeigt nur die Gruppennamen.",
"references": ["man 1 id"]
},
{
"id": "107.1-011",
"objective": "107.1",
"type": "single",
"difficulty": 1,
"question": "Wie legt man die Gruppe `projekt` mit der GID 1500 an?",
"options": [
{ "id": "a", "text": "`groupadd -g 1500 projekt`", "correct": true, "explanation": "`-g` legt die GID fest." },
{ "id": "b", "text": "`groupadd projekt 1500`", "correct": false, "explanation": "`groupadd` erwartet nur den Gruppennamen als Argument." },
{ "id": "c", "text": "`groupmod -g 1500 projekt`", "correct": false, "explanation": "`groupmod` ändert eine **bestehende** Gruppe." },
{ "id": "d", "text": "`newgrp -g 1500 projekt`", "correct": false, "explanation": "`newgrp` wechselt die aktive Gruppe der Shell." },
{ "id": "e", "text": "`useradd -g 1500 projekt`", "correct": false, "explanation": "Legt einen **Benutzer** `projekt` mit primärer Gruppe 1500 an." }
],
"explanation": "Systemgruppen: `groupadd -r`. Umbenennen: `groupmod -n neu alt`.",
"references": ["man 8 groupadd"]
},
{
"id": "107.1-012",
"objective": "107.1",
"type": "single",
"difficulty": 2,
"question": "Das Konto `backup` soll für Dienste und Dateibesitz erhalten bleiben, aber **keine interaktive Anmeldung** mehr erlauben. Was ist geeignet?",
"options": [
{ "id": "a", "text": "`usermod -s /usr/sbin/nologin backup`", "correct": true, "explanation": "Bei der Anmeldung startet `nologin`, gibt eine Meldung aus und beendet sich." },
{ "id": "b", "text": "`userdel backup`", "correct": false, "explanation": "Löscht das Konto; Dateien gehören danach einer „verwaisten“ UID." },
{ "id": "c", "text": "`passwd -d backup`", "correct": false, "explanation": "Löscht das Passwort – je nach Konfiguration wird die Anmeldung damit sogar einfacher." },
{ "id": "d", "text": "`usermod -G nologin backup`", "correct": false, "explanation": "Setzt die Zusatzgruppe `nologin`, die es normalerweise nicht gibt." },
{ "id": "e", "text": "`chage -M 0 backup`", "correct": false, "explanation": "Erzwingt nur eine sofortige Passwortänderung." }
],
"explanation": "Systemkonten erhalten typischerweise `/usr/sbin/nologin` oder `/bin/false` als Shell.",
"references": ["man 8 nologin", "man 8 usermod"]
},
{
"id": "107.1-013",
"objective": "107.1",
"type": "multi",
"difficulty": 1,
"question": "Mit welchen Befehlen ändert man die Login-Shell eines Benutzers?",
"options": [
{ "id": "a", "text": "`chsh -s /bin/zsh anna`", "correct": true, "explanation": "`chsh` ändert die Shell; normale Benutzer dürfen ihre eigene ändern (auf Shells aus `/etc/shells`)." },
{ "id": "b", "text": "`usermod -s /bin/zsh anna`", "correct": true, "explanation": "`usermod -s` setzt das siebte Feld in `/etc/passwd` (nur root)." },
{ "id": "c", "text": "`chfn -s /bin/zsh anna`", "correct": false, "explanation": "`chfn` ändert die GECOS-Angaben (Name, Telefon)." },
{ "id": "d", "text": "`usermod -c /bin/zsh anna`", "correct": false, "explanation": "`-c` setzt den Kommentar (GECOS)." },
{ "id": "e", "text": "`chage -s /bin/zsh anna`", "correct": false, "explanation": "`chage` verwaltet die Passwort-Alterung." }
],
"explanation": "`/etc/shells` listet die gültigen Login-Shells.",
"references": ["man 1 chsh"]
},
{
"id": "107.1-014",
"objective": "107.1",
"type": "single",
"difficulty": 2,
"question": "In welcher Datei stehen u. a. die UID-Bereiche für normale Benutzer (`UID_MIN`, `UID_MAX`) und Standardwerte der Passwort-Alterung (`PASS_MAX_DAYS`)?",
"options": [
{ "id": "a", "text": "`/etc/login.defs`", "correct": true, "explanation": "Sie gilt für `useradd`, `groupadd`, `passwd` und weitere Shadow-Werkzeuge." },
{ "id": "b", "text": "`/etc/default/useradd`", "correct": false, "explanation": "Enthält Vorgaben wie `SHELL`, `HOME`, `SKEL`, aber keine UID-Bereiche." },
{ "id": "c", "text": "`/etc/security/limits.conf`", "correct": false, "explanation": "Legt Ressourcenlimits pro Benutzer fest." },
{ "id": "d", "text": "`/etc/shells`", "correct": false, "explanation": "Listet erlaubte Login-Shells." },
{ "id": "e", "text": "`/etc/pam.d/passwd`", "correct": false, "explanation": "PAM-Konfiguration für das Programm `passwd`." }
],
"explanation": "Die Alterungswerte aus `login.defs` gelten nur für neu angelegte Konten; bestehende ändert man mit `chage`.",
"references": ["man 5 login.defs"]
},
{
"id": "107.1-015",
"objective": "107.1",
"type": "fill",
"difficulty": 1,
"question": "Welcher Befehl (mit Option und Benutzername) zeigt die Passwort-Alterungsdaten des Benutzers `anna` an?",
"answers": ["chage -l anna", "chage --list anna"],
"explanation": "Zeigt letzte Änderung, Ablauf von Passwort und Konto sowie Mindest-/Höchstdauer und Warnzeit.",
"references": ["man 1 chage"]
},
{
"id": "107.1-016",
"objective": "107.1",
"type": "single",
"difficulty": 1,
"question": "Welche Datei enthält Gruppenpasswörter und die Gruppenadministratoren?",
"options": [
{ "id": "a", "text": "`/etc/gshadow`", "correct": true, "explanation": "Felder: Name, Passwort, Administratoren, Mitglieder; nur für root lesbar." },
{ "id": "b", "text": "`/etc/group`", "correct": false, "explanation": "Enthält GID und Mitglieder, im Passwortfeld nur `x`." },
{ "id": "c", "text": "`/etc/shadow`", "correct": false, "explanation": "Enthält die Passwörter der **Benutzer**." },
{ "id": "d", "text": "`/etc/sudoers`", "correct": false, "explanation": "Regelt sudo-Berechtigungen." },
{ "id": "e", "text": "`/etc/groups`", "correct": false, "explanation": "Diese Datei gibt es nicht." }
],
"explanation": "Gruppenadministratoren verwalten Mitglieder mit `gpasswd -a/-d`. Gruppenpasswörter werden kaum noch genutzt.",
"references": ["man 5 gshadow", "man 1 gpasswd"]
},
{
"id": "107.1-017",
"objective": "107.1",
"type": "multi",
"difficulty": 2,
"question": "Was geschieht bei `userdel anna` **ohne** weitere Optionen?",
"options": [
{ "id": "a", "text": "Die Einträge von `anna` in `/etc/passwd` und `/etc/shadow` werden entfernt.", "correct": true, "explanation": "Das Konto selbst wird gelöscht." },
{ "id": "b", "text": "Das Home-Verzeichnis `/home/anna` bleibt erhalten.", "correct": true, "explanation": "Erst `-r` entfernt Home-Verzeichnis und Mail-Spool." },
{ "id": "c", "text": "Alle Dateien von `anna` im gesamten System werden gelöscht.", "correct": false, "explanation": "Dateien außerhalb des Homes bleiben immer erhalten – mit `find / -nouser` findet man sie." },
{ "id": "d", "text": "Laufende Prozesse von `anna` werden automatisch beendet.", "correct": false, "explanation": "`userdel` verweigert das Löschen, solange der Benutzer angemeldet ist (`-f` erzwingt)." },
{ "id": "e", "text": "Die gleichnamige private Gruppe bleibt in jedem Fall bestehen.", "correct": false, "explanation": "Mit `USERGROUPS_ENAB yes` wird sie mitgelöscht, sofern sie nicht anderweitig genutzt wird." }
],
"explanation": "Vor dem Löschen eines Kontos Dateien sichern oder neu zuordnen; verwaiste Dateien zeigen `find / -nouser -o -nogroup`.",
"references": ["man 8 userdel"]
},
{
"id": "107.2-007",
"objective": "107.2",
"type": "single",
"difficulty": 1,
"question": "Welche crontab-Kurzschreibweise führt einen Befehl einmal nach **jedem Systemstart** aus?",
"options": [
{ "id": "a", "text": "`@reboot`", "correct": true, "explanation": "Läuft einmal, wenn der cron-Daemon startet." },
{ "id": "b", "text": "`@daily`", "correct": false, "explanation": "Entspricht `0 0 * * *` (täglich um Mitternacht)." },
{ "id": "c", "text": "`@boot`", "correct": false, "explanation": "Diese Kurzschreibweise gibt es nicht." },
{ "id": "d", "text": "`@startup`", "correct": false, "explanation": "Diese Kurzschreibweise gibt es nicht." },
{ "id": "e", "text": "`0 0 * * 0`", "correct": false, "explanation": "Sonntags um Mitternacht (`@weekly`)." }
],
"explanation": "Kurzschreibweisen: `@reboot`, `@yearly`, `@monthly`, `@weekly`, `@daily`, `@hourly`.",
"references": ["man 5 crontab"]
},
{
"id": "107.2-008",
"objective": "107.2",
"type": "fill",
"difficulty": 2,
"question": "Geben Sie die fünf crontab-Zeitfelder ein, mit denen ein Job **alle 15 Minuten** läuft.",
"answers": ["*/15 * * * *", "0,15,30,45 * * * *", "0-59/15 * * * *"],
"explanation": "`*/15` im Minutenfeld bedeutet „jede 15. Minute“ (0, 15, 30, 45).",
"references": ["man 5 crontab"]
},
{
"id": "107.2-009",
"objective": "107.2",
"type": "single",
"difficulty": 1,
"question": "Wie löscht man den anstehenden at-Auftrag mit der Nummer 7?",
"options": [
{ "id": "a", "text": "`atrm 7`", "correct": true, "explanation": "`atrm` entfernt at-Aufträge anhand der Nummer aus `atq`." },
{ "id": "b", "text": "`atq 7`", "correct": false, "explanation": "`atq` listet nur die Warteschlange." },
{ "id": "c", "text": "`crontab -r 7`", "correct": false, "explanation": "`crontab -r` löscht die **gesamte** crontab des Benutzers – Vorsicht!" },
{ "id": "d", "text": "`kill 7`", "correct": false, "explanation": "Sendet ein Signal an den Prozess mit PID 7." },
{ "id": "e", "text": "`at -l 7`", "correct": false, "explanation": "`at -l` entspricht `atq` und listet Aufträge." }
],
"explanation": "`at -c 7` zeigt den Inhalt des Auftrags. `at -d 7` ist gleichbedeutend mit `atrm 7`.",
"references": ["man 1 at"]
},
{
"id": "107.2-010",
"objective": "107.2",
"type": "single",
"difficulty": 2,
"question": "Ein systemd-Timer soll eine Ausführung **nachholen**, die verpasst wurde, weil der Rechner ausgeschaltet war. Welche Einstellung im `[Timer]`-Abschnitt sorgt dafür?",
"options": [
{ "id": "a", "text": "`Persistent=true`", "correct": true, "explanation": "Der Zeitpunkt der letzten Ausführung wird gespeichert; Verpasstes läuft nach dem Start." },
{ "id": "b", "text": "`OnBootSec=0`", "correct": false, "explanation": "Startet nach jedem Boot, unabhängig vom Kalender." },
{ "id": "c", "text": "`AccuracySec=1s`", "correct": false, "explanation": "Legt nur die Genauigkeit des Auslösezeitpunkts fest." },
{ "id": "d", "text": "`WakeSystem=true`", "correct": false, "explanation": "Weckt das System aus dem Ruhezustand; ein ausgeschaltetes System hilft das nicht." },
{ "id": "e", "text": "`RemainAfterElapse=true`", "correct": false, "explanation": "Lässt den Timer nach Ablauf geladen; mit Nachholen hat das nichts zu tun." }
],
"explanation": "Klassisch erfüllt `anacron` diese Aufgabe für tägliche/wöchentliche cron-Jobs.",
"references": ["man 5 systemd.timer"]
},
{
"id": "107.2-011",
"objective": "107.2",
"type": "single",
"difficulty": 2,
"question": "Welcher Befehl führt `/usr/local/bin/sync.sh` **einmalig in 30 Minuten** als transiente systemd-Unit aus?",
"options": [
{ "id": "a", "text": "`systemd-run --on-active=30m /usr/local/bin/sync.sh`", "correct": true, "explanation": "`systemd-run` erzeugt Timer und Service vorübergehend; `--on-active` zählt ab jetzt." },
{ "id": "b", "text": "`systemd-run --on-calendar=30m /usr/local/bin/sync.sh`", "correct": false, "explanation": "`--on-calendar` erwartet einen Kalenderausdruck wie `*-*-* 02:00`, keine Zeitspanne." },
{ "id": "c", "text": "`systemctl start --in 30m /usr/local/bin/sync.sh`", "correct": false, "explanation": "`systemctl start` kennt keine Verzögerung und startet nur Units." },
{ "id": "d", "text": "`at --systemd 30m /usr/local/bin/sync.sh`", "correct": false, "explanation": "`at` hat keine solche Option; richtig wäre `echo /usr/local/bin/sync.sh | at now + 30 minutes`." },
{ "id": "e", "text": "`timedatectl run 30m /usr/local/bin/sync.sh`", "correct": false, "explanation": "`timedatectl` verwaltet Uhrzeit und Zeitzone." }
],
"explanation": "Transiente Timer erscheinen in `systemctl list-timers` und verschwinden nach Ausführung.",
"references": ["man 1 systemd-run"]
},
{
"id": "107.2-012",
"objective": "107.2",
"type": "multi",
"difficulty": 2,
"question": "Welche Werte sind gültige `OnCalendar=`-Angaben in einer systemd-Timer-Unit?",
"options": [
{ "id": "a", "text": "`daily`", "correct": true, "explanation": "Kurzform für `*-*-* 00:00:00`." },
{ "id": "b", "text": "`Mon *-*-* 02:30:00`", "correct": true, "explanation": "Wochentag, Datum (Jahr-Monat-Tag), Uhrzeit." },
{ "id": "c", "text": "`*/15 * * * *`", "correct": false, "explanation": "Das ist crontab-Syntax; systemd schreibt z. B. `*:0/15`." },
{ "id": "d", "text": "`every 5 minutes`", "correct": false, "explanation": "Freitext versteht systemd nicht." },
{ "id": "e", "text": "`30 2 * * 1`", "correct": false, "explanation": "crontab-Syntax, nicht systemd." }
],
"explanation": "Prüfen und Vorschau: `systemd-analyze calendar \"Mon *-*-* 02:30:00\"`.",
"references": ["man 7 systemd.time"]
},
{
"id": "107.2-013",
"objective": "107.2",
"type": "fill",
"difficulty": 2,
"question": "Mit welchem `crontab`-Aufruf zeigt root die crontab des Benutzers `bob` an?",
"answers": ["crontab -l -u bob", "crontab -u bob -l"],
"explanation": "`-u` wählt den Benutzer; mit `-e` bearbeitet root fremde crontabs.",
"references": ["man 1 crontab"]
},
{
"id": "107.3-005",
"objective": "107.3",
"type": "single",
"difficulty": 1,
"question": "Welcher Befehl listet alle auf dem System verfügbaren (erzeugten) Locales auf?",
"options": [
{ "id": "a", "text": "`locale -a`", "correct": true, "explanation": "`-a` (all) listet z. B. `C.UTF-8`, `de_DE.utf8`, `en_US.utf8`." },
{ "id": "b", "text": "`locale`", "correct": false, "explanation": "Zeigt nur die aktuell wirksamen Einstellungen." },
{ "id": "c", "text": "`localectl list-keymaps`", "correct": false, "explanation": "Listet Tastaturbelegungen." },
{ "id": "d", "text": "`iconv -l`", "correct": false, "explanation": "Listet Zeichenkodierungen, keine Locales." },
{ "id": "e", "text": "`ls /etc/locale`", "correct": false, "explanation": "Kein Standardort für Locales." }
],
"explanation": "Fehlende Locales erzeugt man unter Debian mit `locale-gen` bzw. `dpkg-reconfigure locales`. Systemweite Vorgabe: `localectl set-locale LANG=de_DE.UTF-8`.",
"references": ["man 1 locale"]
},
{
"id": "107.3-006",
"objective": "107.3",
"type": "fill",
"difficulty": 1,
"question": "Welcher Befehl (nur der Name) zeigt die aktuell wirksamen Locale-Einstellungen (`LANG`, `LC_*`) an?",
"answers": ["locale"],
"explanation": "Werte in Anführungszeichen sind abgeleitet (aus `LANG` bzw. `LC_ALL`), nicht ausdrücklich gesetzt.",
"references": ["man 1 locale"]
},
{
"id": "107.3-007",
"objective": "107.3",
"type": "single",
"difficulty": 2,
"question": "Was ist `/etc/localtime` auf den meisten aktuellen Linux-Systemen?",
"options": [
{ "id": "a", "text": "Ein symbolischer Link auf eine Zeitzonendatei unter `/usr/share/zoneinfo/`", "correct": true, "explanation": "z. B. `/etc/localtime -> /usr/share/zoneinfo/Europe/Berlin`." },
{ "id": "b", "text": "Eine Textdatei mit dem Namen der Zeitzone", "correct": false, "explanation": "Das ist `/etc/timezone` (Debian)." },
{ "id": "c", "text": "Die Konfiguration der Hardware-Uhr (UTC oder Ortszeit)", "correct": false, "explanation": "Das steht in `/etc/adjtime`." },
{ "id": "d", "text": "Eine Protokolldatei der Zeitsynchronisation", "correct": false, "explanation": "Keine Protokolldatei." },
{ "id": "e", "text": "Ein Kernelparameter unter `/proc`", "correct": false, "explanation": "`/etc` liegt auf der Festplatte, nicht im procfs." }
],
"explanation": "Die Zeitzonendaten (tzdata) liegen binär unter `/usr/share/zoneinfo/`.",
"references": ["man 5 localtime"]
},
{
"id": "107.3-008",
"objective": "107.3",
"type": "single",
"difficulty": 1,
"question": "Wie zeigt man **einmalig** die aktuelle Uhrzeit in New York an, ohne die Zeitzone des Systems zu ändern?",
"options": [
{ "id": "a", "text": "`TZ=America/New_York date`", "correct": true, "explanation": "`TZ` gilt hier nur für diesen einen Aufruf von `date`." },
{ "id": "b", "text": "`timedatectl set-timezone America/New_York`", "correct": false, "explanation": "Ändert die Zeitzone des Systems dauerhaft." },
{ "id": "c", "text": "`LC_TIME=America/New_York date`", "correct": false, "explanation": "`LC_TIME` steuert nur das Format, nicht die Zeitzone." },
{ "id": "d", "text": "`date -u`", "correct": false, "explanation": "Zeigt UTC an." },
{ "id": "e", "text": "`hwclock --localtime`", "correct": false, "explanation": "Betrifft die Interpretation der Hardware-Uhr." }
],
"explanation": "Gültige Namen liefert `timedatectl list-timezones` oder `tzselect`.",
"references": ["man 1 date", "man 3 tzset"]
},
{
"id": "107.3-009",
"objective": "107.3",
"type": "single",
"difficulty": 1,
"question": "Welche Locale-Kategorie bestimmt das **Format von Datum und Uhrzeit**?",
"options": [
{ "id": "a", "text": "`LC_TIME`", "correct": true, "explanation": "z. B. `30.10.2026` bei `de_DE` statt `10/30/2026` bei `en_US`." },
{ "id": "b", "text": "`LC_NUMERIC`", "correct": false, "explanation": "Dezimal- und Tausendertrennzeichen." },
{ "id": "c", "text": "`LC_COLLATE`", "correct": false, "explanation": "Sortierreihenfolge." },
{ "id": "d", "text": "`LC_MESSAGES`", "correct": false, "explanation": "Sprache der Programmmeldungen." },
{ "id": "e", "text": "`LC_CTYPE`", "correct": false, "explanation": "Zeichenklassen und Zeichensatz." }
],
"explanation": "Weitere: `LC_MONETARY` (Währung), `LC_PAPER`, `LC_MEASUREMENT`.",
"references": ["man 7 locale"]
},
{
"id": "107.3-010",
"objective": "107.3",
"type": "multi",
"difficulty": 2,
"question": "Welche Werkzeuge helfen, die **Zeitzone** auszuwählen bzw. einzustellen?",
"options": [
{ "id": "a", "text": "`tzselect`", "correct": true, "explanation": "Interaktive Auswahl; gibt den passenden `TZ`-Wert aus." },
{ "id": "b", "text": "`dpkg-reconfigure tzdata`", "correct": true, "explanation": "Debian: setzt `/etc/timezone` und `/etc/localtime`." },
{ "id": "c", "text": "`locale-gen`", "correct": false, "explanation": "Erzeugt Locales." },
{ "id": "d", "text": "`iconv`", "correct": false, "explanation": "Konvertiert Zeichenkodierungen." },
{ "id": "e", "text": "`localectl set-locale`", "correct": false, "explanation": "Setzt die systemweite Locale, nicht die Zeitzone." }
],
"explanation": "Mit systemd: `timedatectl set-timezone <Zone>`.",
"references": ["man 8 tzselect"]
}
]
}