FHNW: sysad

Wichtige Informationen und Befehle rundum das Modul sysad an der FHNW (1. Semester).

Wichtige Informationen und Befehle rundum das Modul sysad an der FHNW (1. Semester).


Kartei Details

Karten 92
Lernende 14
Sprache Deutsch
Kategorie Informatik
Stufe Universität
Erstellt / Aktualisiert 26.10.2015 / 28.04.2025
Weblink
https://card2brain.ch/box/fhnw_sysad
Einbinden
<iframe src="https://card2brain.ch/box/fhnw_sysad/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Wie kann der Owner oder Gruppe einer Datei gewechselt werden?

  • chown benutzer datei
    nur Benutzer wird geändert
     
  • chown benutzer: datei
    Benutzer und die Gruppe wird auf die des Benutzers geändert
     
  • chown benutzer:gruppe datei
    Benutzer und Gruppe werden geändert
     
  • chown :gruppe datei
    Nur Gruppe geändert
     
  • chgrp gruppe datei
    Nur Gruppe wird geändert

Mit beiden Commands können Directories rekursiv angepasst werden: -R

Wie funktioniert chmod?

chmod [OPTION] MODE FILE

Der Mode kann Oktal erfolgen, oder via Mnemonics.
Wichtig: Das Pattern sieht folgendermassen aus: UserGroupOther

Beispiele

  • 777 => rwxrwxrwx => Für alle les-, schreib- und ausführbar
  • 400 => r - - - - - - - - => Nur für User lesbar
  • 640 => rw-r- - - - - => Für User lesbar und schreibar. Für Gruppe nur lesbar. Für Andere nichts.
  • 641 => rw-r - - - - x => Wie oben nur können andere die Datei jetzt auch ausführen.
  • g+wx => Fügt die Schreib- und Ausführrechte zur Gruppe hinzu
  • u-x => Entfernt das Recht zum Ausführen für den User
  • a=rwx => Fügt alle Rechte allen hinzu.

Merkmale des Users "root"

  • UID von root ist 0
  • User ID 0 ist ausschlaggebend für root
  • Keine Einschränkungen auf Zugriffs- und Auführungsrecht 
  • Prozesse unter root werden bevorzugt.

Benutzerverwaltung in Linux: Was sind wichtige Befehle?

Wichtig: Funktioniert nur mit root

  • adduser [--quiet] [--uid] [--gid] [--disabled-login] [--shell] [--home] username
    Im Normalfall wird als nächstes nach dem Passwort gefragt.
    Aus /etc/skel wird die Homestruktur des Users erstellt.
     
  • deluser [--quiet] [--group] [--remove-home] [--force] [--remove-all-files] [--backup] username
    Mit --group wird auch die entsprechende Gruppe gelöscht. Das Home-Dir wird nicht defaultmässig gelöscht. Return Code = 0 = successful
     
  • addgroup und delgroup sind analog zu *user Commands.
     
  • usermod [-a Append use with -G only] [-c] [-d Dir] [-g GUID] [-G Group1,Group2] [-l new login]

Beim entfernen von Usern oder Gruppen können sogenannte Ghosts/Zombies enstehen. Der User der Datei existiert nicht mehr. Mit find kann solchen Dateien gesucht werden.

Befehle damit User eigene Angaben ändern kann (Benutzerverwaltung)

  • chfn
    Full name and other information
     
  • passwd
    Passwort ändern. Root kann passwd [user] Passwort für User ändern.
     
  • chsh
    Shell ändern

Notizen aus Unterricht: (Benutzer-verwaltung/rechte)

  • Der Kernel macht die Überprüfung der Rechte
  • User ID 0 ist ausschlaggebend für root
  • falls su nicht vorhanden: sudo /bin/bash 
  • Der Wechsel mit sudo kann überprüft werden, weil dieser Wechsel geloggt wird.
  • Passwörter in /etc/shadow sind mit einem Salt versehen, damit nicht erkennbar ist, das mehrere Benutzer dasselbe PW haben.

Was sind die setuid und setgid Mechanismen?

Damit ein normaler User sein Passwort oder Shell ändern kann, muss er /etc/passwd oder /etc/shadow verändern können. Diese Files sind aber nur durch root modifizierbar. Die Commands passwd (/usr/bin/passwd) oder chsh haben beim User das setuid (s) Bit gesetzt. Der Command wird mit dem Besitzer des Files ausgeführt (bei passwd wäre es root). Dasselbe gilt auch für setgid. Diese s Bits signalisieren dem Kernel, dass der Prozess mit dem entsprechenden User / Gruppe laufen soll.

Löschen von Dateien

Um Dateien zu löschen, muss man Schreibzugriff auf das Directory haben (User, Group, World). Rechte auf der Datei beschränken nur den Zugriff auf die Datei selbst. File lesen, schreiben oder ausführen...

Anforderungen an ein Dateisystem

  • Konsistente, permanente Ablage von Dateien
  • Strukturierung der Ablage (Hierarchie, Tree, Extensions, etc.)
  • Zugriffssicherheit (Rechte/Rollen, Attribute)
  • Basisoperationen (Navigation, Datei-Manipulation)
  • Programmierbarer Zugriff (list, open, close, create, edit, delete, execute)
  • Mehrbenutzer/-prozessfähigkeit
  • Performance (Zusammenarbeit mit RAM um schneller zu sein)
  • Standardisierung (Es gibt nicht DEN Standart)

Datei Extensions in UFS (Unix File System)

Der Betriebssystemkern kennt den Typ eines Files nicht. So muss der Kern sich nur um einen Filetypen kümmern...dem Byte Stream. File Extensions sind vor allem für das UI wichtig.

Was für Filetypen gibt es unter Unix?

  • Normale Files
    -rw-r--r-- ... /etc/passwd
     
  • Directory (special)
    drwxr-xr-x 26 root root 4096 Sep 22 09:29 /
     
  • Symbolic Link (special): Referenz zu einem anderen File
    lrwxrwxrwx ... termcap -> /usr/share/misc/termcap
     
  • Named pipe (special)
    prw-rw---- ... mypipe
     
  • Socket (special): Kommunikation zwischen Prozessen. Sie können auch file descriptors senden.
    srwxrwxrwx ... /tmp/.X11-unix/X0
     
  • Device file (special): Character und Block Devices
    crw------- ... /dev/null
    brw-rw---- ... /dev/sda

Was sind File Descriptors?

Ein File Descriptor ist ein Eintrag, welcher erstellt wird, sobald ein File von einem Prozess geöffnet wurde. Diese Einträge werden vom Kernel gewartet. Descriptors verweisen auf weitere Tabellen (File und Inode), welche auflisten, was für ein File wie geöffnet wurde (read, write, append, etc.). 

Dasselbe System gilt für Sockets (Socket Descriptor). 

Einfache Erklärung: http://stackoverflow.com/questions/5256599/what-are-file-descriptors-explained-in-simple-terms 

Was ist /etc/magic ?

Es ist eine Datenbank (Datei), welche die Typen von Dateien auflistet. Diese wird benötigt, wenn z.B. der Command file ausgeführt wird, um die Typen der Dateien zu identifizieren. Dabei werden die "lead bytes / byte sequenz" untersucht.

Es können eigene Magic-Dateien im Home-Dir erstellt werden.

Was ist unter dem Begriff Mounting zu verstehen?

Einbinden von Dateisystemen an einer bestimmten Stelle (Mount Point), damit der Benutzer auf Dateien zugreifen kann. Das Gegenteil ist das Unmounten, was das Dateisystem abhängt. Wichtig: Das Dateisystem sollte unbedingt zuerst unmounted werden, bevor es entfernt wird (USB-Stick rausziehen).

Mit dem Command mount [options] device dir kann ein Dateisystem gemountet werden.

In der Regel wird root benötigt. In der /etc/fstab Datei können aber auch Devices eingetragen werden, welche normale Benutzer mounten können.

Wie können gemountete Dateisysteme gefunden werden?

Mit den Befehlen mount -l und df. df listet auch den verfügbaren Speicher auf.

Notizen: Mounting

  • Es macht durchaus Sinn, gewisse Mounts mit user/pw zu sichern, oder nur read-only zu machen.

Was versteht man unter einem Soft- und Hardlink?

Ein Softlink ist "nur" eine Referenz auf eine Datei oder ein Verzeichnis. Ein Hardlink ist ein weiterer Eintrag für die gleiche Datei.

Ein Hardlink zeigt auch immernoch auf die Datei wenn die Zieldatei an einen andreren Ort verschoben wurde. Auch wenn die Zieldatei gelöscht wird kommt man über einen Hardlink immer noch an die Datei. Bei einem Softlink erreicht man die Zieldatei nicht mehr sobald diese gelöscht oder verschoben wurde.

Wieso darf man keine Hardlinks auf Directories machen?

Hardlinks brechen die Struktur des Dateisystems. Hardlinks auf Directories können zirkuläre Verlinkungen erzeugen, was eine Gefahr für Programme ist. Softlinks erzeugen hingegen keine zirkuläre Verbindungen

Was macht der Command fsck?

Sie prüft die Konsistenz von Dateisystemen. In der Regel wird sie beim Booten automatisch gestartet. Falls eine Inkonsistenz entdeckt wird, die durch einen Computerabsturz oder Stromausfall verursacht wurde, veschriebt fsck die Datei ins lost+found. Optional kann auch eine Reparatur durchgeführt werden.

Inkonsistenz: Inode ohne korrespondierender Filename.

Jeder Autor eines Filesystems liefert in der Regel ein fsck (unter /sbin/) mit. Dadurch wird beim Aufruf von fsck, das entsprechende Program für das Dateisystem gestartet.

Für was ist das lost & found directory da?

Unter /lost+found/ legt fsck Files ab (Inode als Name), welche durch einen abrupten Halt (Absturz, Software/Hardware Malfuction), beschädigt wurden oder verloren gegangen wären.

Diese Dateien müssen im dümmsten Fall manuell wiederhergestellt werden.

Was sind Gerätedateien?

Gerätedateien werden als Schnittstelle zwischen Gerätetreibern oder Systemkomponenten und Anwendungsprogrammen, die im Usersprace (CPU Kreis) ablaufen, genutzt. Diese befinden sich unter /dev/. Bei der Auflistung werden Major- (Typ) und Minornummern (Nummerierung des Typs) dargestellt. Diese dienen zur Identifikation. Es wird zwischen block- und zeichen-orientierte (c) Geräte unterschieden.

$ ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 Jul 12 15:54 /dev/sda

Die Zugriffsrechte auf diese Dateien sind relevant. Es gibt auch sogenante Virtuelle/Pseudo-Geräte. /dev/null z.B.

Was sind die Eigenschaften der Typen von Devices?

  • Block Devices übertragen Daten in Datenblöcke und werden oft für parallele Datenübertragungen genutzt. Diese Devices speichern in der Regel Daten (Harddisks, Diskette, CD-Rom). 
  • Character Devices übertragen ein Zeichen (Byte) zur selben Zeit, sind also der seriellen Datenübertragung zuzusprechen. Dazu gehören Devices wie Maus, Drucker, etc.

Es kann vorkommen, dass ein Device beiden Typen entspricht.

Was sind Design-Kriterien für ein Dateisystem?

  • Anzahl Disks & Controller
  • Verteilung auf Partitionen
  • Blockgrösse pro Partition
    • Grosse Blöcke: schneller Zugriff auf Dateien (Durchschnittsgrösse < 4kB)
    • Kleine Blöcke: weniger interne Fragmentierung
  • Anzahl Dateien / Inodes pro Partition
    • Wenige Inodes: Mehr Platz für Dateiblöcke
    • Viele Inodes: Mehr Dateien pro Partition möglich

Ein Filesystem, dass vor allem grössere Dateien (Filme, z.B.) abspeichert, sollte grössere Blöcke haben, um die Performance zu verbessern. Dasselbe gilt in die umgekehrte Richtung wenn vorwiegend kleinere Dateien abgespeichert werden. Wenn nicht optimal genutzt, verschwendet man Platz in den Blöcken oder hat zu viele kleine Blöcke, was den Zugriff verlangsamt.

Wie sieht die Struktur des UNIX-Dateisystems aus?

  • Boot Block
    Enthält das Startprogramm (Bootloader), welcher ins RAM geladen wird, um in der Regel das Betriebssystem zu starten.
     
  • Super Block
    Dieser Teil speichert diverse Verwaltungsinformationen ab
    • Grösse des Dateisystems
    • Anzahl freier Blöcke
    • Grösse der Inode-Liste
    • Anzahl freier Inodes
    • etc.
       
  • Inode Liste
    Liste aller Inodes die auf bestimmte Datenblöcke zeigen. Ein Inode beinhaltet Meta-Informationen einer Datei.
     
  • Data Block
    Diese speichern den eigentlichen Inhalt einer Datei ab. Sie ist auf eine festgelegte Anzahl Bits/Bytes limitiert. Ein grösseres File verteilt sich also auf mehrere Datenblöcke.

Was ist ein Superblock?

Ein Superblock beinhaltet die Verwaltunginformationen eines Dateisystems. Sie wiederspiegelt den Zustand des Filesystems. Folgende Informationen sind darin abgespeichert:

  • Größe des Dateisystems
  • Anzahl freier Blöcke
  • Zeiger auf Liste der freien Blöcke
  • Zeiger auf den ersten freien Block in der Liste der freien Blöcke
  • Größe der Inode-Liste
  • Anzahl freier Inodes
  • Zeiger auf Liste der freien Inodes
  • Zeiger auf den nächsten freien Inode in der Liste der freien Inodes
  • Sperr-Felder für Liste der freien Blöcke / Inodes (zum Beispiel für defekte Blöcke)
  • Anzeigefeld, ob Superblock verändert wurde

Was ist ein Inode?

Ein Inode enthält Meta-Informationen einer Datei, sowie dessen Adressen (direkt/indirekt) auf der Disk. Inodes sind alle gleich gross.

  • Art der Datei (regular, directory, symbolic link, etc.)
  • UID + GUID
  • Zugriffsrechte
  • Access-, Modify- (file) und Change (Inode) time stamp
  • Anzahl Links (Hardlink counter)
  • Grösse der Datei
  • Verweise auf die Datenblöcke (Adressen). Es existieren direkte, sowie einfache, zweifache und sogar dreifache Verweise auf Datenblöcke.

Wichtig: Das Inode speichert den Filename NICHT ab. Aus diesem Grund können mehrere Links von der gleichen Datei existieren, ohne den Inhalt kopieren zu müssen.

Change timestamp wird manipuliert, wenn sich die Informationen im Inode ändern (chown, links). Der Modify timestamp ändert sich wenn am Inhalt etwas geändert wird. Es kann vorkommen, dass beide Timestamps geändert werden.

Wo wird der Filename abgespeichert?

  • Nicht im Inode des Files
  • Ein Directory ist eine Assoziationsliste von Filename und Inode.

Der Name der Datei wird also innerhalb der Informationsstruktur eines Directories abgespeichert.

Nützliche Befehle um mit Inodes zu arbeiten

  • stat filename
    Zeigt Inode Statistiken der Datei
     
  • ls -i
    Zeigt die Inode nummer
     
  • df -i
    Zeigt Inode Informationen für Dateisysteme
     
  • find dir -inum [Inode number] [-delete]
    Sucht nach einem File mit der Inode Nummer.

Was ist der CPU/Protection Ring?

Der Ring, auch Domain genannt, bezeichnet eine Privilegierungs- bzw. Sicherheitsstufe eines Prozesses. Diese schränkt den Prozess bezüglich des auf der CPU nutzbaren Befehlssatzes und des verwendbaren Speicherbereichs gegebenenfalls ein. Die Nutzung von Privilegierungsebenen ist sinnvoll, um die Hardware zu abstrahieren und um Prozesse voneinander abzuschotten.

Im innersten Ring (höchste Berechtigungsstufe) läuft meist das Betriebssystem, evtl. sogar nur dessen Kernel. Das Betriebssystem „darf alles“, insbesondere direkte Hardwarezugriffe und das Eingreifen in die RAM-Bereiche anderer Prozesse. Anwendungsprogramme sind üblicherweise auf den äußersten Ring beschränkt (niedrigste Berechtigungsstufe). Für Operationen, welche einen Hardwarezugriff erfordern, müssen Anwendungsprogramme Betriebssystem-Dienste beauftragen.

Startsequenz (Bootvorgang)

  1. Strom
  2. Start von BIOS / UEFI (Unified Extensible Firmware Interface)
  3. Überprüfung von Hardware (CPU, RAM, Speicher, etc.) aka Enumeration 
  4. Bootloader
    1. Laden des MBR (Master Boot Record)
    2. Laden des GRUB (Grand Unified Bootloader)
      1. Kernel auswählen oder automatischer Start
  5. Kernel starten
  6. Init ausführen /sbin/init
  7. Runlevel von 0 - konfigurierter Level starten

Stoppsequenz

  1. Alle Benutzer informieren
  2. Jetzt kann nur noch root sich einloggen
  3. Aktive Dienste abmelden und beenden
  4. Laufende Prozesse terminieren, offene Dateien schliessen etc.
  5. Benutzer ausschliessen (root kann sich nicht mehr einloggen)
  6. Disk / Caches synchronisieren (Kabel wegziehen gehen Daten verloren)
  7. Peripheriegeräte informieren und deaktivieren
  8. Shutdown-Befehl an die Rechner-Hardware

Wieso ist es gefährlich setuid oder setgid zu verwenden?

Es kann sein, dass Executables das s Bit versehentlich oder sogar absichtlich (maliciously) gesetzt haben. Der Benutzer könnte das File mit höheren Privilegien (im schlimmsten Fall sogar root) ausführen und so Schaden im System anrichten. Es ist deshalb ratsam, regelmässig nach solchen gesetzten s Bits ausschau zu halten.

  • find dir -perm +6000 (setuid + setgid)
  • find dir -perm +2000 (setgid)
  • find dir -perm +4000 (setuid)

Was ist die Idee von Runlevels?

Die Idee der unterschiedlichen Runlevel ist es, abgestufte Sicherheitsstufen bereitzustellen, in denen nur bestimmte Systemprozesse aktiv sind. Dies ist wichtig, falls beispielsweise ein System von Computerviren befallen ist und ohne Netzwerk-Anbindung laufen soll.

Typische Runlevels in UNIX

Wichtig: Viele Betriebssysteme behandeln es anders. Ubuntu z.B. hat geht nur bis 2 (6 Reboot). Es ist also kein Standard!

BIOS (Boot Sequence)

1. BIOS

  • BIOS stands for Basic Input/Output System
  • Performs some system integrity checks
  • Searches, loads, and executes the boot loader program.
  • It looks for boot loader in floppy, cd-rom, or hard drive. You can press a key (typically F12 of F2, but it depends on your system) during the BIOS startup to change the boot sequence.
  • Once the boot loader program is detected and loaded into the memory, BIOS gives the control to it.
  • So, in simple terms BIOS loads and executes the MBR boot loader.

Source: http://www.thegeekstuff.com/2011/02/linux-boot-process/ 

MBR (Boot Sequence)

2. MBR

  • MBR stands for Master Boot Record.
  • It is located in the 1st sector of the bootable disk. Typically /dev/hda, or /dev/sda
  • MBR is less than 512 bytes in size. This has three components 1) primary boot loader info in 1st 446 bytes 2) partition table info in next 64 bytes 3) mbr validation check in last 2 bytes.
  • It contains information about GRUB (or LILO in old systems).
  • So, in simple terms MBR loads and executes the GRUB boot loader.

Source: http://www.thegeekstuff.com/2011/02/linux-boot-process/ 

GRUB (Boot Sequence)

3. GRUB

  • GRUB stands for Grand Unified Bootloader.
  • If you have multiple kernel images installed on your system, you can choose which one to be executed.
  • GRUB displays a splash screen, waits for few seconds, if you don’t enter anything, it loads the default kernel image as specified in the grub configuration file.
  • GRUB has the knowledge of the filesystem (the older Linux loader LILO didn’t understand filesystem).
  • Grub configuration file is /boot/grub/grub.conf (/etc/grub.conf is a link to this).
  • As you notice from the above info, it contains kernel and initrd image.
  • So, in simple terms GRUB just loads and executes Kernel and initrd images.

Source: http://www.thegeekstuff.com/2011/02/linux-boot-process/ 

Kernel (Boot Sequence)

4. Kernel

  • Mounts the root file system as specified in the “root=” in grub.conf
  • Kernel executes the /sbin/init program
  • Since init was the 1st program to be executed by Linux Kernel, it has the process id (PID) of 1. Do a ‘ps -ef | grep init’ and check the pid.
  • initrd stands for Initial RAM Disk.
  • initrd is used by kernel as temporary root file system until kernel is booted and the real root file system is mounted. It also contains necessary drivers compiled inside, which helps it to access the hard drive partitions, and other hardware.

Source: http://www.thegeekstuff.com/2011/02/linux-boot-process/ 

Init (Boot Sequence)

5. Init

  • Looks at the /etc/inittab file to decide the Linux run level.
  • Following are the available run levels
    • 0 – halt
    • 1 – Single user mode
    • 2 – Multiuser, without NFS
    • 3 – Full multiuser mode
    • 4 – unused
    • 5 – X11
    • 6 – reboot
  • Init identifies the default initlevel from /etc/inittab and uses that to load all appropriate program.
  • Execute ‘grep initdefault /etc/inittab’ on your system to identify the default run level
  • If you want to get into trouble, you can set the default run level to 0 or 6. Since you know what 0 and 6 means, probably you might not do that.
  • Typically you would set the default run level to either 3 or 5.

Source: http://www.thegeekstuff.com/2011/02/linux-boot-process/ 

Runlevel (Boot Sequence)

6. Runlevel programs

  • When the Linux system is booting up, you might see various services getting started. For example, it might say “starting sendmail …. OK”. Those are the runlevel programs, executed from the run level directory as defined by your run level.
  • Depending on your default init level setting, the system will execute the programs from one of the following directories.
    • Run level 0 – /etc/rc.d/rc0.d/
    • Run level 1 – /etc/rc.d/rc1.d/
    • Run level 2 – /etc/rc.d/rc2.d/
    • Run level 3 – /etc/rc.d/rc3.d/
    • Run level 4 – /etc/rc.d/rc4.d/
    • Run level 5 – /etc/rc.d/rc5.d/
    • Run level 6 – /etc/rc.d/rc6.d/
  • Please note that there are also symbolic links available for these directory under /etc directly. So, /etc/rc0.d is linked to /etc/rc.d/rc0.d.
  • Under the /etc/rc.d/rc*.d/ directories, you would see programs that start with S and K.
  • Programs starts with S are used during startup. S for startup.
  • Programs starts with K are used during shutdown. K for kill.
  • There are numbers right next to S and K in the program names. Those are the sequence number in which the programs should be started or killed.
  • For example, S12syslog is to start the syslog deamon, which has the sequence number of 12. S80sendmail is to start the sendmail daemon, which has the sequence number of 80. So, syslog program will be started before sendmail.

Source: http://www.thegeekstuff.com/2011/02/linux-boot-process/