Upload
others
View
18
Download
0
Embed Size (px)
Citation preview
LIN1 Linux-Grundlagen
Georg SchönbergerThomas-Krenn.AGVersion 12. Oktober 2015
2LIN1 LVA
Kurz über mich...
Studium Computer- und Mediensicherheit
Gitter-basierende Kryptosysteme
Studium Sichere Informationssysteme
Auslagerung der IPSec-Verschlüsselung auf Grafikkarten
JobsF&E in HagenbergThomas-Krenn.AGAutor (IT-Administrator, Linux)
3LIN1 LVA
Und meine Arbeit bei TK
Thomas-Krenn.AG deutscher→Server-Hersteller in FreyungTätigkeiten u.a.
Betreuung DRBD-Cluster mit LXC-ContainerEntwicklung von Monitoring-PluginsEntwicklung von Performance-Tests
http://git.thomas-krenn.com Verbesserung der internen/externen Sicherheit
ZertifizierungenNetwork+, Server+, Linux Essentials, LPIC-1, LPIC-2
4LIN1 LVA
Die LVA
Vorlesung mit integrierter ÜbungNoten teilgenommen/nicht teilgenommen→Themen
Grundlagen zu LinuxDebian/Ubuntu GrundlagenCrashkurs Shell/BashVIM How-ToBenutzer und Gruppen, Rechtemgmt.DiensteUvm.
5LIN1 LVA
Was ist Linux?
HistorieFreie SoftwareDistributionen
6LIN1 LVA
Was ist Linux?
Grundlegend: ein BetriebssystemIst der OS-Kernel
Windows besitzt auch einen KernelMonolitischer vs. Micro-Kernel
Unix (BSD)Unix-like (Linux)vs.MINIXGNU Hurd Debian GNU Hurd→
S.a. What is linux (linuxfoundation.org)
Tux2.png (commons.wikimedia.org)
7LIN1 LVA
Linus_Torvalds.jpeg (commons.wikimedia.org)
Wikimania_stallman_keynote2.jpg (commons.wikimedia.org)
8LIN1 LVA
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.Linux Torvalds, Linux History (cs.cmu.edu)
9LIN1 LVA
Was ist Linux - Begriffe
GNURichard StallmanUtilities wie bash (Bourne again Shell)
GNU/LinuxKomplettes BetriebssystemKernel + Kommandozeilen-Werkzeuge
Bold GNU Head (gnu.org)
10LIN1 LVA
Linux Historie
1991 Linux Torvalds in Helsinki
comp.os.minix (groups.google.com)Kernel + Stallman GNU ToolsGrundlage: Minix + GNU C Compiler
Linux bezeichnete zu Beginn eigentlich nur den Kernel
+ Tools GNU/Linux→ Linus_Torvalds.jpeg (commons.wikimedia.org)
11LIN1 LVA
Freie Software
Wesentlich sind 4 Freiheiten1) Programm ausführen2) Quellcode untersuchen und
ändern3) Exakte Kopien verbreiten4) Modifizierte Versionen
verbreitenS.a Philosophie des GNU-Projekts (gnu.org)Wichtigste Lizenz GNU General →Public License (GPL)
Wikimania_stallman_keynote2.jpg (commons.wikimedia.org)
12LIN1 LVA
Freie Software
Versucht nicht den Gebrauch der Software einzuschränkenVeränderungen und Weitergabe der Software wird an Bedingungen gekoppeltSoftware, die ein Mal unter GPL steht, soll unter GPL bleiben
Muss im Quellcode zur Verfügung stehenOriginal und geändertes weitergeben unter GPL→In „ausführbarer“ Form verkaufen Quellcode mitliefern→
Im Gegensatz dazu BSD-LizenzKann auch nur in „ausführbarer“ Form weitergegeben werden
Apache Lizenz ähnelt der BSD-Lizenz
13LIN1 LVA
Distributionen
High-Level Sammlung von KomponentenKernel + OS-Werkzeuge + GUI-Umgebungen + Applikationen
Zeichnen sich aus durchInstallations-Medien für System-Installation und -KonfigurationBereitstellung von Applikationen
Paket-Management
Debian-OpenLogo.svg
Ubuntu_logo_orange.png
Gentoo_Linux_logo_matte.svg
Quelle: commons.wikimedia.org
Bsd_daemon.jpg (upload.wikimedia.org)
14LIN1 LVA
Linux und Android
Android Architecture (howtogeek.com)
15LIN1 LVA
Linux und Android
Android und GNU/Linux haben „nur“ den Kernel gemeinsamViele Closed Source Komponenten
Android and Users Freedom (gnu.org)Google AppsGoogle Play enthält zumeist auch keine Open Source Software
Alternativf-droid (f-droid.org), ein App-Market nur mit Open Source AppsReplicant, eine Open Source Android Firmware
CyanogenMod basiert auf AOSP, enthält aber auch non-free Teile
16LIN1 LVA
Linux Vor- und Nachteile
VorteileFrei, keine Lizenzgebühren
Source Code kann studiert werden (vgl. zu Windows und OS X)
Benutzer-CommunityForen, Mailing-Listen
Performant, stabilRasche Entwicklung (evtl. auch Nachteil)Paket-Systeme (apt, yum, pacman)
NachteileDistributionen besitzen EigenheitenEinarbeitungsaufwand
17LIN1 LVA
Linux Literatur
Linux - das umfassende Handbuch (openbook.galileo.de)The Linux Documentation Project (tldp.org)Dokumentations-Webseiten
Debian Wiki (wiki.debian.org)Official Ubuntu Documentation (help.ubuntu.com)
Linux EssentialsLinux Essentials - Die Einsteiger-Zertifizierung des LPI (shop.linupfront.de)
GPLDie GPL - kommentiert und erklärt (ifross.org)
18LIN1 LVA
Grundlegendes zu Linux
Kernel und Co.
19LIN1 LVA
Kernel-Architektur
Linux Device Drivers, Third Edition (lwn.net) – Kap. 1, Seite 6
20LIN1 LVA
Kernel-Architektur
Ressourcen-ManagerProzess-ManagementMemory-Mangement
Schnittstellen zur Verfügung stellen (Systemcall-Interfcace)Vom User Space ausKernel-Schnittstellen aufrufen
Grafik nicht Teil des KernelsDevice Driver als Kernel-Module geladen
Nicht alle Treiber sind dadurch im “Basis-Kernel”S.a. Anatomy of the Linux kernel (ibm.com)
21LIN1 LVA
Dateisystem - VFS
Virtual Files SystemAbstraktionsschicht zwischen Applikation und Filesystem
Unterstützt eine Vielzahl an DateisystemenZ.B. Zugriffe auf Netzwerk-Speicher
Fast alles ist eine Datei unter Linux!Geräte als Dateien abgebildetInteraktion mir Kernel/Devices/Treiber über Dateien
procfs und sysfs
:~$ mount | grep ext4/dev/sda2 on / type ext4 (rw,errors=remount-ro)/dev/sda3 on /home type ext4 (rw)
22LIN1 LVA
Dateisystem - FHS
Filesystem.gif (upload.wikimedia.org)
23LIN1 LVA
Dateisystem - FHS
Durchdachte Verzeichnisstrukturz.B. Statische und dynamische Teile in unterschiedlichen Bereichen
Beschreibt die Verzeichnisse der Hierarchie-EbenenWichtige Ordner
/ → root-Verzeichnis/etc → Konfigurationen/home → Benutzer-Verzeichnis/var → Veränderliche Dateien (z.B. Log-Dateien)/bin Binaries für alle Benutzer→/sbin System Binaries→
24LIN1 LVA
Dateisystem - /etc
Das KonfigurationsverzeichnisKonfiguration in Verzeichnissen und Textdateien
Benutzer-spezifisch auch im Home-Verzeichnis
:~$ sudo find /etc/ -type f -iname *ssh*/etc/init.d/ssh/etc/init/ssh.conf/etc/default/ssh/etc/ssh/ssh_host_rsa_key.pub/etc/ssh/ssh_config/etc/ssh/ssh_host_ecdsa_key/etc/ssh/ssh_host_dsa_key.pub/etc/ssh/ssh_host_dsa_key/etc/ssh/ssh_import_id/etc/ssh/sshd_config
:~$ cat .vimrc syntax oncolorscheme ronset showmatchset hlsset tabstop=4set shiftwidth=4
25LIN1 LVA
Abschließende Grundidee
Viele kleine, schnelle, spezialisierte ProgrammeFlexible, modulare Kombination der Programme in einer ShellAus „Entwickler-Geist“ heraus entwickelt wordenGeringer Selbstschutz vor falscher BedienungAlles konfigurierbarWichtig
FehlermeldungenDokumentationHilfe
→ Wer sich die Dinge durchliest, ist klar im Vorteil!
26LIN1 LVA
Linux Container und LXC
Unsere Arbeitsumgebung
27LIN1 LVA
Linux Container
Keine echte Virtualisierung im eigentlichen SinneEine Gruppe von Prozessen, gemeinsam in einer isolierten UmgebungAus der Sicht dieser Prozess-Gruppe, laufen sie in einer virtuellen Umgebung
Kernel-basierte Isolierung und LimitierungMan spricht daher auch von ContainernKernel Namespaces → Ressourcen IsolationCgroups → Ressource Limitierung
Weitere InformationenLightweight Virtualization (socallinuxexpo.org)LXC - Ubuntu Server Guide (help.ubuntu.com)
28LIN1 LVA
LXC, Cgroups and Advanced LinuxContainer Technology (novell.com)
29LIN1 LVA
LXC
LXC is a userspace interface for the Linux kernel containment features. LXC - Linux Containers (linuxcontainers.org)
Userspace Werkzeuge für die Administration von Containern:~$ sudo lxc-ls --fancy:~$ sudo lxc-start --name u1 --daemon:~$ sudo lxc-info --name u1:~$ sudo lxc-stop --name u1:~$ sudo lxc-destroy --name u1
:~$ sudo cat /var/lib/lxc/lin01/config lxc.network.type = vethlxc.network.flags = uplxc.network.link = lxcbr0lxc.network.hwaddr = 00:16:3e:2b:9a:5elxc.rootfs = /var/lib/lxc/lin01/rootfslxc.include = /usr/share/lxc/config/debian.common.conflxc.mount = /var/lib/lxc/lin01/fstablxc.utsname = lin01lxc.arch = amd64lxc.network.ipv4 = 10.0.1.101
30LIN1 LVA
Debian
Debian EinführungAm System anmeldenPutty und SSH
31LIN1 LVA
Debian
Debian GNU/LinuxCodename: Wheezy
Package Management – aptVerlässliche UpdatesRepositories bieten viel an Software an
Kein selbst-kompilierenSolides und stabiles SystemDerivate
UbuntuGute Dokumentation und Community
Debian-OpenLogo.svg
32LIN1 LVA
Debian Releases
stable – testing – unstableStable hat Support vom Security-Team
Bei neuer Version alte ca. noch 1 Jahr gepflegt
Nachteile„Relativ“ alter Kernel, dafür stabilUpgrade, wenn altes Release ausläuft
Kein Rolling Release
8.0 jessie April 2015
7.0 wheezy Mai 2013
6.0 squeeze Februar 2011
5.0 lenny Februar 2009
33LIN1 LVA
Debian-Installation
Installations-MediumISO-ImageNetinstall – minimale Installation, benötigt Internet-Verbindung
Festplatte vorbereitenPartitionen und Dateisysteme
Systemdateien kopierenSystemeinstellungen vornehmenBenutzer anlegen
Traditioneller root-Account oder sudo?Bootloader installieren
Debian-OpenLogo.svg
34LIN1 LVA
OpenSSH_logo.png (upload.wikimedia.org)
35LIN1 LVA
Secure Shell - ssh
Verschlüsselte Remote-Verbindung über NetzwerkZweck
Login am Remote-Host → ssh user@host -p PORTAusführen eines Kommandos → ssh user@host 'COMMAND'Datentransfer → scpMounten von Remote-Pfad → sshfsSichere FTP-Verbindung → sftp
Ziemlich viel an KryptographieKey ExchangeVerschlüsselungOptional: Public Key Authentifizierung
36LIN1 LVA
Secure Shell
Am System muss der Dienst sshd Dienst laufenLauscht grundsätzlich am Port 22Für Produktivumgebungen, mit direktem Zugang ins Internert, Port ändern!
Bzw. per Firewall beschränken
:~$ sudo service ssh status[sudo] password for lin1: [ ok ] sshd is running.:~$ netstat -tlnActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:41996 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
37LIN1 LVA
Secure Shell
Frühertelnetrsh
ClientsoftwareOpenssh-client
PuttyWinSCP
:~$ dpkg -l openssh-client Desired=Unknown/Install/Remove/Purge/Hold| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)||/ Name Version Architecture Description+++-====================-===============-===============-=============================================ii openssh-client 1:6.0p1-4 amd64 secure shell (SSH) client, for secure access
PuTTY_icon_128px.png (upload.wikimedia.org)
38LIN1 LVA
Anmelden und abmelden
Anmeldung per SSH„Fingerprint”
Am Server
Benutzername und Passwort:~$ ssh [email protected]@192.168.80.128's password: Linux debian-lin1 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64
The programs included with the Debian GNU/Linux system are free software;the exact distribution terms for each program are described in theindividual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extentpermitted by applicable law.You have new mail.Last login: Sat Aug 3 12:31:21 2013
:~$ ssh-keygen -l -f ~/.ssh/known_hosts -F 192.168.80.128# Host 192.168.80.128 found: line 22 type ECDSA256 07:bf:74:bd:f1:8b:39:57:9f:21:46:9a:5f:63:98:e9 |1|cBpfm1XQSiiZczTME8Rv3gZLk38=|wGpJe/AiTRNlRt5GsPVyHHmS7Lg= (ECDSA)
:~$ ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub 256 07:bf:74:bd:f1:8b:39:57:9f:21:46:9a:5f:63:98:e9 root@debian-lin1 (ECDSA)
39LIN1 LVA
Anmelden und abmelden
Abmeldenlogout oder STRG + d
Gestartete Prozesse laufen nicht weiterAbhilfe
Screen SessionsWerden nich beendet, komplette Session kann wieder gestartet werden
screen -ls, screen -r
Gemeinsam arbeiten: Linux Terminal Sessions mit screen (wiki.thomas-krenn.com)
screen -S shared
nohupBefehle weiterlaufen lassen
Mit sudo und Ein-/Ausgabe-Umleitung umständlich
40LIN1 LVA
SSH Public Key Authentifizierung
OpenSSH Public Key Authentifizierung unter Ubuntu (wiki.thomas-krenn.com)Client erhält Challenge und beweist, dass er Private Key besitzt
41LIN1 LVA
Übung 1
Per SSH anmeldenFernzugriff mit PuttyPort ändernOder per ssh lin1@$IP
43LIN1 LVA
Die Shell
Bourne again Shell die Konsole→Führt Kommandos aus
Interaktiv Terminal→Aus Dateien Skripte→
Skripting-FunktionalitätenShell-builtins
Nach Login wird Shell gestartet:~$ grep lin1 /etc/passwdlin1:x:1000:1000:lin1,,,:/home/lin1:/bin/bash:~$ echo $SHELL/bin/bash
:~$ type cdcd is a shell builtin
44LIN1 LVA
Die Shell – /bin/bash
Wichtige Tastatur-KürzelBefehl abbrechen → STRG + cExit (EOF) → STRG + dReverse Search → STRG + r, Kommando eingebenCommand Completion → TABClear → STRG + lLetzte Kommandos → Pfeil-Auf und Pfeil-AbAnfang, Ende Zeile → STRG + a, STRG + e
45LIN1 LVA
Die Shell – Kommandos
Case sensitiv!Kommando – Optionen – ArgumenteAuch zusammengefasst
ls -l -a = ls -laNAME ls - list directory contents
SYNOPSIS ls [OPTION]... [FILE]...
DESCRIPTION List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all do not ignore entries starting with .
46LIN1 LVA
Die Shell – Kommandos
Programmname + Argumente → ENTERErzeugt einen neuen Prozess
Rückgabewert → echo $?Wie werden Programme gefunden
Pfad-Variable
:~$ man ls
[1]+ Stopped man ls:~$ jobs[1]+ Stopped man ls:~$ ps aux | grep manlin1 2964 0.0 0.2 16400 1428 pts/0 T 13:31 0:00 man lslin1 3042 0.0 0.1 7828 876 pts/0 S+ 13:35 0:00 grep man
:~$ echo $PATH/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:~$ which man/usr/bin/man
47LIN1 LVA
Die Shell – PATH
Eigene Skripte, Programme ausführenKompletter Pfad./ voranstellen
Unter Windows aktuelles Verzeichnis im Pfad enthaltenStarten von „fremden“ ProgrammenUnter Linux u.U. schwieriger
Weitere Umgebungsvariablenprintenv
:~$ ./myprogram :~$ /home/lin1/myprogram
48LIN1 LVA
Die Shell – Prozesse anzeigen
ps Snapshot der aktuellen Prozesse→
Von wem stammt alles ab?
:~$ ps -u root | grep ssh 616 ? 00:00:00 sshd:~$ pgrep -l ssh616 sshd2352 ssh-agent3221 nxssh3670 ssh
init─┬─NetworkManager─┬─dhclient │ ├─dnsmasq │ ├─nm-pptp-service─┬─pppd───sh───pptpgw │ │ └─{nm-pptp-service} │ └─3*[{NetworkManager}] ├─Tasque───5*[{Tasque}] ├─Thunar───2*[{Thunar}]
:~$ ps -u root | grep ssh 616 ? 00:00:00 sshd:~$ pgrep -l ssh616 sshd2352 ssh-agent3221 nxssh3670 ssh
49LIN1 LVA
Die Shell – Prozesse beenden
killEigentlich „Senden von Signalen“ an einen Prozess
kill + PIDSendet Signal an Prozess-ID
man 7 signalPID erhält man über ps-Kommando
:~$ sudo kill -L[sudo] password for gschoenb: 1 HUP 2 INT 3 QUIT 4 ILL 5 TRAP 6 ABRT 7 BUS 8 FPE 9 KILL 10 USR1 11 SEGV 12 USR2 13 PIPE 14 ALRM15 TERM 16 STKFLT 17 CHLD 18 CONT 19 STOP 20 TSTP 21 TTIN22 TTOU 23 URG 24 XCPU 25 XFSZ 26 VTALRM 27 PROF 28 WINCH29 POLL 30 PWR 31 SYS
:~$ ps -u root | grep ssh 616 ? 00:00:00 sshd:~$ pgrep -l ssh616 sshd2352 ssh-agent3221 nxssh3670 ssh
50LIN1 LVA
Die Shell – zu Hilfe!
man-PagesWie verwende ich man → man manImmer erster Anlaufpunkt für Kommandos
man commandKurze Hilfe oft auch mit
help commandcommand --help
Zu Dateien:~$ man 5 passwdNAME passwd - the password file
DESCRIPTION /etc/passwd contains one line for each user account, with seven fields delimited by colons (“:”). These fields are:[...]
51LIN1 LVA
Die Shell – zu Hilfe!
NavigationSuchen → / + Begriff eingeben
Funktioniert auch im vi oder bei lessAuf/Ab Pfeil-Auf, Pfeil-Ab→Zum Anfang Pos1→Beenden q→
Außerdemwhatis → Zeigt Kurz-Beschreibungen an
apropos → Durchsucht man-Page Beschreibungen
:~$ whatis openopen (2) - open and possibly create a file or deviceopen (1) - start a program on a new virtual terminal (VT).
52LIN1 LVA
Die Shell – zu Hilfe!
In /usr/share/doc/PAKETNAMENoch mehr Hilfe zu spezifischen Paketen
BeispieleKonfigurationsdateienREADMEChangelog
:~$ ls /usr/share/doc/vim-tiny/changelog.Debian.gz copyright NEWS.Debian.gz README.Debian
53LIN1 LVA
Ordner und Dateien
PfadeOrdnerDateienVerknüpfungen
54LIN1 LVA
Datei- und Pfadnamen
Case sensitivSonderzeichen grundsätzlich möglich
Portierung/Verwendung auf anderen Systemen beachtenKodierung und Ortseinstellung
Endungen sagen nicht unbedingt etwas über die Datei aus!.exe, .iniAusser Programmieren→
.c, .o
fle → zeigt Informationen über Typ anVersteckte Dateien
Fangen mit einem . an
:~$ touch 'test 1':~$ ls test\ 1 test 1
:~$ file exp.sh exp.sh: Bourne-Again shell script, ASCII text executable
55LIN1 LVA
Datei- und Pfadnamen
Die Wurzel, oder auch root-Verzeichnis
Alles wird in diesen Baum eingehängtFestplatten, USB-Sticks etc.
Verzeichnisse enthalten wieder andere VerzeichnisseDurchdachte Struktur
Verzeichnisse werden wie Dateien bearbeitet
:~$ ls /bin etc lib media proc sbin sys varboot home lib64 mnt root selinux tmp vmlinuzdev initrd.img lost+found opt run srv usr
:~$ ls -la /dev/sdabrw-rw---T 1 root disk 8, 0 Aug 6 19:33 /dev/sda
56LIN1 LVA
Datei- und Pfadnamen
Absolute und relative Pfade
Aktuelles Verzeichnis – Working Directory... oder ../../../
:~$ ls -la /home/lin1/myprogram -rwxr-xr-x 1 lin1 lin1 0 Aug 3 14:39 /home/lin1/myprogram:~$ ls -la myprogram -rwxr-xr-x 1 lin1 lin1 0 Aug 3 14:39 myprogram:~$ cd test/:~/test$ ls -la ../myprogram -rwxr-xr-x 1 lin1 lin1 0 Aug 3 14:39 ../myprogram
:~$ pwd/home/lin1:~$ ls ..lin1 lost+found:~$ ls .mbox myprogram test test 1
57LIN1 LVA
Kommandos für Verzeichnisse
Verzeichnis wechseln → cdcd, cd ~ → in Home-Verzeichnis cd - → in zuletzt genutztes Verzeichniscd / → in Wurzel- bzw. root-Verzeichnis
Auflisten → lsLetzten geänderten Dateien? → ls -lctls -d ?ls -la auch „.“-Dateien→
Anlegen und löschen → mkdir und rmdir / rm -rmkdir -p
58LIN1 LVA
Umgang mit Dateien
Kopieren → cpcp -rcp -a
Verschieben → mvLöschen → rm
rm -irm -rrm -rf
59LIN1 LVA
Links
Links erstellen → lnls -l und ls -i
Symbolische Links → ln -s
:~$ ln myprogram myprogram2:~$ ls -ltotal 12-rw------- 1 lin1 lin1 4164 Aug 3 17:03 mbox-rwxr-xr-x 2 lin1 lin1 0 Aug 3 14:39 myprogram-rwxr-xr-x 2 lin1 lin1 0 Aug 3 14:39 myprogram2drwxr-xr-x 2 lin1 lin1 4096 Aug 6 19:52 test-rw-r--r-- 1 lin1 lin1 0 Aug 3 17:08 test 1:~$ ls -i18 mbox 19 myprogram 19 myprogram2 21 test 20 test 1
:~$ ln -s myprogram testProgram:~$ ls -l testProgram lrwxrwxrwx 1 lin1 lin1 9 Aug 6 21:29 testProgram -> myprogram
60LIN1 LVA
Übung 2
In Verzeichnissen NavigierenSymbolische Links
61LIN1 LVA
Ausgeben, Einlesen, Umleiten
Dateien betrachtenEin- und Ausgabe-Kanäle
Umleiten
62LIN1 LVA
more und less
Textdateien am Bildschirm anzeigenSeitenweiseWichtige Kommandos
space, bildAuf, bildAbpos1 und ende/ und n
Prozentwert am Ende der DateiMit less → =
63LIN1 LVA
Ein- und Ausgabe
0, 1 und 2stdin, stdout, stderr
KommandosequenzenVon stdin lesen, bearbeiten, auf stdout schreiben
Im Fehlerfall, stderr benutzenWas kann damit gemacht werden?
UmleitenFilternAn andere Kommandos weitergeben
64LIN1 LVA
Ein- und Ausgabe umleiten
Für Programm/Befehl selbst nicht ersichtlichIn eine Datei umleiten → > oder >>
z.B. kommando > datei
Datei wird angelegt falls sie nicht existiertMit noclobber existierende nicht überschrieben
Mit >> wird an die Datei angehängt und nicht überschrieben
:~$ netstat -tln > listenPorts.txt:~$ set -o noclobber:~$ netstat -tln > listenPorts.txt-bash: listenPorts.txt: cannot overwrite existing file:~$ set +o noclobber
65LIN1 LVA
Ein- und Ausgabe umleiten
Auf Eingabe hinleiten
Kombination
:~$ wc -l < listenPorts.txt 10
:~$ wc -l < listenPorts.txt > lineCount:~$ cat lineCount 10
66LIN1 LVA
Ein- und Ausgabe umleiten
&>Leitet stderr und stdout in Datei um!So taucht auch ein Fehlermeldung in der umgeleiteten Datei auf
PipesVerbinden stdout mit stdin eines weiteren KommandosSehr hilfreich bei der Weitergabe von Ausgaben!
Z.B. Lange Befehlsausgaben
:~$ egrep '22|25' listenPorts.txt | wc -l4
:~$ dmesg | less
67LIN1 LVA
Ein- und Ausgabe umleiten
tee“Kreuzung”Lese stdin und schreibe nach stdoutAlso eine Zwischenspeicherungz.B. Logging von ssh-Session
:~$ ssh [email protected] | tee lin1.log
68LIN1 LVA
Kommandosubstitution
KommandosubstitutionBackticks → `...`, oder $(...)Standardausgabe wird in Kommando eingebaut
:~$ ls `whoami`ls: cannot access gschoenb: No such file or directory
:~$ grep `head -n1 /etc/hosts|cut -f1` listenPorts.txt tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
69LIN1 LVA
Übung 3
Ausgabe- und Kommandoumleitung
70LIN1 LVA
sudo und Benutzer
MehrbenutzersystemBenutzer anlegen
72LIN1 LVA
Mehrbenutzersystem
Mehrere Benutzer können parallel angemeldet seinDaher Rechteverwaltung nötig
Benutzer und GruppenGekennzeichnet durch uid und gid
Super-user im Systemroot-Benutzer (vgl. System-Administrator unter Windows)root ist “allmächtig” kann im Prinzip alles machen→
# rm -rf /
root-Rechte können kurz ausgeborgt werden → sudo
73LIN1 LVA
sudo und root-Rechte
Super-user doFrüher – reiner root UserHeute – zumeist sudo
Kommandos als root oder einem anderen User ausführenWelche Gruppe unter Debian?
Protokoll über sudo-Verwendung führenBenutzer nur einzelne Kommandos erlaubenManchmal etwas mühsam
sudo susudo -i
74LIN1 LVA
sudo und root-Rechte
Wie wird man richtig root?sudo susudo su -sudo -isudo -s
Vgl. RootSudo (help.ubuntu.com)Neue sudo-Rechte hinzufügen
sudo visudosudo select-editor um auf vi umzustellen
Rechte auflistensudo -l
75LIN1 LVA
sudo und root-Rechte
Änderungen am System benötigen sudoapt-get updateEditieren von Konfigurations-DateienBenutzer-Management
→ Administrations-ArbeitenProbleme
Output redirectionsudo sh -c "COMMAND”
Editieren von Dateien"/etc/passwd" [readonly] 35L, 1745C
76LIN1 LVA
Benutzer anlegen und löschen
adduserdeluser
77LIN1 LVA
Linux-Benutzer
Linux ist ein MehrbenutzersystemTrennung von normalen Benutzern und Administrations-AccountTraditionell root heute zumeist → sudo
Benutzerkonten besitzen immer eine uid
:~$ man id:~$ iduid=1000(lin1) gid=1000(lin1) groups=1000(lin1),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev):~$ cat /etc/passwd|grep 1000lin1:x:1000:1000:lin1,,,:/home/lin1:/bin/bash:~$ getent passwd lin1lin1:x:1000:1000:lin1,,,:/home/lin1:/bin/bash:~$ getent group lin1lin1:x:1000:
78LIN1 LVA
Linux-Benutzer
Zugehörigkeit des Benutzers definiert in/etc/passwd/etc/shadow/etc/group
Eigene Dateien im Home-Verzeichnis ablegenAndere User dürfen in diesem Verzeichnis nur lesenKein Schreibzugriff, nur root darf alles
Pseudobenutzer werden meist für Dienst od. Rolle verwendet
www-data:~$ sudo su www-data --shell=/bin/bash
79LIN1 LVA
Linux-Benutzer – passwd
Passwort in /etc/shadow gespeichertGehashtes Passwort
Eigenes Passwort ändernpasswd
Viele Distributionen legen Gruppe an, die gleich dem User istDatei gehört immer einen User und einer Gruppe
$6$gnbaAlrI$oXtj9hW1JLKUXWHQVzWXKm0mpbfVxx/H0EMhkwrrfuySjC4Ctn8DZKwUyDeTp2.hsoxb1c5MvXPTz6YAoWhiT/
:~$ ls -l myprogram-rwxr-xr-x 2 lin1 lin1 0 Aug 3 14:39 myprogram
80LIN1 LVA
Benutzer anlegen
Prinzipiell auch möglich alle Dateien händisch anzulegenHilfsprogramm
useradd low-level→adduser Fragen beantworten, ein Front-End zu → useradd
:~$ sudo adduser lin2[sudo] password for lin1: Adding user `lin2' ...Adding new group `lin2' (1001) ...Adding new user `lin2' (1001) with group `lin2' ...Creating home directory `/home/lin2' ...Copying files from `/etc/skel' ...Enter new UNIX password: Retype new UNIX password: passwd: password updated successfullyChanging the user information for lin2Enter the new value, or press ENTER for the default
Full Name []: Room Number []: Work Phone []: Home Phone []: Other []:
Is the information correct? [Y/n] y
81LIN1 LVA
Benutzer löschen
deluser
--remove-home oder --remove-all-flesLöscht Home-Verzeichnis oder alle Dateien des Benutzers
:~$ sudo deluser lin2Removing user `lin2' ...Warning: group `lin2' has no more members.Done.:~$ ls -ld /home/lin2drwxr-xr-x 2 1001 1001 4096 Aug 16 18:59 /home/lin2
:~$ find / -uid 1001 -delete
82LIN1 LVA
Benutzer von Hand anlegen
Manually add new user to Red Hat/Fedora/CentOS (itguykelly.wordpress.com)
83LIN1 LVA
Übung 4
Benutzer und sudo
84LIN1 LVA
Rechtemanagement
user, group, otherBesondere Rechte-Bits
85LIN1 LVA
Linux Rechtesystem
Rechtekonzept besteht für Dateien, Verzeichnisse und ProzesseRechte sind definiert auf
Den Besitzer – userDie Gruppe – groupAlle anderen – other
Für diese 3 werden vom Eigentümer definiertSchreib-Lese-Ausführungs-Rechte
86LIN1 LVA
Linux Rechtesystem
r w x
ändernlesen Progr.Ausführen
auflistenanlegen,
umbenennen,löschen
Ins Verz.wechseln
Dateien
Verzeichnisse
87LIN1 LVA
Linux Rechtesystem
Um eine Datei zu löschen, benötigt man Schreibrechte im Verzeichnis
Mit Schreibrecht auf Datei, kann diese immer noch geändert werden
:~$ ls -latotal 60drwxr-xr-x 5 lin1 lin1 4096 Aug 16 20:34 .drwxr-xr-x 5 root root 4096 Aug 16 18:59 ..drwx------ 2 lin1 lin1 4096 Aug 16 18:31 .aptitude-rw------- 1 lin1 lin1 7248 Aug 16 18:20 .bash_history-rw-r--r-- 1 lin1 lin1 220 Jul 27 12:54 .bash_logout-rw-r--r-- 1 lin1 lin1 3391 Jul 27 13:03 .bashrc-rw------- 1 lin1 lin1 185 Aug 16 20:34 .lesshst-rw-r--r-- 1 lin1 lin1 3 Aug 10 12:14 lineCount-rw-r--r-- 1 lin1 lin1 763 Aug 10 11:39 listenPorts.txt-rw------- 1 lin1 lin1 4164 Aug 3 17:03 mbox-rwxr-xr-x 2 lin1 lin1 0 Aug 3 14:39 myprogram-rwxr-xr-x 2 lin1 lin1 0 Aug 3 14:39 myprogram2-rw-r--r-- 1 lin1 lin1 675 Jul 27 12:54 .profiledrwxr-xr-x 2 lin1 lin1 4096 Aug 16 20:34 rechtedrwxr-xr-x 2 lin1 lin1 4096 Aug 6 19:52 test-rw-r--r-- 1 lin1 lin1 0 Aug 3 17:08 test 1lrwxrwxrwx 1 lin1 lin1 9 Aug 6 21:29 testProgram -> myprogram
88LIN1 LVA
Linux Rechtesystem
Rechte stehen in 3er-Bündeln hinter einanderErster Buchstabe ist Datei-Typ
Angabe auch octal möglich → 755
-rwxr-xr-x
Groupperm.
Userperm.
Otherperm.
89LIN1 LVA
Rechte ändern
chmod
BereicheUser u, → Group g, → Others o→
Operation+ hinzufügen, → - weg nehmen, → = setzen→
Berechtigungr Lesen, → w Schreiben, → x Ausführen→
SYNOPSIS chmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE... chmod [OPTION]... --reference=RFILE FILE...
90LIN1 LVA
Rechte ändern – Symbole
chmod +x datei Execute-Recht für Eigentümer, Grup-pe, Andere
chmod go-w datei Gruppe und Anderen Schreibrecht ent-ziehen
chmod g+rwx datei Alle Rechte für die Gruppe
chmod ugo-rwx datei Alle Rechte allen entziehen
chmod u-r,g+x datei Eigentümer Leserecht entziehen undGruppe Execute-Recht zuweisen
chmod u=rw datei Schreib- und Leserecht für Eigentümer
91LIN1 LVA
Rechte ändern – Numerisch
Dreistellige Oktalzahl, Summe ergibt RechteLeserecht → 4, Schreibrecht → 2, Ausführung → 1Maximal daher → 777
Oft kürzer und nicht so umständlichAnzeigen → stat
rw-r--r-- 644r-------- 400rwxr-xr-x 755
:~$ chmod 644 datei:~$ chmod u=rw,go=r datei
:~/tmp$ ll exp.sh -rwxrw-r-- 1 lin1 lin1 49 Aug 21 13:31 exp.sh*:~/tmp$ stat -c "%a" exp.sh 764
92LIN1 LVA
Eigentümer/Gruppe ändern
chown
Benutzer und Gruppe können in einem Schritt gesetzt werden
Warum sudo?chgrp
Als root oderEigentümer der Datei und Mitglied in neuer Gruppe
chown [OPTION]... [OWNER][:[GROUP]] FILE...
:~$ sudo chown www-data:www-data test.pl
chown [OPTION]... [OWNER][:[GROUP]] FILE...
93LIN1 LVA
Linux Rechtesystem – umask
Standardmäßig wären RechteDatei → 666Ordner → 777
umask setzt die Rechte restriktiverDie definierte umask wird von den Standard-Rechten abgezogen
666 777
0022
644 755
94LIN1 LVA
Besondere Zugriffsrechte
stickychmod Pos. 1 =→ 1Restricted Deletion nur Besitzer einer Datei darf sie →löschen
setgidchmod Pos. 1 =→ 2Verzeichnis neue Datei gehören Gruppe des Verzeichnis→
setuidDatei Mit Rechte des Eigentümers gestartet→
:~$ ls -lda /tmp/drwxrwxrwt 17 root root 12288 Aug 28 10:52 /tmp/
95LIN1 LVA
User Private Groups
User Private Groups (wiki.debian.org)The How and Why of User Private Groups in Unix (security.ias.edu)Zusammenspiel von eigenen Gruppen für Benutzer, setgid Bit und umaskZ.B. Projektverzeichnis für zwei Benutzer erstellen1. Gruppe erstellen2. User zu Gruppe hinzufügen3. Projekt-Verzeichnis erstellensudo mkdir -p /home/share/project #create the group's public directorysudo chgrp project /home/share/project #give it to the groupsudo chmod 2775 /home/share/project #adjust its permissions (sgid)
96LIN1 LVA
Prozess-Eigentümer
Auch Prozesse laufen unter bestimmten User
:~$ ps -u gschoenb PID TTY TIME CMD 2539 ? 00:00:00 gnome-keyring-d 2556 ? 00:00:00 sh 2600 ? 00:00:00 ssh-agent 2603 ? 00:00:00 dbus-launch 2604 ? 00:00:04 dbus-daemon 2619 ? 00:00:00 xfce4-session 2621 ? 00:00:00 xfconfd 2630 ? 00:01:16 xfwm4 2634 ? 00:01:20 xfce4-panel 2636 ? 00:01:49 Thunar 2638 ? 00:00:02 xfdesktop 2640 ? 00:00:05 nm-applet
97LIN1 LVA
Prozess-Eigentümer
Am Beispiel sudo
sudo prüft /etc/sudoerssudo startet Programm mit fork
Prozess erbt von sudoFunktioniert das?
:~$ ls -la /usr/bin/sudo-rwsr-xr-x 1 root root 121144 Feb 28 15:17 /usr/bin/sudo
:~/tmp$ sudo chown root:root sudo.test :~/tmp$ sudo cat /etc/passwd > sudo.test
98LIN1 LVA
Übung 5
Rechtemanagement
99LIN1 LVA
Dateien editieren
Vim FTW!
100LIN1 LVA
Dateien editieren
Konfiguration erfolgt hauptsächlich in Text-Dateienvi ist der ursprüngliche Text-Editor
Praktisch überall vorhandenvim eine “verbesserte”, aktuelle VersionAlternativen → emacs oder nanoZu Beginn gewöhnungsbedürftig→
Nach einiger zeit effizient!Vimlogo.svg (en.wikipedia.org)
101LIN1 LVA
Vim Editor
Zwei ModiKommandomodus, Editiermodus
Wichtige Tast. KürzelESC → in den Kommandomodus wechseln:q! ohne Änderungen verlassen→i in den Eingabemodus wechseln→:w Datei speichern→:wq speichern und verlassen→
Alternativ → :x
102LIN1 LVA
Vim Editor
Mit ESC in den Kommandomoduscw Wort ändern→o darunter Zeile einfügen→dd Zeile löschen/ausschneiden→yy Zeile kopieren→p Zeile darunter einfügen→u rückgängig machen→/begriff nach begriff suchen→
n zum nächsten Ergebnis springen→Zahl + G zu Zeile “Zahl” springen→
103LIN1 LVA
Vim Editor
Konfiguration in der .vimrcset hlssyntax oncolorscheme ron
Auch direkt in der Datei möglich:set number:set nonumber
Für Programmiererset autoindentset smartindent
→ beim Einfügen nur bedingt nützlich
104LIN1 LVA
Übung 6
Editor VIM
105LIN1 LVA
Netzwerk
ipifconfig/etc/network/interfaces
106LIN1 LVA
OSI Layer.png (docs.opensuse.org)
107LIN1 LVA
Linux als Netzwerkclient
Kernel ermöglicht die Netzwerkkommunikation für ApplikationenÄnderungen erfordern root-RechteInterfaces können auf unterschiedliche Wege konfiguriert werdenHäufig benötigt
Statische IP temporär einstellenStatische IP permanent eintragenDefault-Gateway eintragenNameserver für DNS konfigurieren
108LIN1 LVA
Netzwerkkonfiguration
Oft DHCP → dhclient
Temporär IP-Adresse konfigurieren → ip / ifconfgifconfg
route
:~$ sudo dhclient eth1
:~$ sudo ifconfig -a:~$ sudo ifconfig eth2 192.168.0.1/24:~$ sudo ifconfig eth2 192.168.0.1 netmask 255.255.255.0
:~$ sudo route add default gw 192.168.0.254:~$ sudo routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Ifacedefault 192.168.0.254 0.0.0.0 UG 0 0 0 eth2
109LIN1 LVA
Netzwerkkonfiguration
ipVielseitiges Werkzeug zur NetzwerkkonfigurationIconfg eigentlich ein Auslaufmodell → deprecated
ip routeNamensauflösung
/etc/hosts statische Einträge für Hosts→/etc/resolv.conf DNS-Server→
Wird durch dhclient verändert
:~$ ip addr show eth2:~$ sudo ip addr del 192.168.0.1/24 dev eth2:~$ sudo ip link set eth2 down
110LIN1 LVA
Netzwerkkonfiguration
Dauerhafte Netzwerkkonfiguration distributions-spezifischDebian → NetworkConfiguration (wiki.debian.org)
auto eth1iface eth1 inet dhcp auto eth1
iface eth1 inet static address 192.168.0.2 netmask 255.255.255.0 gateway 192.168.0.254
/etc/network/interfaces
staticdhcp
111LIN1 LVA
Netzwerkkonfiguration - Fehlersuche
Etwas wird nicht erreicht
Ein Dienst funktioniert nicht
ip a ping
gateway hostgateway
digroute
nslookupMX
netstatService XY status telnet openssl
Port
112LIN1 LVA
Übung 7 und 8
Übung 7 Netzwerkkonfiguration→Übung 8 → scp und winSCP
113LIN1 LVA
Archivieren und Komprimieren
targzip
114LIN1 LVA
tar
ArchivierenZusammenfassen mehrerer Dateien in einer Datei
-r → hängt Dateien ans Archiv an-u ersetzt ältere Dateien im Archiv→-z / -j komprimiert→
:~$ tar -cf test.tar test.pl test.sh:~$ tar -tf test.tar test.pltest.sh:~$ mkdir test:~$ tar -x -C test -f test.tar :~$ ls testtest.pl test.sh
115LIN1 LVA
tar und Komprimierung
Oft angetroffen → tar.gzgzip Komprimierung
Originaldateien werden gelöschtDirekte Verwendung mit tar
:~$ gzip test.tar:~$ gzip -l test.tar.gz compressed uncompressed ratio uncompressed_name 1190 10240 88.6% test.tar:~$ ls -la test.tar.gz -rw-rw-r-- 1 lin1 lin1 1190 Aug 28 15:20 test.tar.gz
:~$ tar -czf test.tar test/:~$ file test.tar test.tar: gzip compressed data, from Unix, last modified: Wed Aug 28 18:16:57 2013
116LIN1 LVA
Paketmanagement
Repositoriesapt-getaptitude
117LIN1 LVA
Repositories
Beinhalten vorkompilierte SoftwareMuss nicht mehr selbst am eigenen System kompiliert werden
Vgl. GentooDie Programme werden als Debian-Pakete verwaltet
Eine Art Archiv und Regeln, wie Dateien installiert werdenPaket muss bestimmten Richtlinien entsprechenPaket definiert auch Abhängigkeiten
Auch andere Distributionen besitzen PaketmanagementCentOS → rpm
118LIN1 LVA
Repositories und Pakete
Definierte Paket-Abhängigkeiten ermöglichen einfaches installieren und aktualisieren von PaketenEin Paket hat immer einen Maintainer pflegt Paket→Pakete sind signiert und besitzen Prüfsummen, damit Herkunft und Integrität geprüft werden kannFür Debian hilfreich
http://packages.debian.orgDort kann nach Paketen gesucht werden und auch der Quellcode bezogen werden
NachteilOft schafft es nicht die aktuellste Version in die Repos
119LIN1 LVA
Pakete verwalten
apt-cache search
apt-get install
apt-get update
apt-get upgrade
120LIN1 LVA
Pakete verwalten – aptitude
Unter Debian Paket-Manager als eine Schicht über → dpkgapt-get, apt-cache, aptitude
:~$ aptitude search apachep apache2 - Apache HTTP Server metapackage[…]:~$ aptitude show apache2Package: apache2 State: not installedVersion: 2.2.22-13Priority: optionalSection: httpdMaintainer: Debian Apache Maintainers <[email protected]>Architecture: amd64Uncompressed Size: 29.7 kDepends: apache2-mpm-worker (= 2.2.22-13) | apache2-mpm-prefork (= 2.2.22-13) | apache2-mpm-event (= 2.2.22-13) | apache2-mpm-itk (= 2.2.22-13), apache2.2-common (= 2.2.22-13)[...]
121LIN1 LVA
Pakete verwalten – aptitude
depends, recommends, suggestsapt-get install –no-install-recommendsaptitude -R
apt-get vs. aptitude und Cheat-SheetBasic Package Management Operations (debian.org)
remove vs. purgePaketdaten entfernenpurge entfernt auch Konfigurationsdateien
Beim UpgradeKernel wird zurück gehaltenaptitude full-upgrade, apt-get dist-upgrade
122LIN1 LVA
aptitude, apt-get Befehlsübersicht
aptitude apt-get Beschreibung
aptitude update apt-get update Paket-Archiv Metadaten aktualisieren
aptitude install foo
apt-get install foo
Installiere Paket „foo“ und dessen Abhängigkeiten
aptitude safe-upgrade
apt-get upgrade Aktualisiere Pakete
aptitude full-upgrade
apt-get dist-upgrade
Upgrade + Abhängigkeitsänderungen
aptitude remove apt-get remove Entferne „foo“, Konf. Dateien bleiben erhalten
aptitude purge apt-get purge Entferne „foo“, Konf. werden ebenfalls entfernt
aptitude clean apt-get clean Lokale Repo-Paket-Dateien werden gelöscht
aptitude show foo apt-cache show foo Zeige detaillierte Informationen zu Paket „foo“
aptitude search <regex>
apt-cache search <regex>
Suche nach Paketen, die auf <regex> zutreffen
123LIN1 LVA
Pakete verwalten – dpkg
Low-level Operationen oft hilfreich:~$ dpkg -l | grep ssh-serverii openssh-server 1:6.0p1-4 amd64 secure shell (SSH) server, for secure access from remote machines:~$ dpkg -L openssh-server/./etc/etc/init.d/etc/init.d/ssh/etc/default/etc/default/ssh/etc/network/etc/network/if-up.d/etc/network/if-up.d/openssh-server[…]:~$ dpkg -S sshdopenssh-server: /usr/sbin/sshdopenssh-server: /usr/share/man/man8/sshd.8.gzopenssh-server: /usr/share/doc/openssh-client/examples/sshd_configopenssh-server: /etc/pam.d/sshdopenssh-server: /usr/share/man/man5/sshd_config.5.gz
124LIN1 LVA
Paketquellen
In folgender Datei spezifiziert
Quellen von Dritten
Schlüssel von apt einbindenapt-key addPaket-Herkunft kann geprüft werden
:~$ vi /etc/apt/sources.list
:~$ ls -d /etc/apt/sources.list.d//etc/apt/sources.list.d/
125LIN1 LVA
Übung 9
Pakete und PaketquellenMit apt Pakete installierenMit tar entpacken
126LIN1 LVA
Dateien finden
findlocate
127LIN1 LVA
fnd
Durchsucht Verzeichnisbaum rekursivFiltern nach KriterienLiefert Pfad der Datei zurück
Suchen in Verzeichnissen erfordert entsprechende ZugriffsrechteBei mehreren Kriterien mit und-Operator verknüpfen
Oder → -o
:~$ find . -user lin1 -name lineCount./lineCount
128LIN1 LVA
fnd und Aktionen
Normalerweise -printAuch Folgekommandos möglich → -exec
Nachteil von exec → für jedes Argument wird ein Prozess gestartet
Kann für viele Argumente sehr ineffizient seinWeitere Option → xargs
:~$ find . -type f -perm 755 -exec ls -l '{}' \;-rwxr-xr-x 2 lin1 lin1 0 Aug 3 14:39 ./myprogram2-rwxr-xr-x 2 lin1 lin1 0 Aug 3 14:39 ./myprogram
129LIN1 LVA
fnd und xargs
xargs sammelt möglichst viele Argumente, bevor es den Befehl ausführt
Verwendet das Gelesene als ArgumenteEin fnd – xargs Klassiker
Keine Probleme bei Sonderzeichen in DateinamenZ.B. beim Programmieren bestimmte Zeile in allen Quelldateien suchen
Alternative → ack-grep
:~$ find . -type f -print0 | xargs -0 grep 127.0.0.1./listenPorts.txt:tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
130LIN1 LVA
fnd vs. locate
fnd läuft die komplette Datei-Hierarchie ablocate ist nicht immer standardmäßig installiert
Suchmuster beginnt zumeist mit *Ansonsten wird für Suchmuster nur genauer Treffer geliefert
:~$ sudo updatedb:~$ locate test/boot/grub/cmostest.mod/boot/grub/example_functional_test.mod/boot/grub/functional_test.mod/boot/grub/test.mod/boot/grub/test_blockarg.mod/boot/grub/testload.mod/boot/grub/usbtest.mod/boot/grub/videotest.mod/home/lin1/test
131LIN1 LVA
Übung 10
Mit fnd Dateien finden
132LIN1 LVA
Dienste, Daemons und Co.
restartreload
133LIN1 LVA
Init-Skripte
Befinden sich in /etc/init.d
Über symbolische Links wird definiert, wann/ob Dienst aktiv ist
Skripte steuern, was beim start/stop/restart/reload passiertDaemons in Debian (wiki.debian.org)
:~$ ls -la /etc/init.d/ssh -rwxr-xr-x 1 root root 3881 Feb 8 2013 /etc/init.d/ssh
:~$ ls -la /etc/rc3.d/S17ssh lrwxrwxrwx 1 root root 13 Sep 26 08:10 /etc/rc3.d/S17ssh -> ../init.d/ssh
134LIN1 LVA
Init-Skripte
Dienst neu starten
Konfiguration neu ladenreload → sendet SIGHUP
Alternativ Kommando service
:~$ sudo /etc/init.d/ssh restart[sudo] password for lin1: [ ok ] Restarting OpenBSD Secure Shell server: sshd.
:~$ sudo /etc/init.d/ssh reload[ ok ] Reloading OpenBSD Secure Shell server's configuration: sshd.
:~$ sudo service ssh reload[ ok ] Reloading OpenBSD Secure Shell server's configuration: sshd.:~$ sudo service ssh status[ ok ] sshd is running.lin1@lin1:~$ /etc/init.d/ssh status[ ok ] sshd is running.
135LIN1 LVA
Init-Skripte
Dienste nicht mehr standardmäßig startenupdate-rc.d
Default Run-Level-Links erzeugen
Befehl entfernt symbolische LinksWerden bei Paket-Update wieder hergestellt
Neue disable/enable Funktion
:~$ update-rc.d foobar defaults
:~$ update-rc.d -f foobar remove
:~$ sudo update-rc.d -n ssh disable update-rc.d: using dependency based boot sequencingrename(/etc/rc2.d/S17ssh, /etc/rc2.d/K17ssh)rename(/etc/rc3.d/S17ssh, /etc/rc3.d/K17ssh)rename(/etc/rc4.d/S17ssh, /etc/rc4.d/K17ssh)rename(/etc/rc5.d/S17ssh, /etc/rc5.d/K17ssh)
136LIN1 LVA
Partition erstellen, einhängen
fdiskmount
137LIN1 LVA
Partitionen erstellen
fdisk erstellt PartitionenMBR-PartitionstabelleKann nicht mit GPT umgehen
Vgl. GUID Partition Table (wiki.thomas-krenn.com)Typischerweise primäre und logische PartitionenZweck der Partition über systemtypische Ids
Switch t → bei fdiskgdisk erstellt auch GPT-Partitionen
138LIN1 LVA
Devices einhängen
Befehl → mount und umountsudo mount device pathOption -t spezifiert Typ des Devices
Kann auch z.B. NFS-Share seinOder eine iso Datei
mount ohne Parameter
:~$ sudo mount -o loop pmagic_2013_02_28.iso /mnt/
:~$ mountsysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=45997,mode=755)devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=37988k,mode=755)/dev/disk/by-uuid/91427534-2383-48af-b0fe-699f36f65cda on / type ext4 (rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered)
139LIN1 LVA
/proc und /sys
140LIN1 LVA
/proc und /sys
Virtuelle DateisystemeWerden vom Kernel erzeugt
/proc procfs→Interaktion mit Kernel, laufende Prozesseps holt sich z.B. Informationen davoncpuinfo, meminfo, version
Ursprünglich nur für Prozesse vorgesehenEinige Dinge wurden nach /sys migriert
:~$ cat /proc/cmdline BOOT_IMAGE=/boot/vmlinuz-3.8.0-30-generic root=UUID=e17c2a90-c848-4634-a4b7-b5bd10be89f4 ro quiet splash vt.handoff=7
141LIN1 LVA
/proc
/proc liefert Abstraktion zwischen Kernel-Dateistrukturen und DienstprogrammenKernel-Konfigurationen ohne Neustart ändernAdminister Linux on the fly (ibm.com)
cat /proc/cpuinfocat /proc/meminfo free→cat /proc/mounts mounts→ps greift auch auf /proc zu
:~$ echo 1 > /proc/sys/net/ipv4/ip_forward
142LIN1 LVA
/sys
/sys → sysfsS.a. The sysfs Filesystem (kernel.org)Devices und TreiberKernel Programming InterfaceUser Interface um Eigenschaften zu manipulieren
:~$ ls /sysblock bus class dev devices firmware fs hypervisor kernel module power:~$ cat /sys/block/sda/queue/scheduler noop [deadline] cfq
143LIN1 LVA
Reguläre Ausdrücke
144LIN1 LVA
Reguläre Ausdrücke
Ähneln Suchmuster der Shell
Auch Regular Expressions oder regex genanntOft nützlich z.B. Bei egrep
:~$ ls test*test.pl test.sh test.tar
test:test.pl test.sh
:~/tmp$ egrep -n '^#+|\s+#+' test.pl 1:#use strict;26:# my %current_device = %{(shift)};38: #check the supported throttle reasons41: #printf("Supported: %0x16\n",$supportedClocksThrottleReasons); 42: #get the current active throttles45: #the curr mask is supported
145LIN1 LVA
Reguläre Ausdrücke
Online regex-TesterJava Script regex-Tester (regexpal.com)
Grundlegende Ausdrückeabc → abc[a-e] → von a bis ea[xy]b a, x oder y, b→^ → Anfang der Zeile$ → Ende der Zeile
146LIN1 LVA
Kernel kompilieren
Sourcen ladenKonfigurierenInstallieren
147LIN1 LVA
Kernel Aufgaben
Zur WiederholungBietet OS Funktionalitäten anMonolithischer Kernel mit dynamisch ladbaren ModulenKernel-Treiber werden auch Built-in-Treiber genannt
Nicht alles kann als Modul realisiert werdenZ.B. muss direkt nach dem Start auf Festplatte zugegriffen werden
Trend geht zu Modulen
148LIN1 LVA
Kernel Verzeichnis-Aufbau
https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/?id=refs/tags/v3.17.2
149LIN1 LVA
To compile, or not to compile
YesKernel DeveloperKernel wird in einer Art benötigt, in der er offiziell nicht vorliegtEin Problem debuggenHardware wird von Stock Kernel nicht unterstütztInteresse halber, zum Üben
NoNur ein Driver wird benötigtDu bist dir nicht sicher und weißt nicht was du tust
150LIN1 LVA
Source und Config
Konfigurieren Kompilieren Installieren→ →Mehrere make Ziele vorhandenWerkzeuge werden benötigt
Kernel Sourcen werden benötigtMainline/Vanilla Kernel
Ubuntu/Debian Kernel
anonscm.debian.org
# apt-get install fakeroot build-essential devscripts libncurses5 libncurses5-dev# apt-get build-dep linux
:~$ wget https://kernel.org/pub/linux/kernel/v3.x/linux-3.17.2.tar.xz
:~$ apt-cache search linux|grep sourcelinux-source - Linux-Kernel-Quelltext mit Ubuntu-Patches
151LIN1 LVA
Source und Config
Konfiguration für Kernel wird benötigt
Linux-Kernel maßgeschneidert (heise.de)
:~$ cp -a /boot/config-`uname -r` .config:~$ make silentoldconfig:~$ make localmodconfig:~$ make menuconfig
152LIN1 LVA
Kernel kompilieren und installieren
make und make installInitramfs einrichten
cpio Archiv für Startup-ProzessBeinhaltet eine Basis rootfs (tldp.org)Früher initrd (wikipedia.org)
Grub Update ausführen:~/kernel/linux-3.17.2$ make -j5[...]:~/kernel/linux-3.17.2$ sudo make modules_install[...]:~/kernel/linux-3.17.2$ sudo make install[...]:~$ ls /boot/*3.17.2/boot/config-3.17.2 /boot/initrd.img-3.17.2 /boot/System.map-3.17.2 /boot/vmlinuz-3.17.2
153LIN1 LVA
Weitere Wege zu neuen Kerneln
Ubuntu Enablement StackZ.B. 14.04 LTS mit Kernel von 14.10 betreibenS.a. LTSEnablementStack (wiki.ubuntu.com)
Ubuntu Mainline Kernels BuildsMainlineBuilds (wiki.ubuntu.com)
DebianUnstable oder BackportsHowToUpgradeKernel (wiki.debian.org)
154LIN1 LVA
Fortgeschrittene Themen
ssh
155LIN1 LVA
ssh
ssh ForwardingLocal Port Forwarding
Lokalen Port an Destination Server weiterleitenZ.B. phpmyadmin über ssh tunneln
Remote Port ForwardingÜber Remote Server zu anderem Server verbinden
Tunnel erstellen:
Zu host, wo Tunnel erstellt wurde, verbinden:
user@laptop:~$ ssh -R 2222:localhost:22 [email protected]
:~$ ssh [email protected]:~$ ssh -p 2222 user@localhost
156LIN1 LVA
Abschließende Fragen?
Ansonsten Vielen Dank für das Kennenlernen von Linux!
157LIN1 LVA
Copyright
FolienAutor: Georg Schönberger
Libreoffice TemplateLizenz: CC-by-sa-v3LibreOffice Presentation Templates 1.0 (templates.libreoffice.org)
Tux-GrafikAutor: Larry EwingTux-simple.svg (commons.wikimedia.org)