This commit is contained in:
Daniel Schubert 2019-01-17 10:00:51 +01:00
parent 251685154e
commit 57c5474434
4 changed files with 502 additions and 27 deletions

400
7.html
View File

@ -190,6 +190,10 @@ drwxrwxrwt 18 root root 114688 Jan 16 20:29 /tmp//</code></pre>
<pre class="fragment"><code>chmod 755 mein-script.sh</code></pre>
<table class="fragment"><tbody><tr><td> Recht </td><td> Wert </td><td> </td><td> Recht </td><td> Wert </td></tr><tr><td> Lesen </td><td> 4 </td><td style="border: none"> </td><td> Set-UID </td><td> 4 </td></tr><tr><td> Schreiben </td><td> 2 </td><td style="border: none"> </td><td> Set-GID </td><td> 2 </td></tr><tr><td> Ausführen </td><td> 1 </td><td style="border: none"> </td><td> Sticky </td><td> 1 </td></tr></tbody></table>
<pre class="fragment"><code>chmod 4755 skript.sh</code></pre>
<pre class="fragment"><code>
7 5 5
rwx r-x r-x
user group others </code></pre>
</section>
<section>
@ -221,6 +225,7 @@ drwxrwxrwt 18 root root 114688 Jan 16 20:29 /tmp//</code></pre>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="convex">
<h2>Part 1 - Benutzerverwaltung </h2>
</section>
<section>
<p>Es gibt 3 Arten von Benutzern:</p>
<ul>
@ -230,6 +235,7 @@ drwxrwxrwt 18 root root 114688 Jan 16 20:29 /tmp//</code></pre>
</ul>
<div class="fragment">Systembenutzer dienen als Besitzer von Diensten; anmelden als solche nicht möglich.<br> zB meist <code>www-data</code> für apache</div>
</section>
<section>
<h4>Befehle zur Nutzerverwaltung</h4>
@ -259,12 +265,11 @@ drwxrwxrwt 18 root root 114688 Jan 16 20:29 /tmp//</code></pre>
</table>
</section>
<!-- -->
<section>
<h4>Wichtige Dateien</h4>
<ul>
<li class="fragment">/etc/passwd</li>
<li class="fragment">/etc/shadow</li>
<li class="fragment">/etc/group</li>
<li class="fragment">/etc/adduser.conf</li>
<li class="fragment">/etc/skel/*</li>
@ -272,55 +277,396 @@ drwxrwxrwt 18 root root 114688 Jan 16 20:29 /tmp//</code></pre>
</section>
<section>
<h4><code>/etc/passwd</code></h4>
<pre style="font-size: .5em"><code>
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
</code></pre>
</section>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="convex">
<h2>Part 2 - Benutzerverwaltung</h2>
<section style="font-size: .5em">
<table border="0" cellspacing="5">
<tbody><tr>
<td valign="top">
<strong>Benutzername : Passwort : UID : GID : Info : Heimatverzeichnis : Shell</strong><br>
</td>
</tr>
</tbody></table>
<table border="0" cellspacing="5">
<tbody><tr>
<td valign="top">
<strong>Benutzername</strong>
</td>
<td valign="top">
Dies ist der Benutzername in druckbare Zeichen, meistens in
Kleinbuchstaben.
</td>
</tr>
<tr>
<td valign="top">
<strong>Passwort</strong>
</td>
<td valign="top">
Hier steht verschlüsselt das Passwort des Benutzers (bei
alten Systemen). Meist finden Sie dort ein <strong>x</strong>. Dies bedeutet,
dass das Passwort verschlüsselt in der Datei <font face="courier" color="#277717">/etc/shadow</font> steht.
Es ist auch möglich, den Eintrag leer zu lassen. Dann erfolgt die
Anmeldung ohne Passwortabfrage (in der Datei <font face="courier" color="#277717">/etc/shadow</font> muss
dann an Stelle des verschlüsselten Passwortes ein <font face="courier" color="#277717">*</font>
stehen).
</td>
</tr>
<tr>
<td valign="top">
<strong>UID</strong>
</td>
<td valign="top">
Die <strong>Benutzer-ID</strong> 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.
</td>
</tr>
<tr>
<td valign="top">
<strong>GID</strong>
</td>
<td valign="top">
Die <strong>Gruppen-ID</strong> des Benutzers. Auch hier muss die Zahl wie bei
der UID kleiner als 64000 sein.
</td>
</tr>
<tr>
<td valign="top">
<strong>Info</strong>
</td>
<td valign="top">
Hier kann weitere Information vermerkt werden, wie z.B. der
vollständige Name des Benutzers und persönliche Angaben
(Telefonnummer, Abteilung, Gruppenzugehörigkeit u.ä.).
</td>
</tr>
<tr>
<td valign="top">
<strong>Heimatverzeichnis</strong>
</td>
<td valign="top">
Das Heimatverzeichnis des Benutzers bzw. das
Startverzeichnis nach dem Login.
</td>
</tr>
<tr>
<td valign="top">
<strong>Shell</strong>
</td>
<td valign="top">
Die Shell, die nach der Anmeldung gestartet
werden soll. Bleibt dieses Feld frei, dann wird die Standardshell
<font face="courier" color="#aa5522">/bin/sh</font> gestartet.
</td>
</tr>
</tbody></table>
</section>
<section>
<h4><code>/etc/shadow</code></h4>
<pre style="font-size: .5em"><code>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:::
</code></pre>
<p><code>/etc/gshadow</code> : analog für Gruppen
</section>
<section style="font-size: .5em">
<table border="0" cellspacing="5">
<tbody><tr>
<td valign="top">
<strong>Benutzername : Passwort : DOC : MinD : MaxD : Warn : Exp : Dis : Res</strong><br>
</td>
</tr>
</tbody></table>
<table border="0" cellspacing="5">
<tbody><tr>
<td valign="top">
<strong>Benutzername</strong>
</td>
<td valign="top">
Dies ist der Benutzername in druckbaren Zeichen, meistens in
Kleinbuchstaben.
</td>
</tr>
<tr>
<td valign="top">
<strong>Passwort</strong>
</td>
<td valign="top">
Hier steht verschlüsselt das Passwort des Benutzers. Wenn
hier ein <strong>*</strong> oder <strong>!</strong> steht, dann bedeutet
dies, dass kein Passwort vorhanden bzw. eingetragen ist.
</td>
</tr>
<tr>
<td valign="top">
<strong>DOC</strong>
</td>
<td valign="top">
<strong>Day of last change</strong>: 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.
</td>
</tr>
<tr>
<td valign="top">
<strong>MinD</strong>
</td>
<td valign="top">
Minimale Anzahl der Tage, die das Passwort gültig ist.
</td>
</tr>
<tr>
<td valign="top">
<strong>MaxD</strong>
</td>
<td valign="top">
Maximale Anzahl der Tage, die das Passwort gültig ist.
</td>
</tr>
<tr>
<td valign="top">
<strong>Warn</strong>
</td>
<td valign="top">
Die Anzahl der Tage vor Ablauf der Lebensdauer, ab der vor
dem Verfall des Passwortes zu warnen ist.
</td>
</tr>
<tr>
<td valign="top">
<strong>Exp</strong>
</td>
<td valign="top">
Hier wird festgelegt, wieviele Tage das Passwort trotz
Ablauf der MaxD noch gültig ist.
</td>
</tr>
<tr>
<td valign="top">
<strong>Dis</strong>
</td>
<td valign="top">
Bis zu diesem Tag (auch hier wird ab dem 1.1.1970 gezählt)
ist das Benutzerkonto gesperrt
</td>
</tr>
<tr>
<td valign="top">
<strong>Res</strong>
</td>
<td valign="top">
<strong>Reserve</strong>, dieses Feld hat momentan keine Bedeutung.
</td>
</tr>
</tbody></table>
</section>
<section>
<h4><code>/etc/group</code></h4>
<pre style="font-size: .5em"><code>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
</code></pre>
</section>
<section style="font-size: .5em">
<table border="0" cellspacing="5">
<tbody><tr>
<td valign="top">
<strong> Gruppenname : Passwort : GID : Benutzernamen (Mitgliederliste)</strong><br>
</td>
</tr>
</tbody></table>
<table border="0" cellspacing="5">
<tbody><tr>
<td valign="top">
<strong>Gruppenname</strong>
</td>
<td valign="top">
Der Name der Gruppe in druckbare Zeichen, auch hier
meistens Kleinbuchstaben.
</td>
</tr>
<tr>
<td valign="top">
<strong>Passwort</strong>
</td>
<td valign="top">
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 <strong>x</strong> sagt hier aus,
das das Passwort in <font face="courier" color="#277717">/etc/gshadow</font> 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.
</td>
</tr>
<tr>
<td valign="top">
<strong>GID</strong>
</td>
<td valign="top">
<strong>Gruppen-ID</strong> der Gruppe
</td>
</tr>
<tr>
<td valign="top">
<strong>Benutzernamen</strong>
</td>
<td valign="top">
hier werden die Mitglieder der Gruppe
eingetragen. Diese sind durch ein einfaches Komma
getrennt.
</td>
</tr>
</tbody></table>
<p><code>dialout:x:16:root,tatiana,steuer,selflinux</code>
</section>
<section>
<h4><code>/etc/skel</code></h4>
Inhalt dieses Verzeichnises wird Inhalt neu erstellter Benutzer.
</section>
<section>
<span style="color: orange">Aufgabe:</span> 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.
</section>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="convex">
<h2>Part 3 - Prozessverwaltung</h2>
</section>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="convex">
<h2>Part 3 - daemons</h2>
<section>
<h4>Kommandos zur Prozessverwaltung</h4>
<p><code>ps</code> - zeigt laufende Prozesse an
<p><code>top</code> - Taskmanger, oder so ähnlich
<p><code>pidof</code> - ermittelt Prozess ID anhand d. Namen
<p><code>pstree</code> - zeigt Prozessbaum
<p><code>kill</code> - ....
<p><code>xkill</code> - kill per click
<p><code>nice, renice</code> - manipulation der Prozess-Priorität
</section>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="convex">
<h2>Part 4 - Uhrzeit und Datum</h2>
</section>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="convex">
<h2>Part 5 - Zeitgesteuerte Jobs</h2>
</section>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="convex">
<h2>Part 6 - Cron</h2>
</section>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="convex">
<h2>Part 7 - Startup / Shutdown</h2>
</section>
<section>
<div >
<p>Wat'n dat??
<pre><code>#!/bin/bash
:(){ :|:& };:</code></pre>
</div>
</section>
<section><pre><code>#!/bin/bash
# Forkbomb ;-)
bombe (){
bombe | bombe&
}
bombe
</code></pre>
</section>
</div>
</div>
<script src="lib/js/head.min.js"></script>

129
8.html Normal file
View File

@ -0,0 +1,129 @@
<!doctype html>
<html lang="de">
<meta charset="utf-8">
<title>Einführung in Linux</title>
<meta name="description" content="YALC - Yet Another Linux Course ">
<meta name="author" content="Daniel Schubert">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="css/reveal.css">
<link rel="stylesheet" href="css/theme/league.css" id="theme">
<link rel="icon" href="img/openlogo-nd-25.png" type="img/png">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="lib/css/zenburn.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
</head>
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="slides">
<section data-transition="slide" data-background="#4d7e65" data-background-transition="zoom">
<h1>LINUX</h1>
<h3>Das universelle Betriebssystem</h3>
<p>Eine Einführung - Teil 7
<p>
<small>Deutsche Angestellten Akademie</small>
</p>
<aside class="notes">
Frage: Fragen zur letzten Stunde?
</aside>
</section>
<section data-transition="slide" data-background="lightblue" data-background-transition="zoom">
<h2 style="text-shadow: 5px 4px 15px black;">Einstieg in die Systemverwaltung</h2>
</section>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="convex">
<h2>Part 3 - daemons</h2>
</section>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="convex">
<h2>Part 4 - Uhrzeit und Datum</h2>
</section>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="convex">
<h2>Part 5 - Zeitgesteuerte Jobs</h2>
</section>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="convex">
<h2>Part 6 - Cron</h2>
</section>
<section data-transition="slide" data-background="#4d7e65" data-background-transition="convex">
<h2>Part 7 - Startup / Shutdown</h2>
</section>
<section>
</section>
</div>
</div>
<script src="lib/js/head.min.js"></script>
<script src="js/reveal.js"></script>
<script>
// More info https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: true,
transition: 'slide', // none/fade/slide/convex/concave/zoom
// More info https://github.com/hakimel/reveal.js#dependencies
dependencies: [
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: 'plugin/search/search.js', async: true },
{ src: 'plugin/zoom-js/zoom.js', async: true },
{ src: 'plugin/notes/notes.js', async: true }
]
});
</script>
</body>
</html>

0
beispiele/4/mysystem.sh Executable file → Normal file
View File

0
beispiele/5/10-whiptail.sh Normal file → Executable file
View File