# Einführung in Linux
YALC - Yet Another Linux Course
Author: Daniel Schubert

# LINUX

### Das universelle Betriebssystem

Eine Einführung - Teil 7

Deutsche Angestellten Akademie

Frage: Fragen zur letzten Stunde?

## Einstieg in die Systemverwaltung

## Part 0 - Zugrifssrechte

    ~$ ls -l

    drwxr-xr-x    2 dany dany    4096 Nov 14 09:03 backup/
    -rw-r--r--    1 dany dany     845 Jul 24 13:45 .bash_aliases
    -rw-------    1 dany dany   32726 Jan 15 15:08 .bash_history
    -rw-r--r--    1 dany dany    2410 Nov 13 12:14 .bashrc
    drwxr-xr-x    2 dany dany    4096 Jan 15 16:05 Bilder/
    drwxr-xr-x    6 dany dany    4096 Nov 15 15:38 bin/

    drwxr-xr-x    6 dany dany    4096 Nov 15 15:38 bin/

erstes Zeichen: Filetype ( hier „d“ für directory )

Three permission triads
first triad | what the owner can do
second triad | what the group members can do
third triad | what other users can do
Each triad
first character | `r`: readable
second character | `w`: writable
third character | `x`: executable `s` or `t`: setuid/setgid or sticky (also executable) `S` or `T`: setuid/setgid or sticky (not executable)

#### Beispiele

     drwx------ 6 archie users  4096 Jul  5 17:37 Documents

Benutzer archie darf: lesen schreiben ausführen, Inhalt auflisten

     dr-x------ 6 archie users  4096 Jul  5 17:37 Documents

Benutzer archie darf: lesen ausführen, Inhalt auflisten

     d-wx------ 6 archie users  4096 Jul  5 17:37 Documents

Benutzer archie darf: in das Verz. Dateien schreiben, Dateien listen/öffnen deren Namen er kennt

     d--x------ 6 archie users  4096 Jul  5 17:37 Documents

Benutzer archie darf: Dateien listen/öffnen deren Namen er kennt

     -rw-r--r-- 1 archie users  5120 Jun 27 08:28 foobar

Benutzer archie darf: lesen/schreiben; Alle anderen dürfen lesen

ls -l
ls -n

#### Spezialrechte

##### Das das s-Bit (auch Setuid/Setgid-Bit genannt)

    ~$ ls -l /usr/bin/passwd
    -rwsr-xr-x 1 root root 54224 Aug 21  2017 /usr/bin/passwd*

##### das t-Bit (auch Sticky-Bit genannt )

    ~$ ls -ld /tmp/
    drwxrwxrwt 18 root root 114688 Jan 16 20:29 /tmp//

#### Rechte ändern

`chmod` - ändert Zugriffsrechte

`chown` - ändert Datei / Verz. Besitzer

`chgrp` - ändert die Ben. Gruppe

`umask` - zeigt und setzt default Rechte

#### chmod

    chmod +x mein-script.sh

    chmod a+x mein-script.sh

    chmod u+x mein-script.sh

    chmod ug+x mein-script.sh

    chmod -x verzeichnis

    chmod -r mein-script.sh

    chmod ugo-r mein-script.sh

    chmod a-r mein-script.sh

#### oktale Rechte-Notation

    chmod +x mein-script.sh

    chmod 755 mein-script.sh

Recht | Wert |  | Recht | Wert
Lesen | 4 |  | Set-UID | 4
Schreiben | 2 |  | Set-GID | 2
Ausführen | 1 |  | Sticky | 1

    chmod 4755 skript.sh

    	     7      5     5
    	    rwx    r-x   r-x
    	    user  group others

#### chown

    chown mhoe mein-script.sh

    chown mhoe users mein-script.sh

    chown mhoe. mein-script.sh

    chown root mein-script.sh

#### chgrp

    chgrp users mein-script.sh

#### umask

    umask -S

Gibt an welche Rechte von den Standard-Rechten abgezogen werden.
0666 für Dateien, 0777 für Verz.

0666 - 0022 = 0644

nautilus öffnen - rechte ansehen

## Part 1 - Benutzerverwaltung

Es gibt 3 Arten von Benutzern:

- normale Benuzter
- root
- System-Benutzer

Systembenutzer dienen als Besitzer von Diensten; anmelden als solche nicht möglich.
zB meist `www-data` für apache

#### Befehle zur Nutzerverwaltung

adduser | fügt einen neuen Nutzer hinzu
adduser --system | fügt einen neuen System-Nutzer hinzu
addgroup | fügt eine neue System-Grupppe hinzu
deluser | löscht ein Nutzerkonto - NICHT sein home-Verz.
usermod | ändert ein Nutzerkonto ( zb Gruppen, home-Verz., ... )

#### Wichtige Dateien

- /etc/passwd
- /etc/shadow
- /etc/group
- /etc/adduser.conf
- /etc/skel/*

#### `/etc/passwd`

    root:x:0:0:root:/root:/bin/bash
    daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
    bin:x:2:2:bin:/bin:/usr/sbin/nologin
    www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
    nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
    .....
    sshd:x:111:65534::/run/sshd:/usr/sbin/nologin
    lightdm:x:112:116:Light Display Manager:/var/lib/lightdm:/bin/false
    pulse:x:113:117:PulseAudio daemon,,,:/var/run/pulse:/bin/false
    Debian-gdm:x:117:123:Gnome Display Manager:/var/lib/gdm3:/bin/false
    dany:x:1000:1000:dany,,,:/home/dany:/bin/bash

Benutzername : Passwort : UID : GID : Info : Heimatverzeichnis : Shell

Benutzername | Dies ist der Benutzername in druckbare Zeichen, meistens in Kleinbuchstaben.
Passwort | Hier steht verschlüsselt das Passwort des Benutzers (bei alten Systemen). Meist finden Sie dort ein x. Dies bedeutet, dass das Passwort verschlüsselt in der Datei /etc/shadow steht. Es ist auch möglich, den Eintrag leer zu lassen. Dann erfolgt die Anmeldung ohne Passwortabfrage (in der Datei /etc/shadow muss dann an Stelle des verschlüsselten Passwortes ein * stehen).
UID | Die Benutzer-ID des Benutzers. Die Zahl hier sollte größer als 100 sein, weil die Zahlen unter 100 für Systembenutzer vorgesehen sind. Weiterhin muss die Zahl aus technischen Gründen kleiner als 64000 sein.
GID | Die Gruppen-ID des Benutzers. Auch hier muss die Zahl wie bei der UID kleiner als 64000 sein.
Info | Hier kann weitere Information vermerkt werden, wie z.B. der vollständige Name des Benutzers und persönliche Angaben (Telefonnummer, Abteilung, Gruppenzugehörigkeit u.ä.).
Heimatverzeichnis | Das Heimatverzeichnis des Benutzers bzw. das Startverzeichnis nach dem Login.
Shell | Die Shell, die nach der Anmeldung gestartet werden soll. Bleibt dieses Feld frei, dann wird die Standardshell /bin/sh gestartet.

#### `/etc/shadow`

    root:$6$j6bEnUnp$Vzb1mclygHlBegoYUC.DWZXvlqgokFyy7pAfFf6DqjG56hG.RzVM7BqqVl9To/2DwNqEn7Qg4SkoNliETWMIr0:17688:0:99999:7:::
    daemon:*:17672:0:99999:7:::
    www-data:*:17672:0:99999:7:::
    backup:*:17672:0:99999:7:::
    list:*:17672:0:99999:7:::
    nobody:*:17672:0:99999:7:::
    systemd-timesync:*:17672:0:99999:7:::
    systemd-network:*:17672:0:99999:7:::
    systemd-resolve:*:17672:0:99999:7:::
    systemd-bus-proxy:*:17672:0:99999:7:::
    Debian-gdm:*:17672:0:99999:7:::
    dany:$6$.Khjr2r.$6N6IJScbUcGApBT6jiWLrtkey3Mlnu6oMiCUsnrYk.T8.WpNfMrlbHOmTHAv85UchwKZ3VIlt2G9TApaUmu7j/:17672:0:99999:7:::

`/etc/gshadow` : analog für Gruppen

Benutzername : Passwort : DOC : MinD : MaxD : Warn : Exp : Dis : Res

Benutzername | Dies ist der Benutzername in druckbaren Zeichen, meistens in Kleinbuchstaben.
Passwort | Hier steht verschlüsselt das Passwort des Benutzers. Wenn hier ein * oder ! steht, dann bedeutet dies, dass kein Passwort vorhanden bzw. eingetragen ist.
DOC | Day of last change: der Tag, an dem das Passwort zuletzt geändert wurde. Besonderheit hier: Der Tag wird als Integer-Zahl in Tagen seit dem 1.1.1970 angegeben.
MinD | Minimale Anzahl der Tage, die das Passwort gültig ist.
MaxD | Maximale Anzahl der Tage, die das Passwort gültig ist.
Warn | Die Anzahl der Tage vor Ablauf der Lebensdauer, ab der vor dem Verfall des Passwortes zu warnen ist.
Exp | Hier wird festgelegt, wieviele Tage das Passwort trotz Ablauf der MaxD noch gültig ist.
Dis | Bis zu diesem Tag (auch hier wird ab dem 1.1.1970 gezählt) ist das Benutzerkonto gesperrt
Res | Reserve, dieses Feld hat momentan keine Bedeutung.

#### `/etc/group`

    cdrom:x:24:dany
    floppy:x:25:dany
    tape:x:26:
    sudo:x:27:dany
    audio:x:29:pulse,dany
    dip:x:30:dany
    www-data:x:33:
    pulse-access:x:118:
    scanner:x:119:saned,dany
    avahi:x:120:
    colord:x:121:
    saned:x:122:
    Debian-gdm:x:123:
    dany:x:1000:dany
    vboxusers:x:124:dany
    docker:x:999:dany

Gruppenname : Passwort : GID : Benutzernamen (Mitgliederliste)

Gruppenname | Der Name der Gruppe in druckbare Zeichen, auch hier meistens Kleinbuchstaben.

Passwort

Die Besonderheit hier ist folgende: Wenn das Passwort eingerichtet ist, können auch Nichtmitglieder der Gruppe Zugang zu den Daten der Gruppe erhalten, wenn ihnen das Passwort bekannt ist. Ein x sagt hier aus, das das Passwort in /etc/gshadow abgelegt ist. Der Eintrag kann auch entfallen, dann ist die Gruppe nicht durch ein Passwort geschützt. In diesem Fall kann jedoch auch kein Benutzer in die Gruppe wechseln, der nicht in diese Gruppe eingetragen ist.

GID | Gruppen-ID der Gruppe
Benutzernamen | hier werden die Mitglieder der Gruppe eingetragen. Diese sind durch ein einfaches Komma getrennt.

`dialout:x:16:root,tatiana,steuer,selflinux`

#### `/etc/skel`

Inhalt dieses Verzeichnises wird Inhalt neu erstellter Benutzer.
Aufgabe: Erstellt eine neue Gruppe "test" und einen neuen Benutzer "test-user" in der bash. Er soll Mitglied de Gruppe "test" sein. Das Home Verzeichnis soll sein in "/var/www/html/test". Der Account soll in 14 Tagen ablaufen.

## Part 3 - Prozessverwaltung

#### Kommandos zur Prozessverwaltung

`ps` - zeigt laufende Prozesse an

`top` - Taskmanger, oder so ähnlich

`pidof` - ermittelt Prozess ID anhand d. Namen

`pstree` - zeigt Prozessbaum

`kill` - ....

`xkill` - kill per click

`nice, renice` - manipulation der Prozess-Priorität

Wat'n dat??

    #!/bin/bash

    :(){ :|:& };:

    #!/bin/bash

    # Forkbomb ;-)

    bombe (){
    	bombe | bombe&
    }

    bombe