% <#>-----------------------------------------------------------------------<#> \section{Verzeichnisstrukturen}% \label{sec:verzeichnisstrukturen} Das Konzept der Verzeichnisstruktur von Unix-artigen Betriebssystemen ist annähernd identisch. Es gibt jedoch Besonderheiten zwischen den einzelnen Abspaltungen von Unix hinsichtlich Linux und BSD, als auch der jeweiligen Distributionen und Abspaltungen: Debian, RHEL, OpenBSD etc. Da jedoch die Vielfalt zu groß für dieses Kapitel wäre, werden diese hier nicht näher behandelt. % >---------------------------------------------------------------------------< \subsection{/ (root directory, Wurzelverzeichnis)}% \label{sec:verzeichnisstrukturen.root} % NOTE: Missing reference to chapter where devices will be mounted Das Wurzelverzeichnis \textit{/} ist die oberste Verzeichnisebene. Es enthält alle weiteren Unterverzeichnisse und Dateien unabhängig, ob diese sich auf einem physikalisch anderen Gerät befinden. Dazu später mehr. % >---------------------------------------------------------------------------< \subsection{/bin/}% \label{sec:verzeichnisstrukturen.bin} Systemrelevante Programme, beispielsweise jene, welche Bestandteil der GNU Core Utility Collection sind werden in dem Verzeichnis \textit{/bin/} gespeichert. Dies sind zum Beispiel \textit{chmod}, \textit{chown}, \textit{chgrp}, \textit{id}, \textit{cp}, \textit{mv} oder \textit{rm}. Im Regelfall sind alle Programme, welche notwendig sind das System erfolgreich zu booten im Verzeichnis \textit{/bin/} hinterlegt. % >---------------------------------------------------------------------------< \subsection{/boot/}% \label{sec:verzeichnisstrukturen.boot} In dem Verzeichnis \textit{/boot/} befindet sich der Linux Kernel. Der Linux Kernel wird als Datei gespeichert. Im Dateinamen aller unterschiedlichen Kernelversionen befindet sich in der Regel die folgende Zeichenkette, wenn je nach Distribution diese nicht überschrieben wurde: \textit{vmlinux}. % NOTE: Missing reference to chapter where linux system will be booted Neben dem Kernel befindet sich in dem Verzeichnis passend zu den installierten Kernelversionen noch die Datei \textit{initramdisk}. Sie wird in den \acrshort{acr:ram} während des Bootvorgangs geladen und startet den Kernel. Mehr zum Bootvorgang unter Linux in einem späteren Kapitel. % >---------------------------------------------------------------------------< \subsection{/boot/EFI/}% \label{sec:verzeichnisstrukturen.efi} Das Verzeichnis \textit{/boot/EFI} ist ausschließlich bei Systemen vorhanden, welches statt der \acrshort{acr:bios} Bootmethode \acrshort{acr:uefi} verwendet. Das Verzeichnis beinhalter die unterschiedlichen Bootloader. Beispielweise den von Windows, GRUB oder systemd-boot. Ratsam ist es daher das Verzeichnis \textit{/boot/EFI} als seperate Partition zu behandeln, sodass wenn mehrere Systeme installiert sind ein und die selbe EFI Partition verwendet werden kann. Dies hat den Vorteil, dass ausschließlich eine Partition in der Firmware des Motherboards angeben werden muss, damit die Firmware die entsprechenden Bootloader von den jeweiligen Systemen findet. % >---------------------------------------------------------------------------< \subsection{/dev/}% \label{sec:verzeichnisstrukturen.dev} Physische als auch virtuelle Peripheriegeräte, beispielsweise die physisch verbaute oder dem Gastsystem zugewiesene virtuelle Festplattte, werden neben anderen Geräten im Verzeichnis \textit{/dev/} als Datei abgebildet. Siehe Kapitel \ref{sec:benutzer-gruppen-und-berechtigungen.dateiberechtigungen.einfach}, um aus der Attributszeichenkette erkennen zu können, bei welcher Datei es sich um ein Blockdevice handelt. Auf diese speziellen Dateien kann anschließend mit anderen Programmen zugegriffen werden. Beispielsweise das Einbinden eines Blockgerätes (Festplatte) an einen beliebigen Einbindungspunkt - siehe \textit{mount} Befehl. % >---------------------------------------------------------------------------< \subsection{/etc/}% \label{sec:verzeichnisstrukturen.etc} In dem Verzeichnis \textit{/etc/} sind Konfigurationsdateien von Programmen enthalten. Im Regelfall werden diese durch die Entwickler bereitgestellt. Beispielsweise durch Installation des entsprechenden \acrshortpl{acr:rpm}. Sind keine Konfigurationsdateien für ein Programm im Verzeichnis \textit{/etc/} vorhanden. Können diese auch unter \textit{/usr/} gespeichert sein. Ein manuelles platzieren der Konfigurationsdateien unter \textit{/etc/} würde das Standardverhalten des Programms übersteuern. % >---------------------------------------------------------------------------< \subsection{/home/}% \label{sec:verzeichnisstrukturen.home} Es ist das Standardverzeichnis für normale bzw. reale Benutzer. Dieses Verzeichnis wird manchmal auch mit anderen Linux-Distributionen geteilt, sofern das gleiche Heimatverzeichnis von mehreren Benutzern unterschiedliche Distributionen verwendet werden soll. % >---------------------------------------------------------------------------< \subsection{/lib/}% \label{sec:verzeichnisstrukturen.lib} Bibliotheken, welche gemeinsam durch mehrere Programme, welche sich in den Verzeichnissen \textit{/bin/} und \textit{/sbin} befinden, geteilt werden, werden im Verzeichnis \textit{/lib} gespeichert. % >---------------------------------------------------------------------------< \subsection{/media/}% \label{sec:verzeichnisstrukturen.media} In dem Verzeichnis \textit{/media/} werden entfernbare Dateisysteme eingebunden. Beispielsweise der USB-Stick, eine USB-Festplatte oder eine CD bzw. DVD, welche sich im Laufwerk befindet. Desktopmanager wie Gnome, Cinnamon, Xfce oder KDE übernehmen hier die Funktion, das Gerät automatisch unter \textit{/media/} einzubinden. % >---------------------------------------------------------------------------< \subsection{/mnt/}% \label{sec:verzeichnisstrukturen.mnt} Andere Systempartitionen, beispielsweise die C: oder D: Partition von Windowssystemen auf einem Dualboot System, werden unter \textit{/mnt/} eingebunden. Im Regelfall auch nur temporär, beispielsweise wenn der Systemadministrator versucht unter Linux auf die Windowspartitionen zu zugreifen. % >---------------------------------------------------------------------------< \subsection{/opt/}% \label{sec:verzeichnisstrukturen.opt} Das Verzeichnis \textit{/opt} ist das Standardverzeichnis für proprietäre Programme und steht für \textit{optional package tree}. In diesem Verzeichnis legen daher im Regelfall proprietäre Programme Binär-, Konfigurations-, und Bibliotheksdateien ab. Beispielsweise, wenn man einen TeamSpeak 3 Server oder Druckertreiber von Brother installieren möchte, werden diese unter \textit{/opt} installiert. % >---------------------------------------------------------------------------< \subsection{/root/}% \label{sec:verzeichnisstrukturen.root} Der Benutzer \textit{root} besitzt sein eigenes Heimatverzeichnis direkt unterhalb des Wurzelverzeichnisses. Es ist das Verzeichnis \textit{/root/}. Es wird gesondert geführt und ausschließlich der Benutzer \textit{root} besitzt Berechtigungen von dem Verzeichnis zu lesen und zu schreiben als auch es betreten zu können. % >---------------------------------------------------------------------------< \subsection{/run/}% \label{sec:verzeichnisstrukturen.run} Programme, welche ausgeführt werden und Informationen auslagern speichern diese im Verzeichnis \textit{/run/}. Dies können beispielsweise Unix-Sockets oder auch temporäre Einstellungsparameter sein, welche nur zur Laufzeit des Programms vorhanden sind. Die Dateien werden nicht im Verzeichnis \textit{/tmp/} gespeichert, da Dateien und Verzeichnisse unter \textit{/tmp/} automatisch entfernt werden können. Beispielsweise, wenn das System bemerkt der Speicherplatz geht zur Neige. Der Dienst \textit{systemd-resolved} speichert als gutes Beispiel unter \textit{/run/systemd/resolve/resolv.conf} die \textit{resolv.conf} Datei ab, welche von \textit{/etc/resolv.conf} per symbolischen link referenziert wird. % >---------------------------------------------------------------------------< \subsection{/sbin/}% \label{sec:verzeichnisstrukturen.sbin} Das Verzeichnis \textit{/sbin} ist identisch zu dem Verzeichnis \textit{/bin}. Es enthält jedoch ausschließlich Programme welche für den Benutzer \textit{root} vorgesehen sind. % >---------------------------------------------------------------------------< \subsection{/srv/}% \label{sec:verzeichnisstrukturen.srv} Stellt das System beispielsweise Mail-, Web- oder andere Dienste bereit, werden die persistenten Daten unter \textit{/srv/} gespeichert. Dieses Verzeichnis ist nicht automatisch Bestandteil jeder Distribution. Es kann daher sein, das gerade bei Distributionen, welche einen minimalistischen Ansatz fahren nicht vorhanden ist. % >---------------------------------------------------------------------------< \subsection{/tmp/}% \label{sec:verzeichnisstrukturen.tmp} Das \textit{/tmp/} Verzeichnis ist der generelle Speicherort für temporäre Dateien. Ältere Systeme verwenden eine eigene Partition für das Verzeichnis \textit{/tmp/}, um die Größe zu limitieren. Neuere Systeme, welche systemd verwenden, richten das Verzeichnis \textit{/tmp/} als \nameref{sec:dateisysteme.tmpfs} Dateisystem ein und limitieren dieses auf eine prozentuale Größe. % >---------------------------------------------------------------------------< \subsection{/usr/}% \label{sec:verzeichnisstrukturen.usr} Anwendungen und Dateien die von realen Benutzern verwendet werden, werden im Gegensatz zu Anwendungen und Dateien welche vom System verwendet werden, unter \textit{/usr/} gespeichert. Aus diesem Grund sind unterhalb von \textit{/usr/} auch Verzeichnisse wie \textit{/usr/bin}, \textit{/usr/sbin} oder \textit{/usr/lib} enthalten. Alle Unterverzeichnisse von \textit{/usr/} sind für Benutzer nur lesbar und betretbar. Dateien sind in der Regel ebenfalls nur lesbar eventuell noch ausführbar. % >---------------------------------------------------------------------------< \subsection{/var/}% \label{sec:verzeichnisstrukturen.var} Der Grundgedanke des Verzeichnisses \textit{/var/} ist, dass es das Gegenstück zu \textit{/usr/} abbilden soll. Hier können Benutzer beliebig Dateien oder Verzeichnisse erstellen. Allerdings sind können diese Eingeschränkt sein. Ein gutes Beispiel sind Logdateien. Würden Logdateien eines Programms, welche aus dem Verzeichnis \textit{/usr/bin} oder \textit{/usr/sbin} ausgeführt werden, in das Verzeichnis \textit{/usr/} speichern, würde dies gegen das Konzept des Verzeichnisses \textit{/usr/} sprechen. Aus diesem Grund werden Logdateien in das Verzeichnis \textit{/var/log} gespeichert.