GNU / Linux für Fachinformatiker / Systemintegration
Begleitmaterialien zum Kurs
https://learning.lpi.org/pdfstore/LPI-Learning-Material-101-500-de.pdf
https://learning.lpi.org/pdfstore/LPI-Learning-Material-102-500-de.pdf
Shellgame: Terminus (vom MIT)
FISI-Training: https://fisi-training.de/lpic1-101-500-pruefungsvorbereitung-1/
BIOS-Menü zur Ansicht: https://pranx.com/bios/
GNU GRUB Dokumentation: https://www.gnu.org/software/grub/manual/grub/grub.html
Folien u. Tafelbilder
- Manuelle Installation ← Jetzt auch mit Verschlüsselung!
- Katzenbilder aus Wikipedia (für diverse Scripting-Beispiele)
Kernel Commandline Optionen: https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html
Konzept: Domain-Login
Directory Daten
- Zuordnung username <--> uid
Zuordnung user <--> gruppen
- GECOS-Feld ... eigentlich egal
- Loginshell ... eigentlich egal
- Heimverzeichnis ... halbegal, weil deterministisch
- Im Prinzip alles aus
/etc/passwd
Beispiele
- LDAP
- AD / Active-Directory / (eigentlich auch LDAP, mit Megakomplexem Schema)
- Hesiod - Directory-Daten über DNS
- NIS - Network Information Service, historisch auch Yellow Pages
/etc/
-Verzeichnis aus dem Netzwerk mounten
Inhalt von Heimverzeichnis
Entweder
/home
kommt vom Fileserver- Alle Heimverzeichnisse sind immer auf dem Client sichtbar - Sicherheitsüberlegungen!
Heimverzeichnis wird beim Login gemounted
- Mount-Mechanismus muss beim Login laufen
Beispiele
- SMB (Server Message Block) / CIFS (Common Internet File System) / Samba
- NFS (Network Filesystem) → clientseitige Sicherheit, mäh!
- SSHFS
Authentifizierung
Kann über Directory-Daten laufen
- d.h. Shadow-Datenbank auf Client-Rechner verfügbar
- → Sicherheitsüberlegungen!
- Netzwerkauthentifizierungsschema
Beispiele
- Shadow-Daten via Hesiod → Passwordhashes im ganzen Netzwerk abrufbar, mäh!
- Shadow-Daten via NIS → gleiches Problem, mäh!
- Shadow-Daten via Netzwerkmount (
/etc
) → kommt aufs Filesystem-Protokoll an, weniger mäh. - Kerberos → eigentlich cool! (aber kompliziert)
- LDAP-Authentifizierung
- SSH-Authentifizierung → warum nicht gleich verbinden, mit SSHFS :-)
- AD / Samba / (eigentlich Kerberos)
Evtl. Mechanismus um Nutzerdaten zu ändern.
- Mindestens das User-Passwort
Beispiele
- AD / Samba
- Directory-Daten via Mount (
/etc
) - Irgendwas mit PAM-Script
- Via SSH-Shell
Beispiel: Domain Login
Directory-Daten via SSHFS-Mount:
~# apt-get install sshfs libnss-extrausers
In
/etc/nsswitch.conf
für die
passwd
,group
undshadow
-Einträge, das Modul "extrausers" an zweite stelle setzen. Beispiel (ggf. abweichend):
passwd: files extrausers
group: files extrausers
shadow: files extrausers
auf dem Server "zoerwah" ist eine Userdatenbank zum Mount bereitgestellt
~# sshfs -o allow_others sshdirectory@zoerwah:/var/lib/extrausers /var/lib/extrausers
- Passwort:
sshdir
- "allow_others" ist nötig, damit Benutzer z.B. ihre eigene user-id nachschlagen können
- Passwort:
~# getent passwd
listet jetzt neben den eigenen Usern, auch den Account "netzwerk"Am Terminal kann man sich jetzt mit "netzwerk" (Passwort "netzwerk") anmelden
- Der User loggt sich an der lokalen maschine ein. Diese erhält alle Benutzerdaten von dem SSHFS-Mount.
- Der User hat auf der lokalen Maschine noch kein Heimverzeichnis
"Reboot-fester" SSHFS-Mount
- Passworteingabe während des Reboots ist inakzeptabel
- ssh-keys!
~# ssh-keygen
~# ssh-copy-id sshdirectory@zoerwah
- In
/etc/fstab
sshfs#sshdirectory@zoerwah:/var/lib/extrausers/ /var/lib/extrausers fuse auto,_netdev,allow_other 0 0
User-Home beim Login mounten
~# apt-get install libpam-mount
;~# pam-auth-update
- (
pam-auth-update
sieht schöner aus, wenndialog
installiert ist)
- (
- Configfile
/etc/security/pam_mount.conf.xml
:
<pam_mount>
<mkmountpoint enable="1" remove="true">
<volume path="sshfs#%(USER)@zoerwah:/home/%(USER)" mountpoint="/home/%(USER)" fstype="fuse" options="password_stdin,allow_other,nonempty" noroot="0" />
← Einzige Zeile, die dazu kommt
</pam_mount>
Befehle
iptables Beispiele
- Doku: https://wiki.archlinux.org/title/Iptables
WAN=usb1 LAN=eth0
iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
iptables -A FORWARDING -i $WAN -m conntrack --ctstatus CONFIRMED -j ACCEPT
iptables -A FORWARDING -i $WAN -j REJECT
Arbeit mit Dateien und Ordnern
- touch
- mkdir
- mv
- cp
rm
,rm -r
- rmdir
ln
,ln -s
Zugriffsrechte
- chmod
- chown
- chgrp
umask
(Shell-Builtin)
ugo _u_ _g_ _o_
SST rwx rwx rwx
421 421 421 421
_______________Sonderbits (Feld ganz vorne)
SST 4 2 1
S S T
Basiswerkzeuge
- cat
- echo
- man
- less
printf
,printf '%s\n'
Dateisysteme
- mount
- umount
- lsblk
df
,df -h
Prozesse / Jobkontrolle
- pidof
bg
,fg
,jobs
- kill
- htop, top
ps
,ps -e
Paketsystem / Softwareinstallation
- synaptic
dpkg
,dpkg --get-selections
dpkg-query -l
apt-get
,apt-get update
,apt-get upgrade
,apt-get dist-upgrade
apt-get install ...
,apt-get remove ...
,apt-get autoremove
apt-mark showmanual
,apt-mark showauto
dpkg-reconfigure ...
Systemadministration
- sudo
su
,sudo su
- chroot
Variablen
env
export FOO="bar"
set
Benutzerkonten
adduser username
,adduser username gruppe
groups
whoami
id
Netzwerk
ip address
ip route
ip neighbour
,arp
dig
,nslookup
ping
traceroute
,mtr
telnet
,netcat
,nc
,ncat
nmap
ncat -l ... ...
netstat -t
Konfigurationsdateien
Systemweit
- /etc/passwd
- /etc/group
- /etc/shadow
Benutzer
- ~/.xsessionrc
- ~/.bashrc
Netzwerk
/etc/resolv.conf
Begriffe
Klammern
- Geschweifte Klammern
{}
Braces - Eckige Klammern
[]
Brackets - Spitze Klammern
<>
Tags - "Normale" Klammern / Runde Klammern
()
Parentheses / "Parens"
Andere
Stammverzeichnis / Root-Verzeichnis / Wurzelverzeichnis
- Vorsicht: Heimverzeichnis von Root != Root-Verzeichnis
- Softlink / Symlink / Semantischer Link / Symbolischer Link
- Permissions / Zugriffsrechte / (Datei-)Berechtigungen / Zugriffsmodus
- Shared Object (.so) / Dynamically Linked Libraries (.dll) / Programmbibliotheken / Funktionsbibliotheken / Dynamische Libraries / Shared Libraries
Umgebungsvariable / Environment-Variable / "exportierte" Variable
- zu unterscheiden von: Shellvariable
Shellexpansionen ("Parameter Expansion")
Hilfmittel zum Ausprobieren und Nachschlagen
printf '== %s ==\n' x y z foo bar schnabbeldiwauwau
man dash
(für Basissyntax aller Shells)man bash
(dokumentiert auch einige Bash-Erweiterungen)
Shellglobs / Wildcard / Platzhalter
echo *
echo *[Ss]traße*
echo *.???
Brace Expansion (Bash Only!)
Schnabbeldi{wauwau,wuffwuff}
,foo-{bar,qua,quux}
touch {1..100}
Reguläre Ausdrücke
Umgangssprache: Regular Expression / Regulärer Ausdruck / RegEx / RE
Plural: RegExes / RegExen (auch im englischen, idR. humoristisch)
Einzelne Zeichen
a
,b
,C
,0
usw. Buchstaben und Ziffern stehen einfach für sich selbst,a
"matcht" den Buchstabena
usw.<
,~
,"
Etliche Sonderzeichen haben keine spezielle Bedeutung und stehen wie Buchstaben und Ziffern für sich selbst..
Der Punkt steht für ein beliebiges Zeichen\.
Mit einem vorangestellten Backslash ist es wieder einfach nur ein Punkt\?
,\+
,\*
,\\
Gleiches gilt für andere Zeichen, die sonst eine besondere Bedeutung erhalten^
steht (außerhalb von eckigen Klammern) für den Zeilenanfang$
steht für das Zeilenende
Beispiel: Esel
ist eine Abfolge von Buchstaben und trifft auf das Wort "Esel" zu. E.el
trifft auf "Esel", "Egel", "Ekel" zu, aber auch auf Fantasieworte wie "Exel" oder "E%el".
Bracket Expressions
[abc]
Ausdrücke in eckigen Klammern treffen auf ein beliebiges Zeichen aus der angegebenen Menge zu[a-m]
,[A-Z]
,[3-9]
Die Menge in eckigen Klammern kann auch als Zeichenbereich (Character Range) angegeben werden[0-9a-z]
Es dürfen mehrere Ranges auftauchen[^0-9]
, [^aeou] Ist das erste Zeichen ein^
(Circumflex), wir die Menge negiert, sie steht dann für ein beliebiges Zeichen, außer für die angegebenen[-+*/]
Enthält eine Menge ein Minuszeichen, muss dies am Anfang oder Ende stehen, so dass die Menge nicht als Range erkannt wird[])}>]
,[^])}>]
enthält eine Menge selbst eine schließende eckige Klammer (]
) muss diese ganz am Anfang stehen[*+^$]
Innerhalb eckiger Klammern verlieren die meisten Sonderzeichen ihre besondere Bedeutung (so als stünde ein\
davor).
Quantifizierer und Grenzen (Bounds)
Ein Bound kann einem Atom (d.h. einem "Teil des Ausdrucks", einem Zeichen, einer Bracket Expression, etc. folgen) folgen (z.B. m+
, oder [^a-z]?
)
?
Das vorhergehende Atom kann einmal vorkommen, muss aber nicht+
Das vorhergehende Atom kann einmal oder mehrmals (beliebig oft) vorkommen*
Das vorhergehende Atom kann beliebig oft, oder gar nicht vorkommen- {5} Das Atom kommt genau fünfmal vor
- {2,14} Das Atom kommt mindestens zweimal, höchstend vierzehnmal vor
- {2,} Das Atom kommt mindestens zweimal oder beliebig viel häufiger vor
- {,14} Das Atom kommt höchstens vierzehnmal vor, braucht aber gar nicht oder weniger häufig auftauchen
Unterausdrücke (Sub-expressions)
(foobar)
ist zunächst einmal das gleiche wiefoobar
(foobar)+
ist eine beliebig häufige Wiederholung des Wortesfoobar
foobar+
dagegen wäre eine beliebige Wiederholung des Buchstabenr
im Wortfoobar
- → Runde Klammern fassen eine Zeichenfolge zu einem Atom zusammen
(foobar|schnabbeldiwauwau)
steht für das Wortfoobar
oder das Wortschnabbeldiwauwau
Beispiel: ([gG]roß|[kK]lein)+
- Eine beliebige Folge der Worte Groß
und Klein
jeweils mit großem oder kleinem Anfangsbuchstaben.