LINUX

Das universelle Betriebssystem

Eine Einführung - Teil 7

Deutsche Angestellten Akademie

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

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

Aufgabe: Erstellt ein neues Verzeichnis "test". In diesem Verzeichnis eine Datei foo.bar. Ändert den Besitzer des Verz. auf root. Entzieht dem Verzeichnis die Leserechte für alle ausser den Besitzer. Versucht die Datei zu löschen.

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