Diese Übersicht gliedert sich in zwei Teile. Der erste Teil ist die Gewichtung der Kapitel im Linux Essentials Lernmaterial und sollte als erste Idee der Priorisierung dienen. Der zweite Teil ist entstanden, weil ich nach der Gewichtung zu lernen verworfen hatte. Mehr dazu weiter unten. Die Gewichtung ist jedoch trotzdem gut um zu sehen ob man die wichtigen Kapitel drauf hat.
Lernen nach der Gewichtungen der Themen
Eine Möglichkeit der Themensortierung ist die Gewichtung. Diese beschreibt wie viele Fragen aus dem jeweiligen Kapitel abgefragt werden. Eine Gewichtung von 4 bedeutet also, dass in dem jeweiligen Kapitel 4 von 40 Fragen abgefragt werden. Somit ist das Kapitel 3.3 Von Befehlen zum Skript das wichtigste im ganzen Lernmaterial.
Gewichtungen absteigend sortiert
Gewichtung 4
- 3.3 Von Befehlen zum Skript
Gewichtung 3
- 2.1 Grundlagen der Befehlszeile
- 3.2 Daten in Dateien suchen und extrahieren
- 4.3 Wo Daten gespeichert werden
Gewichtung 2
- 1.1 Die Entwicklung von Linux und gängige Betriebssysteme
- 1.2 Die wichtigsten Open-Source-Anwendungen
- 1.4 IKT-Fähigkeiten und Arbeiten mit Linux
- 2.2 Hilfe suchen über die Befehlszeile
- 2.3 Verzeichnisse verwenden und Dateien auflisten
- 2.4 Erstellen, Verschieben und Löschen von Dateien
- 3.1 Dateien mithilfe der Befehlszeile archivieren
- 4.2 Verständnis von Computer-Hardware
- 4.4 Der Rechner im Netzwerk
- 5.1 Sicherheitsgrundlagen und Identifizierung von Benutzertypen
- 5.2 Benutzer und Gruppen anlegen
- 5.3 Dateiberechtigungen und Dateieigentum verwalten
Gewichtung 1
- 1.3 Open-Source-Software und -Lizenzen
- 4.1 Ein Betriebssystem auswählen
- 5.4 Besondere Verzeichnisse und Dateien
Lernen nach dem pragmatischen Ansatz
Eine andere Alternative die Linux Essentials zu lernen ist praktisch vorzugehen. Das heißt sich z.B. in eine Rolle wie die eines Homelab-Besitzers oder die eines IT-Verantwortlichen zu versetzen. Aus dieser Sicht gibt es sowas wie einen roten Faden und eine geistige Karte in der sich das Wissen ordnen kann. Ein Vorschlag für die Anordnung könne somit wie folgt aussehen:
1. Entscheidung über die Wahl eines Betriebssystems für den jeweiligen Einsatz
Um Dienste, welche wir für uns selbst oder das Unternehmen für das wir arbeiten (werden), gewinnbringend betreiben zu können, benötigen wird Hard- und Software.
Das Betriebssystem (vor allem aber der Linuxkernel) bildet dabei die Mittlerpostition, die zwischen Hard- und Software.
1.1 Die Entwicklung von Linux und gängige Betriebssysteme
Fragen
Inwiefern unterscheidet sich Debian GNU/Linux von Ubuntu? Nennen Sie zwei Aspekte.
- Ubuntu basiert auf einer Momentaufnahme (einem sogenannten Snapshot) von Debian, daher gibt es viele Ähnlichkeiten. Allerdings gibt es auch erhebliche Unterschiede: Der erste ist die Eignung für Anfänger. Ubuntu wird besonders Anfängern wegen seiner Benutzerfreundlichkeit empfohlen, Debian hingegen eher fortgeschritteneren Benutzern. Der größte Unterschied liegt in der Komplexität der Benutzerkonfiguration, die Ubuntu während des Installationsprozesses nicht hat.
- Ein weiterer Unterschied liegt in der Stabilität. Debian gilt im Vergleich zu Ubuntu als stabiler. Dies liegt daran, dass Debian weniger Updates erhält und diese intensiv getestet werden. Auf der anderen Seite ermöglicht Ubuntu dem Benutzer, die neuesten Versionen von Software und neue Technologien zu verwenden.
Welche sind die gängigsten Umgebungen/Plattformen, in denen Linux eingesetzt wird? Nennen Sie drei verschiedene Umgebungen/Plattformen und nennen Sie eine Distribution, die sich für alle eignet.
- Gängigen Umgebungen/Plattformen sind Smartphone, Desktop und Server.
- Smartphones nutzen Distributionen wie Android.
- Auf Desktop und Server kommen alle Distributionen zum Einsatz, die sich am besten für Typ und Funktion der jeweiligen Maschine eignen, von Debian und Ubuntu bis CentOS und Red Hat Enterprise Linux.
Sie planen die Installation einer Linux-Distribution in einer neuen Umgebung. Nennen Sie vier Dinge, die Sie bei der Auswahl der Distribution berücksichtigen sollten.
- Bei der Auswahl einer Distribution sollten vor allem folgende Faktoren berücksichtigt werden:
- Kosten,
- Leistung,
- Skalierbarkeit,
- Stabilität und
- der Hardwarebedarf des Systems
Nennen Sie — abgesehen von Smartphones — drei Geräte, auf denen das Android-Betriebssystem läuft.
- Andere Geräte, auf denen Android läuft, sind
- Smart TVs,
- Tablet-Computer,
- Android Auto und
- Smartwatches.
Erklären Sie drei wesentliche Vorteile von Cloud Computing.
- Die Hauptvorteile von Cloud Computing sind Flexibilität, einfache Wiederherstellung und niedrige Nutzungskosten.
- Cloud-basierte Services sind je nach Geschäftsanforderungen einfach zu implementieren und zu skalieren.
- Es hat einen großen Vorteil bei Backup- und Wiederherstellungslösungen, da es Unternehmen ermöglicht, Vorfälle schneller und mit geringeren Auswirkungen zu beheben.
- Darüber hinaus reduziert es die Betriebskosten, da es ermöglicht, nur für die Ressourcen zu zahlen, die ein Unternehmen in einem subskriptionsbasierten Modell verwendet.
Welche Distributionen sind in Bezug auf Kosten und Leistung am besten für ein Unternehmen geeignet, das darauf abzielt, die Lizenzkosten zu senken und gleichzeitig die Leistung auf dem höchsten Niveau zu halten? Erklären Sie, warum.
- Eine der am besten geeigneten Distributionen für Unternehmen ist CentOS. Es umfasst alle Red Hat-Produkte der kommerziellen Variante des Betriebssystems, steht aber frei zur Verfügung. Ebenso garantieren Ubuntu LTS-Releases den Support für einen längeren Zeitraum. Die stabilen Versionen von Debian GNU/Linux werden auch häufig in Unternehmensumgebungen verwendet.
Was sind die Hauptvorteile des Raspberry Pi und welche Funktionen kann er in Unternehmen erfüllen?
- Raspberry Pi ist klein, arbeitet aber wie ein normaler Computer. Darüber hinaus ist er kostengünstig und bewältigt Web-Traffic und viele andere Aufgaben. Er kann als Server, Firewall und als Mainboard für Roboter und viele andere kleine Geräte dienen.
Welche Distributionen bieten Amazon Cloud Services und Google Cloud an? Nennen Sie mindestens drei gemeinsame und zwei verschiedene.
- Amazon und Google Cloud Services gemeinsame Distributionen sind Ubuntu, CentOS und Red Hat Enterprise Linux. Jeder Cloud-Provider bietet auch spezifische Distributionen an, die der andere nicht anbietet. Amazon hat Amazon Linux und Kali Linux, während Google etwa FreeBSD und Windows Server anbietet.
4.1 Ein Betriebssystem auswählen
Fragen
Welches Projekt bildet die allen Linux-Distributionen gemeinsame Komponente? CentOS, Red Hat, Ubuntu, Linux Kernel oder CoreOS?
- Linux Kernel
Welches Betriebssystem wird für macOS von Apple verwendet? OS X, OSX, Darwin, MacOS?
- Darwin
Inwiefern unterscheidet sich eine Linux-Distribution vom Linux-Kernel? Der Kernel ist Teil einer Distribution — die Distribution als Anwendungen, die den Kernel umgeben, um ihn nutzbar zu machen. Der Kernel ist die Linux-Distribution. Alle Distributionen, die den gleichen Kernel verwenden, sind gleich.
- Der Kernel ist Teil einer Distribution — die Distribution als Anwendungen, die den Kernel umgeben, um ihn nutzbar zu machen.
Welches der folgenden ist eine Desktop-Umgebung unter Linux? Mint, Elementary, Zorin oder Gnome?
- Gnome
Welche Komponente eines Betriebssystems erlaubt den Zugriff auf Hardware? Treiber, Shell, Dienst oder Anwendung?
- Treiber
Ermitteln Sie das aktuelle Kernel-Release Ihres Linux-Systems, wenn Sie Zugriff auf die Befehlszeile haben.
$ uname -r
Finden Sie mit Ihrer bevorzugten Suchmaschine die für Sie verfügbaren Public-Cloud-Anbieter. Dazu gehören AWS, Google Cloud, Rackspace und viele mehr. Wählen Sie einen aus und finden Sie heraus, welche Betriebssysteme bereitgestellt werden.
- AWS ermöglicht es Ihnen beispielsweise, viele Linux-Distributionen wie Debian, Red Hat, SUSE oder Ubuntu sowie Windows einzusetzen.
4.2 Verständnis von Computer-Hardware
Fragen
Erläutern Sie die folgenden Begriffe: Prozessor, CPU & GPU
- Prozessor: Ein allgemeiner Begriff für jede Art von Recheneinheit, der oft falsch als Synonym für CPU verwendet wird.
- CPU: Die Central Processing Unit (zentrale Verarbeitungseinheit), die allgemeine Berechnungsaufgaben unterstützt.
- GPU: Die Graphical Processing Unit (grafische Verarbeitungseinheit), die für Berechnungen zur Darstellung von Grafik optimiert ist.
Wenn Sie vor allem Anwendungen zur (sehr rechenintensiven) Videobearbeitung ausführen, welche Komponenten und Eigenschaften haben Einfluss auf die Benutzbarkeit des Systems: CPU-Kerne, CPU-Geschwindigkeit, Verfügbarer Systemspeicher, Speicher, GPU und/oder Videoanzeige?
- CPU-Kerne: Ja. Mehrere Kerne unterstützen die für die Videobearbeitung erforderlichen gleichzeitigen Präsentations- und Rendering-Aufgaben.
- CPU-Geschwindigkeit: Ja. Die Videowiedergabe erfordert eine erhebliche Rechenleistung.
- Verfügbarer Systemspeicher: Wahrscheinlich. Das unkomprimierte Video, das bei der Bearbeitung verwendet wird, ist groß. Mehrzwecksysteme verfügen oft über 8 Gigabyte Speicher. 16 oder sogar 32 Gigabyte Speicherplatz ermöglichen es dem System, mehr Frames mit unkomprimiertem Video zu verarbeiten, was die Bearbeitung effizienter macht.
- Speicher: Ja. Videodateien sind groß. Der Overhead von lokalen SSD-Laufwerken unterstützt eine effizientere Übertragung. Langsamere Netzlaufwerke sind wahrscheinlich kontraproduktiv.
- GPU: Nein. Die GPU beeinflusst in erster Linie die Darstellung des gerenderten Videos.
- Videoanzeige: Nein. Die Videoanzeige wirkt sich in erster Linie auf die Darstellung des gerenderten Videos aus.
Wie würde der Name der Gerätedatei in /dev für die Partition 3 des dritten SATA-Laufwerks in einem System lauten? sd3p3,sdcp3 oder sdc3?
sd3p3 | Nein, Gerät 3 wäre sdc, nicht sd3. |
sdcp3 | Nein, Partition 3 wäre 3, nicht p3. |
sdc3 | Ja. |
Führen Sie den Befehl lsblk auf Ihrem System aus. Identifizieren Sie die folgenden Punkte: Art und Anzahl der Geräte, Partitionsstruktur jedes Geräts, Dateisystemtyp und Einhängepunkt (Mountpoint) für jede Partition-
- sdc3
2. Installieren und finden Diensten sowie auswerten ihrer Prozesse
Wenn die Hardware und das Betriebssystem gewählt wurde, können wir die gewünschten Dienste z. B. über die Paketmanager der jeweiligen Distribution installieren.
Gerade in Unternehmenskontext ist es wichtig sicherzustellen, wie man mit der gewählten Software umgehen darf und was die Lizenz der Software und erlaubt oder nicht erlaubt.
Um mit der Software vernünftig umgehen zu können und die richtigen Anweisungen/Befehle zu nutzen, benötigt man in der Regel eine Dokumentation. Ein Möglichkeit sich Infos der installierten Software zu besorgen sind die Manpages und die Info-Funktion, die in Linux-Distributionen verfügbar sind.
1.2 Die wichtigsten Open-Source-Anwendungen
Fragen
Identifizieren Sie für jeden der folgenden Befehle, ob er zum Debian-Paketverwaltungssystem oder zum Red Hat-Paketverwaltungssystem gehört: dpkg, rpm, apt-get, yum & dnf
dpkg | Debian-Paketverwaltungssystem |
rpm | Red Hat-Paketverwaltungssystem |
apt-get | Debian-Paketverwaltungssystem |
yum | Red Hat-Paketverwaltungssystem |
dnf | Red Hat-Paketverwaltungssystem |
Welcher Befehl könnte verwendet werden, um Blender auf Ubuntu zu installieren? Wie kann das Programm nach der Installation ausgeführt werden?
- Der Befehl
apt-get install blender. Der Paketname sollte in Kleinbuchstaben angegeben werden. Das Programm kann direkt vom Terminal aus mit dem Befehlblenderoder durch Auswahl aus dem Anwendungsmenü ausgeführt werden.
Welche Anwendung aus der LibreOffice Suite dient der elektronischen Tabellenkalkulation?
- Calc
Welcher Open-Source-Webbrowser bildet die Grundlage für die Entwicklung von Google Chrome?
- Chromium
SVG ist ein offener Standard für Vektorgrafiken. Welche ist die beliebteste Anwendung zum Bearbeiten von SVG-Dateien in Linux-Systemen?
- Inkscape
Schreiben Sie für jedes der folgenden Dateiformate den Namen einer Anwendung, die die entsprechende Datei öffnen und bearbeiten kann: png, doc, xls, ppt, wav.
png | Gimp |
doc | LibreOffice Writer |
xls | LibreOffice Calc |
ppt | LibreOffice Impress |
wav | Audacity |
Welches Softwarepaket ermöglicht den Dateiaustausch zwischen Linux- und Windows-Rechnern über das lokale Netzwerk?
- Samba
Sie wissen, dass Konfigurationsdateien auch dann erhalten bleiben, wenn das zugehörige Paket aus dem System entfernt wird. Wie können Sie das Paket namens cups und seine Konfigurationsdateien automatisch aus einem DEB-basierten System entfernen?
apt-get purge cups
Angenommen Sie haben viele TIFF-Bilddateien und möchten diese in JPEG konvertieren. Welches Softwarepaket könnte verwendet werden, um diese Dateien direkt auf der Kommandozeile zu konvertieren?
- ImageMagick
Welches Softwarepaket müssen Sie installieren, um Microsoft-Word-Dokumente öffnen zu können, die Ihnen von einem Windows-Benutzer zugesandt wurden?
- LibreOffice oder OpenOffice
Jedes Jahr veranstaltet linuxquestions.org eine Umfrage über die beliebtesten Linux-Anwendungen. Finden Sie unter https://www.linuxquestions.org/questions/2018-linuxquestions-org-members-choice-awards-128/ heraus, welche Desktop-Anwendungen bei erfahrenen Linux-Anwendern am beliebtesten sind.
- Browser: Firefox. E-Mail-Client: Thunderbird. Mediaplayer: VLC. Rastergrafik-Editor: GIMP.
4.3 Wo (System-)Daten gespeichert werden [+ Prozesse & Logs ]
Fragen
Verwenden Sie den Befehl which, um die Position der folgenden Programme herauszufinden und die Tabelle zu vervollständigen:
| Programm | which Befehl | Pfad zur ausführbaren Datei (Ausgabe) | Benutzer benötigt root-Rechte? |
|---|---|---|---|
swapon | |||
kill | |||
cut | |||
usermod | |||
cron | |||
ps |
Lösung
| Programm | which Befehl | Pfad zur ausführbaren Datei (Ausgabe) | Benutzer benötigt root-Rechte? |
|---|---|---|---|
swapon | which swapon | /sbin/swapon | Ja |
kill | which kill | /bin/kill | Nein |
cut | which cut | /usr/bin/cut | Nein |
usermod | which usermod | /usr/sbin/usermod | Ja |
cron | which cron | /usr/sbin/cron | Ja |
ps | which ps | /bin/ps | Nein |
Wo sind die folgenden Dateien zu finden?
| Datei | /etc | ~ |
|---|---|---|
.bashrc | ||
bash.bashrc | ||
passwd | ||
.profile | ||
resolv.conf | ||
sysctl.conf |
Lösung
| Datei | /etc | ~ |
|---|---|---|
.bashrc | X | |
bash.bashrc | X | |
passwd | X | |
.profile | X | |
resolv.conf | X | |
sysctl.conf | X |
Erklären Sie die Bedeutung der Zahlenelemente für die Kerneldatei vmlinuz-4.15.0-50-generic in /boot:
| Zahlenelement | Bedeutung |
|---|---|
4 | Kernel-Version |
15 | Major-Revision |
0 | Minor-Revision |
50 | Patch-Nummer |
Welchen Befehl würden Sie verwenden, um alle Festplatten und Partitionen in /dev aufzulisten?
ls /dev/sd*
Gerätedateien für Festplatten werden auf der Grundlage der Controller dargestellt, die sie verwenden. Wir haben /dev/sd* für Laufwerke mit SCSI (Small Computer System Interface) und SATA (Serial Advanced Technology Attachment) gesehen, aber:
Wie wurden alte IDE (Integrated Drive Electronics) Laufwerke dargestellt?
/dev/hd*
Und moderne NVMe (Non-Volatile Memory Express) Laufwerke?
/dev/nvme*
Werfen Sie einen Blick auf die Datei /proc/meminfo. Vergleichen Sie den Inhalt dieser Datei mit der Ausgabe des Befehls free und identifizieren Sie, welcher Schlüssel aus /proc/meminfo den folgenden Feldern in der Ausgabe von free entspricht:
free Ausgabe | /proc/meminfo Feld |
|---|---|
total | |
free | |
shared | |
buff/cache | |
available |
Lösung
free Ausgabe | /proc/meminfo Feld |
|---|---|
total | MemTotal / SwapTotal |
free | MemFree / SwapFree |
shared | Shmem |
buff/cache | Buffers, Cached und SReclaimable |
available | MemAvailable |
Werfen Sie einen Blick auf die folgende Ausgabe von top und beantworten Sie die folgenden Fragen:
carol@debian:~$ top
top - 13:39:16 up 31 min, 1 user, load average: 0.12, 0.15, 0.10
Tasks: 73 total, 2 running, 71 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.1 us, 0.4 sy, 0.0 ni, 98.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1020332 total, 698700 free, 170664 used, 150968 buff/cache
KiB Swap: 1046524 total, 1046524 free, 0 used. 710956 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
605 nobody 20 0 1137620 132424 34256 S 6.3 13.0 1:47.24 ntopng
444 www-data 20 0 364780 4132 2572 S 0.3 0.4 0:00.44 apache2
734 root 20 0 95212 7004 6036 S 0.3 0.7 0:00.36 sshd
887 carol 20 0 46608 3680 3104 R 0.3 0.4 0:00.03 top
1 root 20 0 56988 6688 5240 S 0.0 0.7 0:00.42 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.09 ksoftirqd/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.87 kworker/0:0
(...)
Welche Prozesse wurden vom Benutzer carol gestartet?
- Lösung: Nur einer:
top.
Welches virtuelle Verzeichnis von /proc sollten Sie besuchen, um nach Daten des Befehls top zu suchen?
Lösung: /proc/887
Welcher Prozess wurde zuerst ausgeführt? Woher wissen Sie das?
Lösung: systemd, weil es die PID 1 hat.
Vervollständigen Sie die Tabelle und geben Sie an, in welchem Bereich der top-Ausgabe die folgenden Informationen zu finden sind:
| Information zu | Übersichtsbereich | Aufgabenbereich |
|---|---|---|
| Speicher | ||
| Swap | ||
| PID | ||
| CPU-Zeit | ||
| Befehle |
Lösung
| Information zu | Übersichtsbereich | Aufgabenbereich |
|---|---|---|
| Speicher | Ja | Ja |
| Swap | Ja | Nein |
| PID | Nein | Ja |
| CPU-Zeit | Ja | Ja |
| Befehle | Nein | Ja |
Mit welchem Befehl werden die folgenden binären Protokolle gelesen?
/var/log/wtmp
Lösung: last
/var/log/btmp
Lösung: lastb
/run/log/journal/2a7d9730cd3142f4b15e20d6be631836/system.journal
Lösung: journalctl
Welche Befehle würden Sie in Kombination mit grep verwenden, um die folgenden Informationen über Ihr Linux-System zu erhalten?
Wann wurde das System zuletzt neu gestartet (wtmp)?
Lösung: last
Welche Festplatten sind installiert (kern.log)?
Lösung: less /var/log/kern.log
Wenn erfolgte die letzte Anmeldung (auth.log)?
Lösung: less /var/log/auth.log
Welche zwei Befehle würden Sie verwenden, um den Kernel Ring Buffer anzuzeigen?
dmesg und journalctl -k (oder auch journalctl --dmesg).
Geben Sie an, wo die folgenden Protokollmeldungen hingehören:
/var/log/auth.log | |
/var/log/kern.log | |
/var/log/syslog | |
/var/log/messages |
Jul 10 13:37:39 debian dbus[303]: [system] Successfully activated service ‚org.freedesktop.nm_dispatcher‘
/var/log/auth.log | |
/var/log/kern.log | |
/var/log/syslog | X |
/var/log/messages |
Jul 10 11:23:58 debian kernel: [ 1.923349] usbhid: USB HID core driver
/var/log/auth.log | |
/var/log/kern.log | X |
/var/log/syslog | |
/var/log/messages | X |
Jul 10 14:02:53 debian sudo: pam_unix(sudo:session): session opened for user root by carol(uid=0)
/var/log/auth.log | X |
/var/log/kern.log | |
/var/log/syslog | |
/var/log/messages |
Jul 10 11:23:58 debian NetworkManager[322]: <info> [1562750638.8672] NetworkManager (version 1.6.2) is starting…
/var/log/auth.log | |
/var/log/kern.log | |
/var/log/syslog | |
/var/log/messages | X |
Hat journalctl Informationen über die folgenden Einheiten?
| Einheit | Befehl |
|---|---|
ssh | journalctl -u ssh.service |
networking | journalctl -u networking.service |
rsyslog | journalctl -u rsyslog.service |
cron | journalctl -u cron.service |
Betrachten Sie die Ausgabe von top in der geführten Übung und beantworten Sie die folgenden Fragen:
Welche zwei Schritte würden folgen, um den apache Webserver zu töten?
- Zuerst drücken Sie
k, dann geben Sie einenkill-Wert ein.
Wie könnten Sie im Übersichtsbereich die Informationen über den physischen Speicher und den Swap mit Fortschrittsbalken anzeigen?
- Durch ein- oder zweimaliges Drücken von m.
Sortieren Sie nun die Prozesse nach Speicherverbrauch:
- M
Welche Datei speichert die Konfigurationseinstellungen von top? Wo liegt sie? Wie kann prüfen, dass es sie gibt?
- Die Datei ist
~/.config/procps/toprcund befindet sich im Heimatverzeichnis des Benutzers (~). Da es sich um eine versteckte Datei handelt (sie beginnt mit einem Punkt), können wir mitls -a(Liste aller Dateien) auf ihre Existenz prüfen. Diese Datei kann durch Drücken von kbd:[Shift+W] innerhalbtoperzeugt werden.
Machen Sie sich mit dem Befehl exec in Bash vertraut. Starten Sie eine Bash-Sitzung, finden Sie den Bash-Prozess mit ps, führen Sie anschließend exec /bin/sh aus und suchen Sie dann erneut nach dem Prozess mit derselben PID.
execersetzt einen Prozess durch einen anderen Befehl. Im folgenden Beispiel sehen wir, dass der Bash-Prozess durch/bin/shersetzt wird (anstatt/bin/shzu einem Unterprozess zu werden):
$ echo $$
19877
$ ps auxf | grep 19877 | head -1
carol 19877 0.0 0.0 7448 3984 pts/25 Ss 21:17 0:00 _ bash
$ exec /bin/sh
sh-5.0$ ps auxf | grep 19877 | head -1
carol 19877 0.0 0.0 7448 3896 pts/25 Ss 21:17 0:00 _ /bin/sh
Folgen Sie diesen Schritten, um Kernel-Ereignisse und die dynamische Verwaltung von Geräten durch udev zu untersuchen:
Schließen Sie ein USB-Laufwerk direkt an Ihren Computer an (Hotplug). Führen Sie dmesg aus und achten Sie auf die letzten Zeilen. Wie lautet die jüngste Zeile?
- Sie sollten etwas wie das erhalten:
[ 1967.700468] sd 6:0:0:0: [sdb] Attached SCSI removable disk
Führen Sie unter Berücksichtigung der Ausgabe des vorherigen Befehls ls /dev/sd* aus und stellen Sie sicher, dass Ihr USB-Stick in der Liste erscheint. Wie lautet die Ausgabe?
- Abhängig von der Anzahl der an Ihr System angeschlossenen Geräte sollten Sie so etwas wie
/dev/sda /dev/sda /dev/sda1 /dev/sdb /dev/sdb1 /dev/sdb2erhalten. In unserem Fall finden wir unseren USB-Stick (/dev/sdb) und seine beiden Partitionen (/dev/sdb1und/dev/sdb2).
Entfernen Sie nun das USB-Laufwerk und führen Sie dmesg erneut aus. Wie lautet die letzte Zeile?
- Sie sollten etwas wie
[ 2458.881695] usb 1-9: USB disconnect, device number 6erhalten.
Führen Sie ls /dev/sd* erneut aus und stellen Sie sicher, dass Ihr Gerät aus der Liste verschwunden ist. Was lautet die Ausgabe?
- In unserem Fall:
/dev/sda /dev/sda1.
1.3 Open-Source-Software und -Lizenzen
Fragen
Wie lauten — in Kurzfrom — die “vier Freiheiten”, wie sie von Richard Stallman und der Free Software Foundation definiert wurden?
| Freiheit 0 | die Software ausführen |
| Freiheit 1 | die Software untersuchen und anpassen (Source Code) |
| Freiheit 2 | die Software redistribuieren |
| Freiheit 3 | die Sofware verbessern und die Verbesserungen freigeben |
Wofür steht die Abkürzung FLOSS?
- Free/Libre Open Source Software
Sie haben Software entwickelt und möchten sicherstellen, dass die Software selbst, aber auch alle künftigen darauf aufbauenden Ergebnisse ebenso frei bleiben. Welche Lizenz wählen Sie?
| CC BY | |
| GPL v3 | X |
| 2-Clause BSD License | |
| LGPL |
Welche der folgenden Lizenzen würde man als permissive bezeichnen, welche als Copyleft?
| Simplified BSD License | permissive |
| GPL v3 | Copyleft |
| CC BY | permissive |
| CC BY-SA | Copyleft |
Sie haben eine Webapplikation geschrieben und unter einer freien Lizenz veröffentlicht. Wie können Sie mit Ihrem Produkt Geld verdienen? Nennen Sie drei Möglichkeiten.
- Dual licensing, also das Anbieten einer kostenpflichtigen “Business Edition”
- Anieten von Hosting, Service und Support
- Entwickeln von Erweiterungen für den Kundens
Unter welcher Lizenz (einschließlich Version) stehen die folgenden Anwendungen: Apache HTTP Server, MySQL Community Server,Wikipedia articles (English), Mozilla Firefox und GIMP
| Apache HTTP Server | Apache License 2.0 |
| MySQL Community Server | GPL 2 |
| Wikipedia articles (English) | Creative Commons Attribution Share-Alike license (CC-BY-SA) |
| Mozilla Firefox | Mozilla Public License 2.0 |
| GIMP | GPL 3 |
Sie möchten Ihre Software unter der GNU GPL v3 veröffentlichen. Welche Schritte sollten Sie beachten?
- Sichern Sie sich bei Bedarf zum Beispiel gegenüber dem Arbeitgeber mit einem Copyright-Verzicht ab, dass Sie die Lizenz festlegen können.
- Versehen Sie jede Datei der Software mit einem Copyright-Vermerk.
- Fügen Sie eine Datein namens
COPYINGmit dem vollständigen Lizenztext zu Ihrer Software hinzu. - Ergänzen Sie einen Hinweis auf die Lizenz in jeder Datei.
Sie haben proprietäre Software geschrieben und würden sie gerne mit freier Software unter der GPL v3 kombinieren. Dürfen Sie das bzw. was müssen Sie beachten?
- Die FAQ der FSF geben hier Auskunft: Sofern Ihre proprietäre Software und die freie Software voneinander getrennt bleiben, ist die Kombination möglich. Sie müssen allerdings sicherstellen, dass diese Trennung technisch gewährleistet ist und für die Benutzer erkennbar ist. Wenn Sie die freie Software so integrieren, dass sie Teil ihres Produkts wird, müssen Sie das Produkt nach dem Prinzip des Copyleft ebenfalls unter der GPL veröffentlichen.
Warum hat die Free Software Foundation als Ergänzung zur GNU GPL die GNU Affero General Public License 3 (GNU AGPL) veröffentlicht?
- Die GNU AGPL schließt eine Lizenz-Lücke, die insbesondere bei freier Software entsteht, die auf einem Server gehostet wird: Nimmt ein Entwickler Änderungen an der Software vor, ist er gemäß der GPL nicht verpflichtet, diese Änderungen zugänglich zu machen, da er zwar den Zugriff auf das Programm erlaubt, aber das Programm nicht im GPL-Sinne weitergibt. Die GNU AGPL hingegen schreibt vor, dass die Software mit sämtlichen Änderungen zum Download angeboten werden muss.
Nennen Sie drei Beispiele für freie Software, die auch in einer “Business Edition” angeboten wird, z.B. als kostenpflichtige Version.
- MySQL, Zammad, Nextcloud
2.2 Hilfe suchen über die Befehlszeile
Fragen
Nutzen Sie den Befehl man, um herauszufinden, was die folgenden Befehle bewirken:
| Befehl | Beschreibung |
|---|---|
ls | Zeigt den Inhalts eines Verzeichnisses |
cat | Verkettet Textdateien oder zeigt sie an |
cut | Entfernt Abschnitte aus einer Textdatei |
cd | Wechselt in ein anderes Verzeichnis |
cp | Kopiert eine Datei |
mv | Verschiebt eine Datei (kann auch zum Umbenennen verwendet werden) |
mkdir | Erstellt ein neuen Verzeichnis |
touch | Erstellt eine Datei oder ändert die Angabe zum Zeitpunkt der letzten Änderung einer bestehenden Datei |
wc | Zählt die Anzahl der Wörter, Zeilen oder Bytes einer Datei |
passwd | Ändert das Passwort eines Benutzers |
rm | Löscht eine Datei |
rmdir | Löscht ein Verzeichnis |
more | Zeigt Textdateien Bildschirm für Bildschirm an |
less | Zeigt Textdateien an, erlaubt Blättern zeilen- oder bildschirmweise |
whereis | Zeigt den Pfad zu einem angegebenen Programm und den zugehörigen Dokumenationsdateien |
head | Zeigt die ersten Zeilen einer Datei an |
tail | Zeigt die letzten Zeilen einer Datei an |
sort | Sortiert Dateien numerisch oder alphabetisch |
tr | Wandelt Zeichen(folgen) in einer Datei um oder löscht sie |
chmod | Ändert die Zugriffsrechte einer Datei |
grep | Sucht innerhalb einer Datei |
Öffnen Sie die Info-Seite von ls und finden Sie das MENU. Welche Optionen haben Sie? Finden Sie die Option, mit der Sie die Ausgabe nach dem Zeitpunkt der letzten Dateiänderung sortieren.
- Which files are listed (Welche Dateien werden angezeigt)
- What information is listed (Welche Informationen werden angezeigt)
- Sorting the output (Ausgabe sortieren)
- Details about version sort (Details zur Sortierung nach Version)
- General output formatting (Allgemeines Ausgabeformat)
- Formatting file timestamps (Format von Zeitstempeln)
- Formatting the file names (Format von Dateinamen)
-t oder --sort=time
Es gibt einen Befehl in der obigen Tabelle, der keine Manpage hat. Welcher ist es und warum, glauben Sie, gibt es keine Manpage?
- Es ist der Befehl
cd. Er hat keine Manpage, weil es sich um einen Built-in-Befehl der Shell handelt.
3. Management von Dateien und Verzeichnissen aus dem Terminal und dem Desktop
Da in Linux alles ein File ist, ist das Managen von Verzeichnissen, Dateien und ihrer Inhalte ein wichtiges Unterfangen.
Sowohl für den Betrieb unterschiedlicher Diensten, ihrer (automatisierten) Konfiguration, Fehlersuche und dem Monitoring ist der Umgang mit Dateien ein Fundament.
2.2 Dateien suchen mit locate und find
Fragen
Zeigen Sie den Pfad zu den ersten 3 README-Dateien. Verwenden Sie den Befehl man, um die richtige Option für locate zu ermitteln.
$ locate -l 3 README
/etc/alternatives/README
/etc/init.d/README
/etc/rc0.d/README
Erstellen Sie eine Datei namens test in Ihrem Home-Verzeichnis und finden Sie deren absoluten Pfad mit dem Befehl locate.
$ touch test
$ locate test
/home/user/test
Haben Sie sie sofort gefunden? Was mussten Sie tun, damit locate sie findet?
$ sudo updatedb
Die Datei wurde eben erst erzeugt, darum existiert noch kein Eintrag in der Datenbank.
Suchen Sie nach der Testdatei, die Sie zuvor erstellt haben, mit dem Befehl find. Welche Syntax haben Sie verwendet und wie lautet der absolute Pfad ?
$ find ~ -name test
oder
$ find . -name test
/home/user/test
2.3 Verzeichnisse verwenden und Dateien auflisten (Lektion 1 / Lektion 2)
Fragen
Erstellen Sie mit Hilfe der Befehle touch und mkdir folgenden Dateibaum. Namen, die mit einem Großbuchstaben beginnen, bezeichnen Verzeichnisse, jene mit Kleinbuchstaben Dateien.
User
├── Documents
| ├──Hello
| | ├──hey2
| | ├──helloa
| | └──ola5
| └──World
| └──earth9
├── Downloads
| ├──Music
| └──Songs
| ├──collection1
| └──collection2
├── Test
| └── passa
└── test
Zeigen Sie auf dem Bildschirm das aktuelle Arbeitsverzeichnis an, einschließlich der Unterverzeichnisse.
$ ls -R
Suchen Sie im Baum nach allen Dateien, die mit einer Ziffer enden.
$ find ~ -name "*[0-9]"
$ locate "*[0-9]"
Entfernen Sie den gesamten Verzeichnisbaum mit einem einzigen Befehl.
$ rm -r Documents Downloads Test test
Geben Sie für jeden der folgenden Pfade an, ob es sich um einen absoluten der relativen Pfad
handelt:
Betrachten Sie die folgende Dateistruktur. Beachten Sie: Verzeichnisse enden mit einem Slash (/), wenn Sie tree mit der Option -F nutzen. Sie benötigen die entsprechende Berechtigung, um tree für das Root-Verzeichnis (/) aufzurufen. Die folgende Beispielausgabe zeigt keine vollständige Verzeichnisstruktur. Nutzen Sie sie zur Beantwortung der folgenden Fragen:
$ sudo tree -F /
/
├── etc/
│ ├── network/
│ │ └── interfaces
│ ├── systemd/
│ │ ├── resolved.conf
│ │ ├── system/
│ │ ├── system.conf
│ │ ├── user/
│ │ └── user.conf
│ └── udev/
│ ├── rules.d/
│ └── udev.conf
└── home/
├── lost+found/
└── user/
└── Documents/
12 directories, 5 files
Beantworten Sie vor diesem Hintergrund die folgenden Fragen.
Ein Benutzer gibt die folgenden Befehle ein:
$ cd /etc/udev
$ ls -a
Wie lautet die Ausgabe des Befehls ls -a?
. .. rules.d udev.conf
Geben Sie den jeweils kürzesten Befehl an:
- Ihr aktueller Standort ist root (
/). Geben Sie den Befehl an, mit dem ins Verzeichnislost+foundim Verzeichnishomegelangen (Beispiel):
$ cd home/lost+found
Ihr aktueller Standort ist root (/). Geben Sie den Befehl an, mit dem Sie ins Verzeichnis /etc/network/ gelangen.
Ihr aktueller Standort ist /home/user/Documents/. Geben Sie den Befehl an, mit dem Sie ins Verzeichnis /etc/ gelangen.
$ cd /etc
Your current location is system. Navigate to the directory named user:
$ cd /home/user
Betrachten Sie die folgenden Befehle:
$ pwd
/etc/udev/rules.d
$ cd ../../systemd/user
$ cd ..
$ pwd
Wie lautet die Ausgabe des letzten pwd Befehls?
/etc/systemd
Angenommen ein Benutzer hat folgende Befehle eingegeben:
$ mkdir "this is a test"
$ ls
this is a test
Mit welchem cd-Befehl könnten Sie in dieses Verzeichnis wechseln?
$ cd this\ is\ a\ test
Wiederholen Sie dies, aber drücken Sie nach der Eingabe von cd this die TAB-Taste. Was erscheint nun in der Befehlszeile?
$ cd this\ is\ a\ test
- Dies ist ein Beispiel für Autocompletion, ein wertvolles Werkzeug, das nicht nur Zeit spart, sondern auch Tippfehler vermeidet
Versuchen Sie, ein Verzeichnis zu erstellen, dessen Name das Zeichen \ enthält. Zeigen Sie den Namen des Verzeichnisses mit ls an und löschen Sie das Verzeichnis.
- Sie können den Backslash entweder mit einem weiteren Backslash maskieren (
\\) oder den gesamten Verzeichnisnamen in einfache oder doppelte Anführungszeichen setzen:
$ mkdir my\\dir
$ ls
'my\dir'
$ rmdir 'my\dir'
Nutzen Sie die folgende Dateistruktur, um die folgenden drei Fragen zu beantworten:
/
├── etc/
│ ├── network/
│ │ └── interfaces/
│ ├── systemd/
│ │ ├── resolved.conf
│ │ ├── system/
│ │ ├── system.conf
│ │ ├── user/
│ │ └── user.conf
│ └── udev/
│ ├── rules.d
│ └── udev.conf
└── home/
├── lost+found/
├── user/
│ └── Documents/
└── michael/
└── Music/
Welcher Befehl wechselt ins Verzeichnis network unabhängig vom aktuellen Standort?
cd /etc/network
Welchen Befehl kann user eingeben, um von /etc/udev ins Verzeichnis Documents zu wechseln? Geben Sie den kürzestmöglichen Pfad an.
cd ~/Documents
Welchen Befehl kann user eingeben, um in das Verzeichnis music des Benutzers michael zu wechseln? Nutzen Sie den kürzestmöglichen Pfad.
cd ~michael/Music
Betrachten Sie die folgende Ausgabe von ls -lh, um die nächsten beiden Fragen zu beantworten. Beachten Sie, dass Verzeichnisse mit einem d am Zeilenanfang gekennzeichnet sind.
drwxrwxrwx 5 eric eric 4.0K Apr 26 2011 China/
-rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0066.jpg
-rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0067.jpg
-rwxrwxrwx 1 eric eric 1.6M Jul 18 2011 img_0074.jpg
-rwxrwxrwx 1 eric eric 1.8M Jul 18 2011 img_0075.jpg
-rwxrwxrwx 1 eric eric 46K Jul 18 2011 scary.jpg
-rwxrwxrwx 1 eric eric 469K Jan 29 2018 Screenshot from 2017-08-13 21-22-24.png
-rwxrwxrwx 1 eric eric 498K Jan 29 2018 Screenshot from 2017-08-14 21-18-07.png
-rwxrwxrwx 1 eric eric 211K Jan 29 2018 Screenshot from 2018-01-06 23-29-30.png
-rwxrwxrwx 1 eric eric 150K Jul 18 2011 tobermory.jpg
drwxrwxrwx 6 eric eric 4.0K Apr 26 2011 Tokyo/
-rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 081.jpg
-rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 085.jpg
-rwxrwxrwx 1 eric eric 944K Jul 18 2011 Toronto 152.jpg
-rwxrwxrwx 1 eric eric 728K Jul 18 2011 Toronto 173.jpg
drwxrwxrwx 2 eric eric 4.0K Jun 5 2016 Wallpapers/
Welche Datei steht zu Beginn, wenn Sie den Befehl ls -lrS ausführen?
- Die drei Verzeichnisse sind alle 4.0K groß, was der kleinstmöglichen Größe entspricht.
lswird die Verzeichnisse dann standardmäßig alphabetisch sortieren. Die richtige Antwort ist die Dateiscary.jpg.
Bitte beschreiben Sie, welche Ausgabe Sie von dem Befehl ls -ad */ erwarten.
- Der Befehl wird alle Unterverzeichnisse einschließlich versteckter Unterverzeichnisse ausgeben.
Führen Sie den Befehl ls -lh in einem Verzeichnis aus, das Unterverzeichnisse enthält. Beachten Sie die angezeigte Größe dieser Verzeichnisse. Scheint Ihnen die Dateigröße korrekt? Entspricht sie dem Inhalt aller Dateien in diesem Verzeichnis?
- Nein, das tut sie nicht. Jedes Verzeichnis hat eine angezeigte Größe von 4096 Bytes, da Verzeichnisse hier eine Abstraktion sind: Sie existieren nicht als Baumstruktur auf der Festplatte. Ist ein Verzeichnis aufgelistet, so ist es ein Link zu einer Liste von Dateien. Die Dateigröße solcher Links beträgt 4096 Bytes.
Hier ein neuer Befehl zum Ausprobieren: du -h. Führen Sie diesen Befehl aus und beschreiben Sie dessen Ausgabe.
- Der Befehl
duerzeugt eine Liste aller Dateien und Verzeichnisse und gibt deren jeweilige Größe an.du -szeigt beispielsweise die Dateigröße aller Dateien, Verzeichnisse und Unterverzeichnisse für einen bestimmten Ort an.
Auf vielen Linux-Systemen können Sie ll eingeben und erhalten die gleiche Ausgabe wie bei ls -l. Beachten Sie jedoch, dass ll kein Befehl ist. man ll wird beispielsweise darauf hinweisen, dass keine entsprechende Manpage existiert. Es ist ein Beispiel für einen Alias. Inwiefern können Aliase nützlich sein?
llist ein Alias vonls -l. In Bash dienen Aliase dazu, häufig verwendete Befehle zu vereinfachen.llist unter Linux häufig vordefiniert.
2.4 Erstellen, Verschieben und Löschen von Dateien
Fragen
Gegeben sei die folgende Umgebung. Markieren Sie die Verzeichnisse, die der Befehl mkdir -p /tmp/outfiles/text/today /tmp/infiles/text/today erzeugen würde.
$ pwd
/tmp
$ find
.
./outfiles
./outfiles/text
Lösung
- Die markierten Verzeichnisse werden erstellt. Die Verzeichnisse
/tmp,/tmp/outfilesund/tmp/outfiles/textsind bereits vorhanden, so dassmkdirsie ignorieren wird.
/tmp | |
/tmp/outfiles | |
/tmp/outfiles/text | |
/tmp/outfiles/text/today | X |
/tmp/infiles | X |
/tmp/infiles/text | X |
/tmp/infiles/text/today | X |
Was bewirkt -v bei mkdir, rm und cp?
- Typischerweise schaltet
-vdie ausführliche Ausgabe ein. Es bewirkt, dass die jeweiligen Programme ausgeben, was sie tun, während sie es tun:
$ rm -v a b
removed 'a'
removed 'b'
$ mv -v a b
'a' -> 'b'
$ cp -v b c
'b' -> 'c'
Was passiert, wenn Sie versehentlich versuchen, drei Dateien auf der gleichen Befehlszeile in eine bereits vorhandene Datei zu kopieren anstatt in ein Verzeichnis?
cpweigert sich, etwas zu tun, und gibt eine Fehlermeldung aus:
$ touch a b c d
$ cp a b c d
cp: target 'd' is not a directory
Was passiert, wenn Sie mit mv ein Verzeichnis in sich selbst verschieben?
- Sie erhalten eine Fehlermeldung, die Ihnen mitteilt, dass
mvdas nicht tun kann.
$ mv a a
mv: cannot move 'a' to a subdirectory of itself, 'a/a'
Wie würden Sie alle Dateien in Ihrem aktuellen Verzeichnis löschen, die mit old beginnen?
- Sie würden den Glob
alt*mitrmverwenden:
$ rm old*
Welche der folgenden Dateien würde mit log_[a-z]_201?_*_01.txt übereinstimmen?
log_3_2017_Jan_01.txt | |
log_+_2017_Feb_01.txt | |
log_b_2007_Mar_01.txt | |
log_f_201A_Wednesday_01.txt |
Lösung
log_3_2017_Jan_01.txt | |
log_+_2017_Feb_01.txt | |
log_b_2007_Mar_01.txt | |
log_f_201A_Wednesday_01.txt | X |
log_[a-z]entsprichtlog_, gefolgt von jedem Kleinbuchstaben, so dass sowohllog_f_201A_Wednesday_01.txtals auchlog_b_2007_Mar_01.txtübereinstimmen._201?passt auf jedes einzelne Zeichen, daher passt nurlog_f_201A_Wednesday_01.txt. Schließlich passt*_01.txtzu allem, was mit_01.txtendet, also passt unsere verbleibende Option.
Erstellen Sie ein paar Globs, die der folgenden Liste von Dateinamen entsprechen:
doc100
doc200
doc301
doc401
Es gibt mehrere Lösungen. Hier sind einige von ihnen:
doc*
doc[1-4]*
doc?0?
doc[1-4]0?
Verwenden Sie die Man Page cp, um herauszufinden, wie man eine Kopie einer Datei erstellt und die Berechtigungen und Änderungszeiten mit dem Original übereinstimmen.
- Sie würden die Option
-pverwenden. Aus der Man Page:
$ man cp
-p same as --preserve=mode,ownership,timestamps
--preserve[=ATTR_LIST]
preserve the specified attributes (default: mode,ownership,time‐
stamps), if possible additional attributes: context, links,
xattr, all
Was bewirkt der Befehl rmdir -p? Experimentieren Sie damit und erklären Sie, wie er sich von rm -r unterscheidet.
$ find
.
./a
./a/b
./a/b/c
$ rmdir -p a/b/c
$ ls
FÜHREN SIE DIESEN BEFEHL NICHT AUS: Was, denken Sie, bewirkt rm -ri /*? (EHRLICH, VERSUCHEN SIE NICHT, DAS ZU TUN!)
- Es werden alle Dateien und Verzeichnisse entfernt, die von Ihrem Benutzerkonto beschreibbar sind. Dazu gehören auch alle Netzwerk-Dateisysteme.
Ist es möglich, außer mit -i zu verhindern, dass mv Zieldateien überschreibt?
- Ja, die Option
-noder--no-clobberverhindert, dassmvDateien überschreibt.
$ cat a
a
$ cat b
b
$ mv -n a b
$ cat b
b
Erklären Sie den Befehl cp -u.
- Die Option
-ubewirkt, dasscpeine Datei nur dann kopiert, wenn das Ziel fehlt oder älter als die Quelldatei ist.
$ ls -l
total 24K
drwxr-xr-x 123 emma student 12K Feb 2 05:34 ..
drwxr-xr-x 2 emma student 4.0K Feb 2 06:56 .
-rw-r--r-- 1 emma student 2 Feb 2 06:56 a
-rw-r--r-- 1 emma student 2 Feb 2 07:00 b
$ cat a
a
$ cat b
b
$ cp -u a b
$ cat b
b
$ cp -u a c
$ ls -l
total 12
-rw-r--r-- 1 emma student 2 Feb 2 06:56 a
-rw-r--r-- 1 emma student 2 Feb 2 07:00 b
-rw-r--r-- 1 emma student 2 Feb 2 07:00 c
5.4 Besondere Verzeichnisse und Dateien
Fragen
Angenommen ein Programm muss eine temporäre Datei zur einmaligen Verwendung erstellen, die nach dem Beenden des Programms nie wieder benötigt wird. In welchem Verzeichnis sollte diese Datei erstellt werden?
- Da die Datei keine Rolle mehr spielt, nachdem das Programm beendet ist, ist
/tmpdas richtige Verzeichnis.
Welches ist das temporäre Verzeichnis, das während des Bootvorgangs gelöscht werden muss?
- Das Verzeichnis ist
/runoder, auf einigen Systemen,/var/run.
Wie lautet der Parameter für chmod im symbolischen Modus, um das Sticky Bit für ein Verzeichnis zu aktivieren?
- Das Symbol für das Sticky Bit im symbolischen Modus ist
t. Da wir diese Berechtigung für das Verzeichnis aktivieren (hinzufügen) wollen, sollte der Parameter+tsein.
Angenommen es gibt eine Datei namens document.txt im Verzeichnis /home/carol/Documents. Wie lautet der Befehl, um einen symbolischen Link mit dem Namen text.txt im aktuellen Verzeichnis darauf zu erstellen?
ln -sist der Befehl, um einen symbolischen Link zu erstellen. Da wir den absoluten Pfad zu der Datei, auf die wir verlinken, angeben sollten, lautet der Befehl:
$ ln -s /home/carol/Documents/document.txt text.txt
Erklären Sie den Unterschied zwischen einem harten Link auf eine Datei und einer Kopie dieser Datei.
- Ein Hard Link ist nur ein anderer Name für eine Datei. Auch wenn er wie ein Duplikat der Originaldatei aussieht, sind Link und Original für alle Zwecke gleich, da sie auf die gleichen Daten auf der Festplatte zeigen. Änderungen am Inhalt des Links werden auf das Original übertragen und umgekehrt.
- Eine Kopie ist eine völlig unabhängige Einheit, die einen anderen Platz auf der Festplatte einnimmt. Änderungen an der Kopie werden nicht auf das Original übertragen und umgekehrt.
Angenommen Sie erstellen in einem Verzeichnis eine Datei namens recipes.txt. In diesem Verzeichnis erstellen Sie zudem einen Hard Link namens receitas.txt zu dieser Datei sowie einen symbolischen Link namens rezepte.txt.
$ touch recipes.txt
$ ln recipes.txt receitas.txt
$ ln -s receitas.txt rezepte.txt
Der Inhalt des Verzeichnisses sollte so aussehen:
$ ls -lhi
total 160K
5388833 -rw-r--r-- 4 carol carol 77K jun 17 17:25 receitas.txt
5388833 -rw-r--r-- 4 carol carol 77K jun 17 17:25 recipes.txt
5388837 lrwxrwxrwx 1 carol carol 12 jun 24 10:12 rezepte.txt -> receitas.txt
Denken Sie daran, dass receitas.txt als Hard Link auf denselben Inode wie recipes.txt zeigt. Was würde mit dem Softlink rezepte.txt passieren, wenn der Name receitas.txt gelöscht wird? Warum?
Lösung
- Der Softlink
rezepte.txtwürde nicht mehr funktionieren. Das liegt daran, dass Softlinks auf Namen und nicht auf Inodes verweisen und der Namereceitas.txtnicht mehr existiert, auch wenn die Daten noch unter dem Namenrecipes.txtauf der Festplatte vorhanden sind.
Angenommen Sie haben ein Flash-Laufwerk an Ihr System angeschlossen und unter /media/youruser/FlashA gemountet. Sie möchten in Ihrem Home-Verzeichnis einen Link namens schematics.pdf erstellen, der auf die Datei esquema.pdf im Hauptverzeichnis des Flash-Laufwerks verweist. Sie geben also den folgenden Befehl ein:
$ ln /media/youruser/FlashA/esquema.pdf ~/schematics.pdf
Was würde passieren? Warum?
- Der Befehl würde fehlschlagen. Die Fehlermeldung wäre
Invalid cross-device link, und sie macht den Grund klar: Hard Links können nicht auf ein Ziel auf einer anderen Partition oder einem anderen Gerät zeigen. Der einzige Weg, einen solchen Link zu erstellen, ist ein symbolischer Link, wobeilnmit dem Parameter-saufgerufen wird.
Betrachten Sie die folgende Ausgabe von ls -lah:
$ ls -lah
total 3,1M
drwxr-xr-x 2 carol carol 4,0K jun 17 17:27 .
drwxr-xr-x 5 carol carol 4,0K jun 17 17:29 ..
-rw-rw-r-- 1 carol carol 2,8M jun 17 15:45 compressed.zip
-rw-r--r-- 4 carol carol 77K jun 17 17:25 document.txt
-rw-rw-r-- 1 carol carol 216K jun 17 17:25 image.png
-rw-r--r-- 4 carol carol 77K jun 17 17:25 text.txt
Wie viele Links zeigen auf die Datei document.txt?
- Jede Datei beginnt mit einer Linkzahl von
1. Da die Anzahl der Links für die Datei4ist, gibt es drei Links, die auf diese Datei zeigen.
Sind es Soft oder Hard Links?
- Es handelt sich um Hard Links, da Softlinks die Linkzahl einer Datei nicht erhöhen.
Welchen Parameter sollten Sie an ls übergeben, um zu sehen, welchen Inode jede Datei belegt?
- Der Parameter ist
-i. Der Inode wird als erste Spalte in der Ausgabe vonlsangezeigt:
$ ls -lahi
total 3,1M
5388773 drwxr-xr-x 2 rigues rigues 4,0K jun 17 17:27 .
5245554 drwxr-xr-x 5 rigues rigues 4,0K jun 17 17:29 ..
5388840 -rw-rw-r-- 1 rigues rigues 2,8M jun 17 15:45 compressed.zip
5388833 -rw-r--r-- 4 rigues rigues 77K jun 17 17:25 document.txt
5388837 -rw-rw-r-- 1 rigues rigues 216K jun 17 17:25 image.png
5388833 -rw-r--r-- 4 rigues rigues 77K jun 17 17:25 text.txt
Angenommen Sie haben in Ihrem ~/Documents-Verzeichnis eine Datei namens clients.txt, die einige Kundennamen enthält, und ein Verzeichnis namens somedir. Darin befindet sich eine andere Datei, die ebenfalls clients.txt heißt und andere Namen enthält. Um diese Struktur zu replizieren, benutzen Sie die folgenden Befehle:
$ cd ~/Documents
$ echo "John, Michael, Bob" > clients.txt
$ mkdir somedir
$ echo "Bill, Luke, Karl" > somedir/clients.txt
Sie erstellen dann einen Link in somedir mit dem Namen partners.txt, der auf diese Datei zeigt:
$ cd somedir/
$ ln -s clients.txt partners.txt
Die Verzeichnisstruktur ist dann die folgende:
Documents
|-- clients.txt
`-- somedir
|-- clients.txt
`-- partners.txt -> clients.txt
Jetzt verschieben Sie partners.txt von somedir nach ~/Documents und listen den Inhalt auf.
$ cd ~/Documents/
$ mv somedir/partners.txt .
$ less partners.txt
Funktioniert der Link noch? Wenn ja, welcher Dateiinhalt wird angezeigt? Warum?
- Das ist knifflig, aber der Link wird funktionieren und die aufgelistete Datei wird die in
~/Documentssein, die die NamenJohn,Michael,Bobenthält. - Da wir beim Erstellen des Soft Links
partners.txtnicht den vollständigen Pfad zum Zielclients.txtangegeben haben, wird der Zielort als relativ zum Ort des Links interpretiert, der in diesem Fall das aktuelle Verzeichnis ist. - Wenn der Link von
~/Documents/somedirnach~/Documentsverschoben wurde, sollte er nicht mehr funktionieren, da sich das Ziel nicht mehr im selben Verzeichnis wie der Link befand. Allerdings gibt es zufällig eine Datei namensclients.txtin~/Documents, so dass der Link auf diese Datei zeigt, statt auf das ursprüngliche Ziel in~/somedir. - Um dies zu vermeiden, geben wir bei der Erstellung eines symbolischen Links immer den vollständigen Pfad zum Ziel an.
Betrachten Sie die folgenden Dateien:
-rw-r--r-- 1 rigues rigues 19 Jun 24 11:12 clients.txt
lrwxrwxrwx 1 rigues rigues 11 Jun 24 11:13 partners.txt -> clients.txt
Wie lauten die Zugriffsrechte für partners.txt? Warum?
- Die Zugriffsberechtigungen für
partners.txtsindrw-r—r--, da Links immer dieselben Zugriffsberechtigungen wie das Ziel haben.
5.1 Sicherheitsgrundlagen und Identifizierung von Benutzertypen
Fragen
Vergleichen Sie die Ergebnisse von last mit w und who. In welchen Ausgabedetails unterscheiden sich die Befehle?
- Die Werkzeuge
wundwholisten nur die aktuell angemeldeten Benutzer auf, währendlastauch Benutzer auflistet, die die Verbindung getrennt haben. Der Befehlwlistet die Systemnutzung auf,whohingegen nicht.
Versuchen Sie, die Befehle who und w -his auszuführen.
Welche Informationen wurden aus der Ausgabe des Kommandos w mit den Optionen “no header” (-h) und “kurz” (-s) entfernt?
- Der Header wird nicht ausgegeben, was für das Parsen nützlich ist, und die Anmeldezeit bzw. ausgewählte CPU-Informationen werden nicht aufgeführt.
Welche Informationen wurden der Ausgabe des Kommandos w mit der Option “IP-Adresse” (-i) hinzugefügt?
- Gibt die IP-Adresse aus statt über eine DNS-Auflösung zu versuchen, den Hostnamen auszugeben. Diese Option für
wentspricht der Standardausgabe deslast-Befehls.
In welcher Datei wird der Einweg-Passwort-Hash eines Benutzerkontos speichert?
- Die Datei
/etc/shadowspeichert den Einweg-Passwort-Hash eines Benutzerkontos, da sie im Gegensatz zur Datei/etc/passwdvon einem normalen, unprivilegierten Benutzerkonto nicht lesbar ist.
Welche Datei enthält die Liste der Gruppen, in denen ein Benutzerkonto Mitglied ist? Wie könnte man eine Liste der Gruppen zusammenzustellen, in denen ein Benutzerkonto Mitglied ist?
- Die Datei
/etc/groupenthält eine CSV-Liste von Benutzernamen im letzten Feld (“members”) jeder Gruppenzeile. - Jede Zeile in der Datei
/etc/group, in der der Benutzer im letzten Feld (“members”) aufgeführt ist, weist den Benutzer als Mitglied dieser Gruppe aus — vorausgesetzt sie ist korrekt formatiert (CSV). Darüber hinaus hat die primäre Gruppenzugehörigkeit des Benutzers in der Datei/etc/passwdauch einen passenden Eintrag in der Datei/etc/groupsowohl für den Gruppennamen als auch für die GID.
Eine oder mehrere der folgenden Dateien sind standardmäßig für normale, nicht privilegierte Benutzer nicht lesbar. Welche?
/etc/group/etc/passwd/etc/shadow/etc/sudoers
Lösung
- Die Dateien
/etc/shadowund/etc/sudoerssind standardmäßig nicht lesbar, außer für ausgewählte Dienste oder den Superuser. Diese Antworten sind abhängig von den eingesetzten Systemen und Benutzernamen.
Wie würden Sie die Login-Shell des aktuellen Benutzers auf die Korn-Shell (/usr/bin/ksh) im nicht-interaktiven Modus ändern?
$ chsh -s /usr/bin/ksh
Warum befindet sich das Home-Verzeichnis des root-Benutzers nicht im Verzeichnis /home?
Weil das root-Konto benötigt wird, um Fehler zu finden und zu beheben, was auch Dateisystemprobleme im Zusammenhang mit dem /home-Verzeichnis umfassen kann. In solchen Fällen sollte root voll funktionsfähig sein, auch wenn das /home-Dateisystem noch nicht verfügbar ist.
5.2 Benutzer und Gruppen anlegen
Fragen
Geben Sie für jeden der folgenden Einträge die Datei an, auf die er sich bezieht:
developer:x:1010:frank,grace,dave
/etc/group
root:x:0:0:root:/root:/bin/bash
/etc/passwd
henry:$1$.AbCdEfGh123456789A1b2C3d4.:18015:20:90:5:30::
/etc/shadow
henry:x:1000:1000:User Henry:/home/henry:/bin/bash
/etc/passwd
staff:!:dave:carol,emma
/etc/gshadow
Betrachten Sie die folgende Ausgabe, um die nächsten sieben Fragen zu beantworten:
# cat /etc/passwd | tail -3
dave:x:1050:1050:User Dave:/home/dave:/bin/bash
carol:x:1051:1015:User Carol:/home/carol:/bin/sh
henry:x:1052:1005:User Henry:/home/henry:/bin/tcsh
# cat /etc/group | tail -3
web_admin:x:1005:frank,emma
web_developer:x:1010:grace,kevin,christian
dave:x:1050:
# cat /etc/shadow | tail -3
dave:$6$AbCdEfGh123456789A1b2C3D4e5F6G7h8i9:0:20:90:7:30::
carol:$6$q1w2e3r4t5y6u7i8AbcDeFgHiLmNoPqRsTu:18015:0:60:7:::
henry:!$6$123456789aBcDeFgHa1B2c3d4E5f6g7H8I9:18015:0:20:5:::
# cat /etc/gshadow | tail -3
web_admin:!:frank:frank,emma
web_developer:!:kevin:grace,kevin,christian
dave:!::
Was ist die Benutzer-ID (UID) und Gruppen-ID (GID) von carol?
- Die UID ist 1051 und die GID ist 1015 (das dritte und vierte Feld in
/etc/passwd).
Welche Shell ist für dave und henry eingestellt?
davenutzt/bin/bashundhenrynutzt/bin/tcsh(das siebte Feld in/etc/passwd).
Wie ist der Name der Hauptgruppe von henry?
- Der Gruppenname ist
web_admin(das erste Feld in/etc/group).
Welche sind die Mitglieder der Gruppe web_developer? Welche von ihnen sind Gruppenadministratoren?
- Die Mitglieder sind
grace,kevinundchristian(das vierte Feld in/etc/group), aber nurkevinist der Administrator der Gruppe (das dritte Feld in/etc/gshadow).
Welcher Benutzer kann sich nicht in das System einloggen?
- Das Benutzerkonto
henryist gesperrt (es hat ein Ausrufezeichen vor den Passwort-Hashes in/etc/shadow).
Welcher Benutzer sollte das Passwort bei der nächsten Anmeldung am System ändern?
- Wenn das dritte Feld (Datum der letzten Passwortänderung) in
/etc/shadowden Wert 0 hat, sollte der Benutzer sein Passwort beim nächsten Einloggen in das System ändern. Daher mussdavesein Passwort ändern.
Wie viele Tage müssen vergehen, bis eine Passwortänderung für carol erforderlich ist?
- 60 Tage (das fünfte Feld in
/etc/shadow).
Wenn Sie als root arbeiten, führen Sie den Befehl useradd -m dave aus, um einen neuen Benutzer-Account hinzuzufügen. Welche Operationen führt dieser Befehl aus? Nehmen Sie an, dass CREATE_HOME und USERGROUPS_ENAB in /etc/login.defs auf yes gesetzt sind.
- Der Befehl fügt einen neuen Benutzer namens
davezur Liste der Benutzer im System hinzu. Das Home-Verzeichnis vondavewird erstellt (standardmäßig/home/dave) und die im Skelett-Verzeichnis enthaltenen Dateien und Verzeichnisse werden in das Home-Verzeichnis kopiert. Schließlich wird eine neue Gruppe mit dem gleichen Namen wie das Benutzerkonto angelegt.
Nun, da Sie das dave-Konto erstellt haben, kann sich dieser Benutzer am System anmelden?
- Nein, weil das
dave-Konto gesperrt ist (siehe das Ausrufezeichen in/etc/shadow).
# cat /etc/shadow | grep dave
dave:!:18015:0:99999:7:::
- Legt man ein Passwort für
davefest, wird der Account freigeschaltet. Das geschieht mit dem Befehlpasswd:
# passwd dave
Changing password for user dave.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
Ermitteln Sie die Benutzer-ID (UID) und Gruppen-ID (GID) von dave und allen Mitgliedern der Gruppe dave.
# cat /etc/passwd | grep dave
dave:x:1015:1019::/home/dave:/bin/sh
# cat /etc/group | grep 1019
dave:x:1019:
- Die UID und GID von
davesind 1015 bzw. 1019 (das dritte und vierte Feld in/etc/passwd), und die Gruppedavehat keine Mitglieder (das vierte Feld in/etc/groupist leer).
Erstellen Sie die Gruppen sys_admin, web_admin und db_admin und ermitteln Sie deren Gruppen-IDs (GIDs).
# groupadd sys_admin
# groupadd web_admin
# groupadd db_admin
# cat /etc/group | grep admin
sys_admin:x:1020:
web_admin:x:1021:
db_admin:x:1022:
- Die GIDs für die Gruppen
sys_admin,web_adminunddb_adminsind 1020, 1021 bzw. 1022.
Fügen Sie ein neues Benutzerkonto namens carol mit der UID 1035 hinzu und setzen Sie sys_admin als primäre Gruppe und web_admin und db_admin als sekundäre Gruppen.
# useradd -u 1035 -g 1020 -G web_admin,db_admin carol
# id carol
uid=1035(carol) gid=1020(sys_admin) groups=1020(sys_admin),1021(web_admin),1022(db_admin)
Löschen Sie die Benutzerkonten dave und carol sowie die Gruppen sys_admin, web_admin und db_admin, die Sie zuvor erstellt haben.
# userdel -r dave
# userdel -r carol
# groupdel sys_admin
# groupdel web_admin
# groupdel db_admin
Führen Sie den Befehl ls -l /etc/passwd /etc/group /etc/shadow /etc/gshadow aus und beschreiben Sie die Ausgabe, die er Ihnen in Bezug auf die Dateirechte gibt. Welche dieser vier Dateien werden aus Sicherheitsgründen shadowed, vorausgesetzt Ihr System verwendet Shadow-Passwörter.
# ls -l /etc/passwd /etc/group /etc/shadow /etc/gshadow
-rw-r--r-- 1 root root 853 mag 1 08:00 /etc/group
-rw-r----- 1 root shadow 1203 mag 1 08:00 /etc/gshadow
-rw-r--r-- 1 root root 1354 mag 1 08:00 /etc/passwd
-rw-r----- 1 root shadow 1563 mag 1 08:00 /etc/shadow
- Die Dateien
/etc/passwdund/etc/groupsind von allen lesbar und werden aus Sicherheitsgründen shadowed. Wenn Shadow-Passwörter verwendet werden, steht einxim zweiten Feld dieser Dateien, weil die verschlüsselten Passwörter für Benutzer und Gruppen in/etc/shadowund/etc/gshadowgespeichert sind, die nur von root und, in einigen Systemen, auch von Mitgliedern der Gruppeshadowlesbar sind.
Führen Sie den Befehl ls -l /usr/bin/passwd aus. Welches spezielle Bit ist gesetzt und was ist seine Bedeutung?
# ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 42096 mag 17 2015 /usr/bin/passwd
- Der Befehl
passwdhat das SUID-Bit gesetzt (das vierte Zeichen dieser Zeile), was bedeutet, dass der Befehl mit den Rechten des Besitzers der Datei (also root) ausgeführt wird. Auf diese Weise können normale Benutzer ihr Passwort ändern.
5.3 Dateiberechtigungen und Dateieigentum verwalten
Fragen
Erstellen Sie ein Verzeichnis namens emptydir mit dem Befehl mkdir emptydir. Listen Sie nun mit ls die Berechtigungen für das Verzeichnis emptydir auf.
- Fügen Sie den Parameter
-dzulshinzu, um die Dateiattribute eines Verzeichnisses zu sehen anstatt dessen Inhalt aufzulisten. Die Antwort lautet also:
ls -l -d emptydir
- Bonuspunkte, wenn Sie die beiden Parameter in einem zusammenführen, wie in
ls -ld emptydir.
Erstellen Sie eine leere Datei namens emptyfile mit dem Befehl touch emptyfile. Nun fügen Sie mit chmod in symbolischer Schreibweise Ausführungsrechte für den Besitzer der Datei emptyfile hinzu und entfernen die Schreib- und Ausführungsrechte für alle anderen. Benutzen Sie dazu nur einen chmod-Befehl.
- “Für den Benutzer, dem die Datei gehört (
u), hinzufügen (+) der Ausführungsrechte (x)”, alsou+x. - Für die Gruppe (
g) und andere Benutzer (o) entfernen (-) der Schreib- (w) und Ausführungsrechte (x)”, alsogo-wx. - Um diese beiden Berechtigungen zu kombinieren, fügen wir ein Komma zwischen ihnen ein. Das Ergebnis ist also:
chmod u+x,go-wx emptyfile
Wie lauten die Berechtigungen für eine Datei namens text.txt, nachdem Sie den Befehl chmod 754 text.txt benutzt haben?
- Denken Sie daran, dass in numerischer Notation jede Ziffer einen Satz von drei Berechtigungen darstellt, die jeweils einen entsprechenden Wert haben: lesen ist
4, schreiben ist2, ausführen ist1und keine Berechtigung ist0. Wir erhalten den Wert für eine Ziffer, indem wir die entsprechenden Werte für jede Berechtigung addieren.7ist4+2+1(alsorwx),5ist4+0+1(alsor-x) und4ist nur lesen (oderr--). Die Berechtigungen fürtext.txtlauten:
rwxr-xr--
Angenommen eine Datei namens test.sh ist ein Shell-Skript mit den folgenden Berechtigungen und Eigentumsverhältnissen:
-rwxr-sr-x 1 carol root 33 Dec 11 10:36 test.sh
Was sind die Berechtigungen für den Eigentümer der Datei?
- Die Berechtigungen für den Besitzer (2. bis 4. Zeichen in der Ausgabe von
ls -l) sindrwx, die Antwort lautet also: “Lesen, Schreiben und Ausführen der Datei”.
Wenn der Benutzer john dieses Skript ausführt, unter welchen Rechten wird es ausgeführt?
- Achten Sie auf die Rechte für die Gruppe. Sie sind
r-s, was bedeutet, dass das SGID-Bit gesetzt ist. Die Gruppe, der diese Datei gehört, istroot, so dass das Skript, selbst wenn es von einem normalen Benutzer gestartet wird, mit root-Rechten ausgeführt wird.
Wie lautet unter Verwendung der numerischen Notation die Syntax von chmod, um die spezielle Erlaubnis, die dieser Datei gewährt wurde, “aufzuheben”?
- Wir können die Sonderberechtigungen “aufheben”, indem wir eine 4. Stelle,
0, anchmodübergeben. Die aktuellen Berechtigungen sind755, also lautet der Befehlchmod 0755.
Betrachten Sie diese Datei:
$ ls -l /dev/sdb1
brw-rw---- 1 root disk 8, 17 Dec 21 18:51 /dev/sdb1
Welche Art von Datei ist sdb1? Und wer kann darauf schreiben?
- Das erste Zeichen der Ausgabe von
ls -lzeigt die Art der Datei an.bist ein Block Device, normalerweise eine Festplatte (intern oder extern), die an die Maschine angeschlossen ist. Der Besitzer (root) und alle Benutzer der Gruppediskkönnen darauf schreiben.
Betrachten Sie die folgenden 4 Dateien:
drwxr-xr-t 2 carol carol 4,0K Dec 20 18:46 Another_Directory
----r--r-- 1 carol carol 0 Dec 11 10:55 foo.bar
-rw-rw-r-- 1 carol carol 1,2G Dec 20 18:22 HugeFile.zip
drwxr-sr-x 2 carol users 4,0K Jan 18 17:26 Sample_Directory
Notieren Sie die entsprechenden Berechtigungen für jede Datei und jedes Verzeichnis in numerischer 4-stelliger Schreibweise.
Another_Directory// Antwort:1755//1für das Sticky Bit,755für die regulären Berechtigungen (rwxfür den Benutzer,r-xfür die Gruppe und andere).foo.bar// Antwort:0044// Keine speziellen Berechtigungen (die erste Ziffer ist also0), keine Berechtigungen für den Benutzer (---) und nur Lesen (r—r--) für Gruppe und andere.HugeFile.zip// Antwort:0664// Keine besonderen Berechtigungen, daher ist die erste Ziffer0.6(rw-) für den Benutzer und die Gruppe,4(r--) für die anderen.Sample_Directory// Antwort:2755//2für das SGID-Bit,7(rwx) für den Benutzer,5(r-x) für die Gruppe und andere.
Versuchen Sie folgendes in einem Terminal: Erstellen Sie eine leere Datei namens emptyfile mit dem Befehl touch emptyfile. Nun “nullen” Sie die Rechte für die Datei mit chmod 000 emptyfile aus. Was wird passieren, wenn Sie die Rechte für emptyfile ändern, indem Sie nur einen Wert für chmod im numerischen Modus übergeben, zum Beispiel chmod 4 emptyfile? Was geschieht, wenn Sie zwei benutzen, wie etwa chmod 44 emptyfile? Was lässt sich daraus über die Art und Weise ableiten, wie chmod den numerischen Wert liest?
- Denken Sie daran, dass wir die Rechte für
emptyfileauf Null gesetzt haben. Der Anfangszustand ist also:
---------- 1 carol carol 0 Dec 11 10:55 emptyfile
- Versuchen wir nun den ersten Befehl,
chmod 4 emptyfile:
$ chmod 4 emptyfile
$ ls -l emptyfile
-------r-- 1 carol carol 0 Dec 11 10:55 emptyfile
- Die Berechtigungen für andere wurden geändert. Und was geschieht, wenn wir zwei Ziffern ausprobieren, wie z.B.
chmod 44 emptyfile?
$ chmod 44 emptyfile
$ ls -l emptyfile
----r--r-- 1 carol carol 0 Dec 11 10:55 emptyfile
- etzt wurden die Rechte für Gruppe und andere verändert. Daraus können wir schließen, dass in numerischer Notation
chmodden Wert “rückwärts” liest, von der niedrigstwertigen Stelle (andere) bis zur höchstwertigen (Benutzer). Übergibt man eine Ziffer, ändert man die Berechtigungen für andere. Mit zwei Ziffern modifizieren Sie Gruppe und andere, mit drei Ziffern modifizieren Sie Benutzer, Gruppe und andere, und mit vier Ziffern modifizieren Sie Benutzer, Gruppe, andere und die speziellen Rechte.
Können Sie eine Datei ausführen, für die Sie zwar die Berechtigung zum Ausführen, aber nicht zum Lesen haben (--x)? Warum oder warum nicht?
- Zunächst scheint die Antwort offensichtlich: Wenn Sie Ausführungsberechtigung haben, sollte die Datei ausgeführt werden. Das trifft auf Programme im Binärformat dazu, die direkt vom Kernel ausgeführt werden. Es gibt jedoch Programme (z.B. Shell-Skripte), die zunächst gelesen und interpretiert werden müssen, weshalb in diesen Fällen auch das Leserecht (
r) gesetzt sein muss.
Beachten Sie die Berechtigungen für das temporäre Verzeichnis /tmp auf einem Linux-System:
$ ls -ld /tmp
drwxrwxrwt 19 root root 16K Dec 21 18:58 tmp
Benutzer, Gruppen und andere haben volle Rechte. Aber kann ein normaler Benutzer alle Dateien in diesem Verzeichnis löschen? Warum ist das so?
/tmpist das, was wir ein “weltweit beschreibbares” Verzeichnis nennen, was bedeutet, dass jeder Benutzer in dieses Verzeichnis schreiben kann. Aber wir wollen nicht, dass ein Benutzer Dateien modifiziert, die von anderen erstellt wurden, also ist das Sticky Bit gesetzt (durch dastin den Berechtigungen für andere angezeigt). Das bedeutet, dass ein Benutzer Dateien in/tmplöschen kann, aber nur, wenn er diese Datei erstellt hat.
Eine Datei namens test.sh hat die folgenden Berechtigungen: -rwsr-xr-x, was bedeutet, dass das SUID-Bit gesetzt ist. Nun führen Sie die folgenden Befehle aus:
$ chmod u-x test.sh
$ ls -l test.sh
-rwSr-xr-x 1 carol carol 33 Dec 11 10:36 test.sh
Was haben wir gemacht? Was bedeutet das große S?
- Wir haben die Ausführungsrechte für den Benutzer, dem die Datei gehört, entfernt. Das
s(odert) nimmt den Platz desxin der Ausgabe vonls -lein, so dass das System einen Weg braucht, um zu zeigen, ob der Benutzer Ausführungsrechte hat oder nicht. Das geschieht, indem es die Groß- und Kleinschreibung des Sonderzeichens ändert. - Ein kleingeschriebenes
sin der ersten Gruppe von Berechtigungen bedeutet, dass der Benutzer, dem die Datei gehört, Ausführungsrechte hat und dass das SUID-Bit gesetzt ist. Ein großesSbedeutet, dass der Benutzer, dem die Datei gehört, keine (-) Ausführungsrechte hat und dass das SUID-Bit gesetzt ist. - Dasselbe gilt für die SGID. Ein kleines
sin der zweiten Gruppe von Berechtigungen bedeutet, dass die Gruppe, der die Datei gehört, Ausführungsrechte hat und dass das SGID-Bit gesetzt ist. Ein großesSbedeutet, dass die Gruppe, der die Datei gehört, keine (-) Ausführungsrechte hat und dass das SGID-Bit gesetzt ist. - Dies gilt auch für das Sticky Bit, das durch das
tin der dritten Gruppe von Berechtigungen repräsentiert wird. Ein kleinestbedeutet, dass das Sticky Bit gesetzt ist und dass andere Ausführungsrechte haben. Ein großesTbedeutet, dass das Sticky Bit gesetzt ist und andere keine Ausführungsrechte haben.
Wie würden Sie ein Verzeichnis namens Box erstellen, in dem alle Dateien automatisch der Gruppe users gehören und nur von dem Benutzer gelöscht werden können, der sie erstellt hat?
- Dies ist ein mehrstufiger Prozess. Der erste Schritt ist die Erstellung des Verzeichnisses:
$ mkdir Box
- Wir wollen, dass jede Datei, die in diesem Verzeichnis erstellt wird, automatisch der Gruppe
userszugeordnet wird. Das erreichen wir, indem wir diese Gruppe als Besitzer des Verzeichnisses setzen und dann das SGID-Bit darauf setzen. Wir müssen zudem sicherstellen, dass jedes Mitglied der Gruppe in dieses Verzeichnis schreiben kann. - Da wir uns nicht um die anderen Berechtigungen kümmern und nur die speziellen Bits “umdrehen” wollen, ist der symbolische Modus sinnvoll:
$ chown :users Box/
$ chmod g+wxs Box/
- Beachten Sie, dass, wenn Ihr aktueller Benutzer nicht zur Gruppe
usersgehört, Sie den Befehlsudovor den obigen Befehlen verwenden müssen, um die Änderung als root durchzuführen. - Nun zum letzten Teil, der sicherstellt, dass nur der Benutzer, der eine Datei erstellt hat, diese auch löschen darf. Dies geschieht durch Setzen des Sticky Bit (repräsentiert durch ein
t) für das Verzeichnis. Denken Sie daran, dass es in den Rechten für andere gesetzt ist (o).
$ chmod o+t Box/
- Die Berechtigungen für das Verzeichnis
Boxsollten wie folgt aussehen:
drwxrwsr-t 2 carol users 4,0K Jan 18 19:09 Box
- Natürlich können Sie die SGID und das Sticky Bit mit nur einem
chmod-Befehl angeben:
$ chmod g+wxs,o+t Box/
- Bonuspunkte, wenn Sie daran gedacht haben.
3.2 Daten in Dateien suchen und extrahieren (Lektion 1 / Lektion 2)
Fragen
Listen Sie den Inhalt Ihres aktuellen Verzeichnisses einschließlich Eigentümer und Berechtigungen auf und leiten Sie die Ausgabe in eine Datei namens contents.txt in Ihrem Heimatverzeichnis um.
$ ls -l > contents.txt
Sortieren Sie den Inhalt der Datei contents.txt aus Ihrem aktuellen Verzeichnis und fügen Sie ihn an das Ende einer neuen Datei namens contents-sorted.txt an.
$ sort contents.txt >> contents-sorted.txt
Zeigen Sie die letzten 10 Zeilen der Datei /etc/passwd an und leiten Sie sie in eine neue Datei im Verzeichnis Documents Ihres Benutzers um.
$ tail /etc/passwd > Documents/newfile
Zählen Sie die Anzahl der Wörter in der Datei contents.txt und hängen Sie die Ausgabe an das Ende einer Datei field2.txt in Ihrem Heimatverzeichnis an. Sie müssen sowohl die Eingabe- als auch die Ausgabeumleitung verwenden.
$ wc -w < contents.txt >> field2.txt
Zeigen Sie die ersten 5 Zeilen der Datei /etc/passwd an und sortieren Sie die Ausgabe alphabetisch umgekehrt.
$ head -n 5 /etc/passwd | sort -r
Zählen Sie mit der zuvor erstellten Datei contents.txt die Anzahl der Zeichen der letzten 9 Zeilen.
$ tail -n 9 contents.txt | wc -c
531
Zählen Sie die Anzahl der Dateien namens test im Verzeichnis /usr/share und dessen Unterverzeichnissen. Hinweis: Jede Zeilenausgabe des Befehls find steht für eine Datei.
$ find /usr/share -name test | wc -l
125
Wählen Sie das zweite Feld der Datei contents.txt aus und leiten Sie die Standardausgabe und Fehlerausgabe in eine andere Datei namens field1.txt um.
$ cut -f 2 -d " " contents.txt &> field1.txt
Löschen Sie mithilfe des Eingabeumleitungsoperators und des Befehl tr die Bindestriche (-) aus der Datei contents.txt.
$ tr -d "-" < contents.txt
Worin besteht der größte Vorteil, nur Fehler in eine Datei umzuleiten?
- Nur Fehler in eine Datei umzuleiten, kann bei der Führung einer Protokolldatei helfen, die regelmäßig überwacht wird.
Ersetzen Sie alle aufeinanderfolgenden Leerzeichen in der alphabetisch sortierten Datei contents.txt durch ein einziges Leerzeichen.
$ sort contents.txt | tr -s " "
Eliminieren Sie in einer Befehlszeile die aufeinanderfolgenden Leerzeichen (wie in der vorangehenden Übung), wählen Sie das neunte Feld aus und sortieren Sie es umgekehrt alphabetisch und nicht case-sensitiv. Wie viele Pipes mussten Sie verwenden?
$ cat contents.txt | tr -s " " | cut -f 9 -d " " | sort -fr
- Die Übung nutzt 3 Pipes – eine für jeden Filter.
Suchen Sie mit grep in der Datei /usr/share/hunspell/en_US.dic die Zeilen, die den folgenden Kriterien entsprechen:
Alle Zeilen, die die Zeichenfolge cat an beliebiger Stelle in der Zeile enthalten.
$ grep "cat" /usr/share/hunspell/en_US.dic
Alcatraz/M
Decatur/M
Hecate/M
...
Alle Zeilen, die keines der folgenden Zeichen enthalten: sawgtfixk
$ grep -v "[sawgtfixk]" /usr/share/hunspell/en_US.dic
49269
0/nm
1/n1
2/nm
2nd/p
3/nm
3rd/p
4/nm
5/nm
6/nm
7/nm
8/nm
Alle Zeilen, die mit 3 beliebigen Buchstaben und der Zeichenfolge dig beginnen.
$ grep "^...dig" /usr/share/hunspell/en_US.dic
cardigan/SM
condign
predigest/GDS
...
Alle Zeilen, die mit mindestens einem e enden.
$ grep -E "e+$" /usr/share/hunspell/en_US.dic
Anglicize
Anglophobe
Anthropocene
...
Alle Zeilen, die eine der folgenden Zeichenfolgen enthalten: org, kay oder tuna.
$ grep -E "org|kay|tuna" /usr/share/hunspell/en_US.dic
Borg/SM
George/MS
Tokay/M
fortunate/UY
...
Anzahl der Zeilen, die mit einem oder keinem c beginnen, gefolgt von der Zeichenkette ati.
$ grep -cE "^c?ati" /usr/share/hunspell/en_US.dic
3
Finden Sie den regulären Ausdruck, der mit den Wörtern in der Zeile “Einschließen” übereinstimmt und nicht mit denen in der Zeile “Ausschließen”:
Einschließen: pot, spot, apot
Ausschließen: potic, spots, potatoe
Lösung: pot$
Einschließen: arp99, apple, zipper
Ausschließen: zoo, arive, attack
Lösung: p+
Einschließen: arcane, capper, zoology
Ausschließen: air, coper, zoloc
Lösung: arc|cap|zoo
Einschließen: 0th/pt, 3th/tc, 9th/pt
Ausschließen: 0/nm, 3/nm, 9/nm
Lösung: [0-9]th.+
Einschließen: Hawaii, Dario, Ramiro
Ausschließen: hawaii, Ian, Alice
Lösung: ^[A-Z]a.*i+
Welcher andere nützliche Befehl wird häufig verwendet, um innerhalb von Dateien zu suchen. Welche zusätzlichen Funktionalitäten hat er?
- Der Befehl
sed. Er kann Zeichen oder Zeichenfolgen in einer Datei suchen und ersetzen.
Nutzen Sie ein Beispiel aus der vorangegangenen Lektion und versuchen Sie, mit Hilfe von grep nach einem bestimmten Muster in der Ausgabe des Befehls zu suchen.
- Ich nehme eine der Lösungen aus den Offenen Übungen und suche nach der Zeile, die als Gruppenberechtigungen lesen, schreiben und ausführen hat. Ihre Antwort kann anders lauten, abhängig davon, welchen Befehl Sie gewählt und welches Muster Sie erstellt haben.
$ cat contents.txt | tr -s " " | grep "^....rwx"
Diese Übung soll Ihnen zeigen, dassgrepauch Eingaben von verschiedenen Befehlen erhalten kann und dass es beim Filtern generierter Informationen hilft.
4. Security und Kommunikation über Netzwerke
In der heutigen Zeit werden Dienste selten ohne Zugang zu einen Netzwerk oder dem Internet betrieben. Ob Kommunikation im eigenen Netz oder außerhalb dessen, ist das Wissen um die An- und Verbindung von Geräten und einzelnen Softwarekomponenten für die Kommunikation mit- und untereinander ein wichtiger Bestandteil von IT-Systemen.
Abgesehen von der Kommunikation ist es auch eine gute Praxis die Daten auf der Festplatte zu verschlüsseln, damit diese bei z. B. Verlust, Diebstahl oder Verkauf der Hardware nicht ausgelesen werden könne.
Fagen: 4.4 Der Rechner im Netzwerk
Fragen: 1.4 IKT-Fähigkeiten und Arbeiten mit Linux
Verwenden Sie in Ihrem Browser ein “privates Fenster”, um:
| völlig anonym im Internet zu surfen | |
| keine Spuren auf dem Computer zu hinterlassen, den Sie verwenden | |
| TLS zu aktivieren, um das Verfolgen von Cookies zu vermeiden | |
| DNT zu verwenden | |
| Kryptographie bei der Datenübertragung zu nutzen |
Lösung
| völlig anonym im Internet zu surfen | |
| keine Spuren auf dem Computer zu hinterlassen, den Sie verwenden | X |
| TLS zu aktivieren, um das Verfolgen von Cookies zu vermeiden | |
| DNT zu verwenden | |
| Kryptographie bei der Datenübertragung zu nutzen |
Was ist OpenStack?
| Ein Projekt für den Aufbau von privatem IaaS | |
| Ein Projekt für den Aufbau von privatem PaaS | |
| Ein Projekt für den Aufbau von privatem SaaS | |
| Ein Hypervisor | |
| Ein Open-Source-Passwortmanager |
Lösung
| Ein Projekt für den Aufbau von privatem IaaS | X |
| Ein Projekt für den Aufbau von privatem PaaS | |
| Ein Projekt für den Aufbau von privatem SaaS | |
| Ein Hypervisor | |
| Ein Open-Source-Passwortmanager |
Welche der folgenden Optionen sind gültige Festplattenverschlüsselungssoftware?
| RevealJS, EncFS und dm-crypt | |
| dm-crypt und KeePass | |
| EncFS und Bitwarden | |
| EncFS und dm-crypt | |
| TLS und dm-crypt |
Lösung
| RevealJS, EncFS und dm-crypt | |
| dm-crypt und KeePass | |
| EncFS und Bitwarden | |
| EncFS und dm-crypt | X |
| TLS und dm-crypt |
Wählen Sie wahr oder falsch für die dm-crypt Geräteverschlüsselung:
| Dateien werden verschlüsselt, bevor sie auf die Festplatte geschrieben werden | |
| Das gesamte Dateisystem ist ein verschlüsselter Blob | |
| Es werden nur Dateien und Verzeichnisse verschlüsselt, nicht Symlinks | |
| Kein Root-Zugriff erforderlich | |
| Ist eine Block-Device-Verschlüsselung |
Lösung
| Dateien werden verschlüsselt, bevor sie auf die Festplatte geschrieben werden | wahr |
| Das gesamte Dateisystem ist ein verschlüsselter Blob | wahr |
| Es werden nur Dateien und Verzeichnisse verschlüsselt, nicht Symlinks | falsch |
| Kein Root-Zugriff erforderlich | falsch |
| Ist eine Block-Device-Verschlüsselung | wahr |
Beamer ist:
| Ein Verschlüsselungsmechanismus | |
| Ein Hypervisor | |
| Eine Virtualisierungssoftware | |
| Eine OpenStack-Komponente | |
| Ein LaTeX-Präsentations-Tool |
Lösung
| Ein Verschlüsselungsmechanismus | |
| Ein Hypervisor | |
| Eine Virtualisierungssoftware | |
| Eine OpenStack-Komponente | |
| Ein LaTeX-Präsentations-Tool | X |
Was ist das Wichtigste bei der Verwendung eines Passwortmanagers?
- Beim Einsatz eines Passwortmanagers ist es am wichtigsten, sich das Master-Passwort zu merken und ein einmaliges Zufallspasswort für jeden einzelnen Dienst zu verwenden.
Verwenden Sie Ihren Webbrowser, um https://haveibeenpwned.com/ aufzurufen. Finden Sie den Zweck der Website heraus und überprüfen Sie, ob Ihre E-Mail-Adresse in einigen Datenlecks enthalten war.
- Die Website unterhält eine Datenbank mit Login-Informationen, deren Passwörter von einem Passwortleck betroffen waren. Sie bietet die Suche nach einer E-Mail-Adresse und zeigt an, ob diese E-Mail-Adresse in einer öffentlichen Datenbank mit gestohlenen Anmeldeinformationen enthalten war. Es besteht die Möglichkeit, dass auch Ihre E-Mail-Adresse von dem einen oder anderen Leck betroffen ist. Wenn dies der Fall ist, stellen Sie sicher, dass Sie Ihre Passwörter kürzlich aktualisiert haben. Wenn Sie noch keinen Passwortmanager verwenden, werfen Sie einen Blick auf die in dieser Lektion empfohlenen.
Praxis:
5. Backups und Automatisierung von Workflows
Das Absichern von laufenden Systemen ist ein wichtiger Schritt zum schnellen Fixen von Vorfällen wie Hardware-Defekten oder ausfallenden Softwarelösungen. Ein Backup z. B. in Form eines komprimierten Archives kann Daten retten und das System schnell wieder in Gang bringen.
Die Automatisierung von repetitiven Tasks, wie z. B. das Einrichten eines neuen Systems, das Automatisierte erstellen von Backups oder das Auslesen von Logs sind nur einige wenige Tätigkeiten die mit Bash-Skripten automatisiert werden können.
Fragen: 3.1 Dateien mithilfe der Befehlszeile archivieren
Fragen: 2.1 Grundlagen der Befehlszeile
Frfagen: 3.3 Von Befehlen zum Skript
Der Benutzer gibt Folgendes in seine Shell ein:
$ PATH=~/scripts $ ls Command 'ls' is available in '/bin/ls' The command could not be located because '/bin' is not included in the PATH environment variable. ls: command not found
Was hat der Benutzer gemacht?
- Der Benutzer hat den Inhalt von
PATHmit dem Verzeichnis~/scriptsüberschrieben. Der Befehllskann nicht mehr gefunden werden, da er nicht inPATHenthalten ist. Beachten Sie, dass diese Änderung nur die aktuelle Sitzung betrifft. Wenn Sie sich aus- und wieder einloggen, sind die Änderungen rückgängig gemacht.
Welcher Befehl kombiniert den aktuellen Wert von PATH mit dem neuen Verzeichnis ~/scripts?
PATH=$PATH:~/scripts
Betrachten Sie das folgende Skript. Beachten Sie, dass es elif verwendet, um nach einer zweiten Bedingung zu suchen:
> /!bin/bash
> fruit1 = Apples
> fruit2 = Oranges
if [ $1 -lt $# ]
then
echo "This is like comparing $fruit1 and $fruit2!"
> elif [$1 -gt $2 ]
then
> echo '$fruit1 win!'
else
> echo "Fruit2 win!"
> done
Die mit > markierten Zeilen enthalten Fehler. Korrigieren Sie die Fehler.
#!/bin/bash
fruit1=Apples
fruit2=Oranges
if [ $1 -lt $# ]
then
echo "This is like comparing $fruit1 and $fruit2!"
elif [ $1 -gt $2 ]
then
echo "$fruit1 win!"
else
echo "$fruit2 win!"
fi
Was wird in den folgenden Situationen ausgegeben?
$ ./guided1.sh 3 0
Apples win!
$ ./guided1.sh 2 4
Oranges win!
$ ./guided1.sh 0 1
This is like comparing Apples and Oranges!
Schreiben Sie ein einfaches Skript, das überprüft, ob genau zwei Argumente übergeben werden. Wenn ja, drucken Sie die Argumente in umgekehrter Reihenfolge. Betrachten Sie dieses Beispiel (Hinweis: Ihr Code kann anders aussehen, sollte aber zur gleichen Ausgabe führen):
if [ $1 == $number ]
then
echo "True!"
fi
Lösung
#!/bin/bash
if [ $# -ne 2 ]
then
echo "Error"
else
echo "$2 $1"
fi
Dieser Code ist korrekt, aber es handelt sich nicht um einen Zahlenvergleich. Verwenden Sie eine Internetsuche, um herauszufinden, worin sich dieser Code von der Verwendung von -eq unterscheidet.
- Mit
==werden Strings verglichen. Das heißt, wenn die Zeichen beider Variablen exakt übereinstimmen, dann ist die Bedingung wahr.
abc == abc | true |
abc == ABC | false |
1 == 1 | true |
1+1 == 2 | false |
String-Vergleiche führen zu unerwartetem Verhalten, wenn Sie auf Zahlen testen.
Es gibt eine Umgebungsvariable, die das aktuelle Verzeichnis ausgibt. Verwenden Sie env, um den Namen dieser Variable zu ermitteln.
PWD
Schreiben Sie unter Verwendung dessen, was Sie in den Fragen 2 und 3 gelernt haben, ein kurzes Skript, das ein Argument akzeptiert. Wenn ein Argument übergeben wird, überprüfen Sie, ob dieses Argument mit dem Namen des aktuellen Verzeichnisses übereinstimmt. Wenn ja, drucken Sie ja. Andernfalls drucken Sie nein.
#!/bin/bash
if [ "$1" == "$PWD" ]
then
echo "yes"
else
echo "no"
fi
Lesen Sie das folgende script1.sh:
#!/bin/bash
if [ $# -lt 1 ]
then
echo "This script requires at least 1 argument."
exit 1
fi
echo $1 | grep "^[A-Z]*$" > /dev/null
if [ $? -ne 0 ]
then
echo "no cake for you!"
exit 2
fi
echo "here's your cake!"
exit 0
Wie lautet die Ausgabe der folgenden Befehle?
Befehl: ./script1.sh
Ausgabe: This script requires at least 1 argument.
Befehl: echo $?
Ausgabe: 1
Befehl: ./script1.sh cake
Ausgabe: no cake for you!
Befehl: echo $?
Ausgabe: 2
Befehl: ./script1.sh CAKE
Ausgabe: here’s your cake!
Befehl: echo $?
Ausgabe: 0
Lesen Sie das folgende Skript script2.sh:
for filename in $1/*.txt
do
cp $filename $filename.bak
done
Beschreiben Sie den Zweck des Skripts so, wie Sie es verstehen.
- Dieses Skript erstellt Sicherungskopien aller Dateien, die mit
.txtenden, in einem Unterverzeichnis, das im ersten Argument definiert ist.
Erstellen Sie ein Skript, das beliebig viele Argumente vom Benutzer entgegennimmt, und drucken Sie nur solche Argumente, die Zahlen größer als 10 sind.
#!/bin/bash
for i in $@
do
echo $i | grep "^[0-9]*$" > /dev/null
if [ $? -eq 0 ]
then
if [ $i -gt 10 ]
then
echo -n "$i "
fi
fi
done
echo ""

Schreibe einen Kommentar