<!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 0 - Zugrifssrechte </h2> </section> <section> <pre><code>~$ 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/ </code></pre> </section> <section> <pre><code>drwxr-xr-x 6 dany dany 4096 Nov 15 15:38 bin/</code></pre> <p style="font-size: .6em">erstes Zeichen: Filetype ( hier „d“ für directory )</p> <table style="font-size: .6em" > <caption> </caption> <tbody><tr> <th colspan="2" style="text-align: left">Three permission triads </th></tr> <tr> <td style="text-align: right; vertical-align: text-top;">first triad</td> <td>what the owner can do </td></tr> <tr> <td style="text-align: right; vertical-align: text-top;">second triad</td> <td>what the group members can do </td></tr> <tr> <td style="text-align: right; vertical-align: text-top;">third triad</td> <td>what other users can do </td></tr> <tr> <th colspan="2" style="text-align: left">Each triad </th></tr> <tr> <td style="text-align: right; vertical-align: text-top;">first character</td> <td><tt>r</tt>: readable </td></tr> <tr> <td style="text-align: right; vertical-align: text-top;">second character</td> <td><tt>w</tt>: writable </td></tr> <tr> <td style="text-align: right; vertical-align: text-top;">third character</td> <td><tt>x</tt>: executable<br><tt>s</tt> or <tt>t</tt>: <a href="/wiki/Setuid" title="Setuid">setuid</a>/<a href="/wiki/Setgid" class="mw-redirect" title="Setgid">setgid</a> or <a href="/wiki/Sticky_bit" title="Sticky bit">sticky</a> (also executable)<br><tt>S</tt> or <tt>T</tt>: setuid/setgid or sticky (not executable) </td></tr></tbody></table> </section> <section> <h4>Beispiele</h4> <pre><code> drwx------ 6 archie users 4096 Jul 5 17:37 Documents </code></pre> <p style="font-size:.5em"> Benutzer archie darf: lesen schreiben ausführen, Inhalt auflisten </p> <div class="fragment"> <pre><code> dr-x------ 6 archie users 4096 Jul 5 17:37 Documents </code></pre> <p style="font-size:.5em"> Benutzer archie darf: lesen ausführen, Inhalt auflisten </p> </div> <div class="fragment"> <pre><code> d-wx------ 6 archie users 4096 Jul 5 17:37 Documents </code></pre> <p style="font-size:.5em"> Benutzer archie darf: in das Verz. Dateien schreiben, Dateien listen/öffnen deren Namen er kennt </p> </div> <div class="fragment"> <pre><code> d--x------ 6 archie users 4096 Jul 5 17:37 Documents </code></pre> <p style="font-size:.5em"> Benutzer archie darf: Dateien listen/öffnen deren Namen er kennt </p> </div> <div class="fragment"> <pre><code> -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar </code></pre> <p style="font-size:.5em"> Benutzer archie darf: lesen/schreiben; Alle anderen dürfen lesen </p> </div> <aside class="notes"> ls -l <br> ls -n </aside> </section> <section> <h4>Spezialrechte</h4> <div class="fragment"> <h5>Das das s-Bit (auch Setuid/Setgid-Bit genannt)</h5> <pre><code>~$ ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 54224 Aug 21 2017 /usr/bin/passwd* </code></pre> </dir> <div class="fragment"> <h5> das t-Bit (auch Sticky-Bit genannt )</h5> <pre><code>~$ ls -ld /tmp/ drwxrwxrwt 18 root root 114688 Jan 16 20:29 /tmp//</code></pre> </dir> </section> <section> <h4>Rechte ändern</h4> <p><code>chmod</code> - ändert Zugriffsrechte <p><code>chown</code> - ändert Datei / Verz. Besitzer <p><code>chgrp</code> - ändert die Ben. Gruppe <p><code>umask</code> - zeigt und setzt default Rechte </section> <section> <h4>chmod</h4> <pre class="fragment"><code>chmod +x mein-script.sh</code></pre> <pre class="fragment"><code>chmod a+x mein-script.sh</code></pre> <pre class="fragment"><code>chmod u+x mein-script.sh</code></pre> <pre class="fragment"><code>chmod ug+x mein-script.sh</code></pre> <pre class="fragment"><code>chmod -x verzeichnis</code></pre> <pre class="fragment"><code>chmod -r mein-script.sh</code></pre> <pre class="fragment"><code>chmod ugo-r mein-script.sh</code></pre> <pre class="fragment"><code>chmod a-r mein-script.sh</code></pre> </section> <section> <h4>oktale Rechte-Notation</h4> <pre class="fragment"><code>chmod +x mein-script.sh</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> <h4>chown</h4> <pre class="fragment"><code>chown mhoe mein-script.sh</code></pre> <pre class="fragment"><code>chown mhoe users mein-script.sh</code></pre> <pre class="fragment"><code>chown mhoe. mein-script.sh</code></pre> <pre class="fragment"><code>chown root mein-script.sh</code></pre> </section> <section> <div class="fragment"> <h4>chgrp</h4> <pre><code>chgrp users mein-script.sh</code></pre> </div> <div class="fragment"> <h4>umask</h4> <pre><code>umask -S</code></pre> <p style="font-size: .6em">Gibt an welche Rechte von den Standard-Rechten abgezogen werden.<br> 0666 für Dateien, 0777 für Verz.</p> <p style="font-size: .6em">0666 - 0022 = 0644</p> </div> <aside class=notes> nautilus öffnen - rechte ansehen </aside> </section> <section> <span style="color: orange">Aufgabe:</span> Erstellt ein neues Verzeichnis "test". In diesem Verzeichnis eine Datei <code>foo.bar</code>. Ändert den Besitzer des Verz. auf root. Entzieht dem Verzeichnis die Leserechte für alle ausser den Besitzer. Versucht die Datei zu löschen. </section> <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> <li class="fragment">normale Benuzter</li> <li class="fragment">root</li> <li class="fragment">System-Benutzer</li> </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> <table style="font-size: .7em"> <tbody> <tr> <td>adduser</td> <td>fügt einen neuen Nutzer hinzu</td> </tr> <tr> <td>adduser --system</td> <td>fügt einen neuen System-Nutzer hinzu</td> </tr> <tr> <td>addgroup</td> <td>fügt eine neue System-Grupppe hinzu</td> </tr> <tr> <td>deluser</td> <td>löscht ein Nutzerkonto - NICHT sein home-Verz.</td> </tr> <tr> <td>usermod</td> <td>ändert ein Nutzerkonto ( zb Gruppen, home-Verz., ... )</td> </tr> </tbody> </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> </ul> </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 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> <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> <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> <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>