Wir sind unabhĂ€ngig, neutral und finanzieren uns teilweise ĂŒber Werbung und Partnerprovisionen.
Danke wenn sie uns unterstĂŒtzen. Diese Seite verwendet hierzu Cookies & Tracking-Cookies, weitere Informationen finden sie hier. Wenn sie diese Seite weiterhin besuchen, erklĂ€ren sie sich damit einverstanden. (Danke!)

Wir sind unabhĂ€ngig, neutral und finanzieren uns teilweise ĂŒber Werbung und Partnerprovisionen. Danke wenn sie uns unterstĂŒtzen.
Diese Seite verwendet hierzu Cookies & Tracking-Cookies, weitere Informationen finden sie hier. Wenn sie diese Seite weiterhin besuchen, erklÀren sie sich damit einverstanden.

 Handbuch:                   
 Linux optimal installieren  
 Â© www.ctaas.de # 2019-01-14 

Linux einfach installieren - wie man ein kleines, stabiles & sicheres System aufsetzt. Deutsche/German Debian/Ubuntu Anleitung:

Nr. Admin Handbuch Inhalt:
1 VorĂŒberlegungen
2 Grundsystem Empfehlungen (DVD-Links)
3 root bzw. sudo Passwort festlegen
4 Paketquellen aktualisieren/Updates installieren
5 Linux Desktopumgebungen im Vergleich
6 Autologon
7 Netzwerkeinstellungen anpassen (network/interfaces bzw. netplan)
8 hosts-Datei/WINS/NetBIOS Hostnamen auflösen (winbind) (bind9)
9 Netzwerk browsing (durchsuchen) aktivieren
10 hÀufig empfohlene Zusatzprogramme
11 Paketquellen (CDs/DVDs) entfernen
12 Terminal Consolen Font Àndern & Tipps zur Console
13 Grafische Fernsteuerung/Fernwartung der Server
14 vsftpd (FTP-Server/FTPS-Server) sicher einrichten
15 OpenSSH-Server (SFTP-Server/SSH Secure Shell) einrichten
16 Netzwerk Dateiserver (Samba) mit Papierkorb einrichten
17 Apache2 Webserver mit PHP einrichten
18 MySQL Datenbank-Server (mit PHP und Apache Anbindung) installieren
19 transperenter Bildschirmschoner
20 GRUB 2 (Consolenauflösung und Splash-Screen) anpassen
21 gelöschte Bilder/Fotos wieder herstellen (recoverjpeg)
22 Ubuntu auf eine neue Version aktualisieren (Upgrade)
23 BitDefender Virenscanner von einem Live-System aus nutzen (Ubuntu)
24 Linux sichern (MBR, Partitionstabellen, Partitionen ...)
25 GRUB 2 von einem Live System aus reparieren (Linux MBR reparieren)
26 VMWare ESXi Problemlösung: horizontal gespiegelte Darstellung
27 VirtualBox VMs per Batch starten und beenden
28 Datenrettung/Undelete mit tsk_recover
29 Datenrettung mit photorec
30 Datenrettung mit foremost
31 Paketquellen/Repositories hinzufĂŒgen und verwalten
32 FSlint (file system utilities) doppelte Dateien löschen
33 duff (DUplicate File Finder) doppelte Dateien löschen
34 rdfind (redundant data find) doppelte Dateien löschen
A-Z Linux Kurzreferenz: Wichtige Linux Shell-Befehle und Programme (Sortiert von A-Z)


Die nachfolgende Dokumentation ist fĂŒr Ubuntu und Debian geeignet.
ErklÀrt wird in wenigen einfachen Schritten wie man eine optimale Linux Umgebung installiert.
Die Anleitung ist sowohl fĂŒr Desktops als auch fĂŒr reine Server ohne grafische XServer nutzbar.
Nebenbei werden die besten Linux Desktopumgebungen verglichen.
In den nachfolgenden Schritten werden verschiedenste wichtige Programme, Tipps sowie einige Server Dienste vorgestellt.
Am Ende befindet findet man noch die Kurzreferenz. Diese erklÀrt wichtige Linux Shell-Befehle und Programme von A-Z.

1.

VorĂŒberlegungen fĂŒr Desktops:


Verglichen wurden insbesondere Desktops die: Des Weiteren sollten heutzutage gĂ€ngige Desktopfunktionen bereit stehen: Alle weiteren Anwendungen aus dem Office-, Grafik-, Musik-, Server-Bereich (usw.) wurden nicht berĂŒcksichtigt.
Der Anwender muss sich die entsprechenden Anwendungen je nach Verwendungszweck selbst nachinstallieren.
Es geht hier also darum ein möglichst kleines, schlankes und stabiles Grundsystem zu erhalten auf das man dann aufbauen kann.

2.

Ein Grundsystem ist Voraussetzung:


Will man ein möglichst aufgerÀumtes System ohne jeglichen Schnickschnack,
so sollte man anfangs nur eine Server Version ohne GUI installieren. Voraussetzung ist am besten eine neue Linux Installation.
Man installiert zuerst ein Standard Server Setup der gewĂŒnschten Distribution (Ubuntu oder Debian).

Unterschiedliche Setup-Medien findet man hier:
FĂŒr Ubuntu:
Die Server-DVD ist fĂŒr ein kompaktes Ubuntu-System eine Voraussetzung (empfohlen).
Die Ubuntu-Desktop-DVD bzw. die Xubuntu-Desktop-DVD starten jeweils ein Live-System (dieses ist fĂŒr Tests, Reparaturzwecke, sowie zur Installation geeignet).

FĂŒr Debian:
Das Stable-Livesystem ist fĂŒr Tests, zum installieren, sowie fĂŒr Reparaturen geeignet.
Hier findet man das komplette Debian (geeignet fĂŒr alle Installationsarten - ebenso empfohlen).
In der Regel reicht hier ein Download der ersten CD/DVD aus, denn diese enthĂ€lt alle Dateien fĂŒr ein Standard-Debian-System.
Alle weiteren Medien benötigt man nur, wenn man weitere Pakete fĂŒr eine komplette offline Installation benötigt.
Ältere Versionen kann man hier im Debian Archiv herunterladen.

Hinweis:
Ein Setup von einer Desktop-Live-DVD, installiert immer einen kompletten Desktop, mit allen Anwendungen.
Daher wird ein Setup von einer Desktop-Live-DVD nicht empfohlen.

3a.

unter Ubuntu - das root Passwort setzen (optional):


Sofern dies noch nicht bei der Installation geschehen ist, sollte man jetzt noch das root-User-Passwort setzen:
sudo passwd root
Im Terminal muss man nun das neue Passwort vergeben.

3b.

unter Debian - dem Standard-Benutzer sudo Rechte zuweisen (optional):


Will man dem normalen Standard Debian User sudo Rechte zuweisen so sind folgende Schritte durchzufĂŒhren:

Anmelden als root entweder ĂŒber ein entsprechendes root-Terminal oder mittels:
su
Achtung: Es wird hierbei das root User Passwort nicht das Passwort vom angemeldeten User abgefragt.

Danach sollte man das sudo package installieren (sofern noch nicht vorhanden):
apt-get install sudo

Danach kann man dem User die sudo Rechte wie folgt zuweisen:
gpasswd -a UserName sudo
Die Einstellungen werden erst nach einer Neuanmeldung (An-/Abmeldung am System) ĂŒbernommen, am schnellsten:
reboot

Sicherheitshinweis: Die sudo Rechte erweitern die Rechte des Users!
Sicherheitstechnisch sollte man abwÀgen was wichtiger ist.
Mehr Bequemlichkeit, dann aktiviert sudo,
mehr Sicherheit dann verwendet nur root mit einem starken Passwort zur Einrichtung.

Den User wieder aus der sudo-Gruppe entfernen:
gpasswd -d UserName sudo

4.

Paketquellen einlesen/aktualisieren & Updates installieren (empfohlen):


Bevor man ans weitere installieren geht, sollte man die Paketquellen neu einlesen (auf Updates prĂŒfen)
und diese Updates ggf. erst einspielen (upgrade):
apt-get update # Paketquellen aktualisieren.
apt-get upgrade # Programm-Pakete auf eine neue Version aktualisieren.
apt-get dist-upgrade # auch neue Programmpakete installieren.
apt-get autoremove # alte nicht mehr benötigte Pakete wieder löschen. Will man auch alte Kernel-Versionen löschen, so muss man zuvor den grub-Bootloader aktualisieren [update-grub].
apt-get autoclean # Heruntergeladene aber nicht mehr gepflegte Pakete löschen.
Erst danach sollte man mit der Installation des eigentlichen Desktops beginnen.

Sauberes entfernen von nicht mehr benötigten Paketen:
apt-get remove Paketname # Deinstalliert das angegebene Paket.
apt-get purge Paketname # Deinstalliert das angegebene Paket und entfernt alle dazugehörigen Konfigurationsdateien,
notwendig ist dies z. B. beim Wechsel von PHP5 auf PHP7 oder bei einem Desktopwechsel - ein Parallelbetrieb ist hier meist nicht vorgesehen.
Um Problemen aus dem Weg zu gehen sollte man bei derartigen Paketen zuerst das alte Paket mittels purge entfernen und erst dann das neue Paket installieren.

5.

Fenstermanager-Installation:


Nun kann man sich fĂŒr einen Fenstermanager (eine Desktopumgebung) entscheiden.
Vorstellen möchte ich hier folgende:
Xfce MATE Desktop Environment Gnome LXDE LXQt IceWM Cinnamon (Ubuntu) Unity KDE Plasma
Empfehlung: 100 % Empfehlung: 90 % Empfehlung: 90 % Empfehlung: 80 % z. Z. nicht Empfohlen nicht Empfohlen nur bedingt Empfohlen Entwicklung eingestellt nicht Empfohlen
Xfce Screenshot unter Debian 8.
  • ist ĂŒber die offiziellen Paketquellen verfĂŒgbar,
  • hat einen klassischen Look,
  • ist schnell und ressourcenschonend,
  • sowie sehr stabil und zukunftssicher, da es sehr ausgereift ist und regelmĂ€ĂŸig weiter entwickelt wird,
  • die aktuelle Version heißt derzeit Xfce4,
  • Xfce wird fĂŒr Server, Desktop und VM empfohlen,
  • verwendet das GTK+-Toolkit.
'universe' Paketquelle hinzufĂŒgen (ab Ubuntu 18.04):
add-apt-repository universe

Folgendes installiert den Xfce4 Desktop:
apt-get install xfce4

Folgendes installiert die fĂŒr Ubuntu angepasste Version (weniger empfohlen):
apt-get install xubuntu-desktop

Folgendes installiert die angepasste Mythbuntu Version (fĂŒr Mediacenter)
(weniger empfohlen):
apt-get install mythbuntu-desktop

Folgendes installiert die angepasste Ubuntu Studio Version (die Multimedia Version zum bearbeiten von Audio-, Video- und Bild-Dateien) (weniger empfohlen):
apt-get install ubuntustudio-desktop

Weitere ZusĂ€tze (wie z. B. CD/DVD-Brennprogramm) installiert man ĂŒber:
apt-get install xfce4-goodies

Sollten Icons fehlen, so installiert man einfach:
apt-get install gnome-icon-theme
bzw.:
apt-get install gnome-icon-theme-full
bzw.:
apt-get install xubuntu-icon-theme

TastenkĂŒrzel:
Windows+e Editor,
Windows+f Explorer,
Windows+m E-Mail,
Windows+t Terminal,
Windows+w Webbrowser
starten.
MATE Desktop Umgebung (core) Debian 8 Screenshot
  • ist ein Fork von Gnome 2,
  • hat einen klassischer Look,
  • ist relativ neu, wird aber stetig weiter entwickelt,
  • ab Ubuntu 14.10 und Debian 8 ist MATE ĂŒber die offiziellen Paketquellen verfĂŒgbar,
  • wird fĂŒr Desktops empfohlen.
  • verwendet das GTK+-Toolkit.
'universe' Paketquelle hinzufĂŒgen (ab Ubuntu 18.04):
add-apt-repository universe

Folgendes installiert den MATE-Desktop mit allen zusÀtzlichen Komponenten (empfohlen):
apt-get install xorg mate-desktop-environment-extras

Folgendes installiert den MATE Desktop:
apt-get install xorg mate-desktop-environment

Folgendes installiert nur den minimalen MATE Desktop ohne jegliche extras (mit Brisk-MenĂŒ):
apt-get install xorg mate-desktop-environment-core mate-applet-brisk-menu

Folgendes installiert ab Ubuntu 15.04 den fĂŒr Ubuntu angepassten kompletten MATE Desktop (weniger empfohlen):
apt-get install ubuntu-mate-desktop

Die Benachrichtigungsleiste nachinstallieren (optional):
apt-get install mate-notification-daemon

Unter Ubuntu sollte man diesen Font nachinstallieren, um die Terminaldarstellung zu verbessern (optional):
apt-get install ttf-ubuntu-font-family
Gnome flashback (core) Debian 8 Screenshot
  • moderner & klassischer Look,
  • wird stĂ€ndig weiter entwickelt,
  • ist stabil und zukunftssicher,
  • fĂŒr leistungsstĂ€rkere Desktops empfohlen,
  • verwendet das GTK+-Toolkit.
'universe' Paketquelle hinzufĂŒgen (ab Ubuntu 18.04):
add-apt-repository universe

Folgendes installiert den Gnome 3 Desktop:
apt-get install xorg gnome-core gnome-session-flashback

ParametererklÀrung:
gnome-core - installiert den Gnome 3 Desktop, dieser benötigt möglichst einen Grafiktreiber der Video und 3D beschleunigt.

gnome-session-flashback installiert zusĂ€tzlich - GNOME Flashback (Metacity) - einen sparsamen 2D Desktop.

Bei der Anmeldung kann man dann ĂŒber das Zahnradicon auswĂ€hlen welcher Desktop gestartet werden soll.
Der zuletzt gewÀhlte Eintrag wird automatisch als Default-Desktop eingestellt.
LXDE Screenshot unter Debian 8.
  • klassischer Look,
  • wird gut gepflegt und ist daher stabil und zukunftssicher,
  • fĂŒr Server und Desktops gleichermaßen geeignet,
  • fĂŒr VMs sehr empfohlen da sehr ressourcenschonend,
  • verwendet das GTK+-Toolkit.
'universe' Paketquelle hinzufĂŒgen (ab Ubuntu 18.04):
add-apt-repository universe

Folgendes installiert den LXDE Desktop (empfohlen):
apt-get install xorg lxde-core

Folgendes installiert eine fĂŒr Ubuntu angepasste LXDE Version (weniger empfohlen):
apt-get install xorg lubuntu-core

Das Aussehen/Thema lĂ€sst sich anpassen ĂŒber:
apt-get install lxappearance

Bei einer Installation unter VirtualBox (als VM) muss man noch folgendes Installieren:
apt-get install build-essential dkms
Screenshot: LXQt 0.9.0 mit Openbox.
  • klassischer Look,
  • relativ neu, wird erst entwickelt (noch nicht 100 % stable),
  • daher zur Zeit keine Empfehlung fĂŒr Server, Desktop oder VM,
  • LXQt ist noch nicht in den offiziellen Quellen von Ubuntu und Debian enthalten,
  • ist eine auf Qt basierenden LXDE Umgebung.
'universe' Paketquelle hinzufĂŒgen (ab Ubuntu 18.04):
add-apt-repository universe

Folgendes installiert ab Ubuntu 18.04 den LXQT Desktop:
apt install lxqt-core openbox

Installationsanleitung fĂŒr Ubuntu:

1. folgende Paketquelle hinzufĂŒgen (nur bei alten Versionen):
add-apt-repository ppa:lubuntu-dev/lubuntu-daily

2. Alle Paketquellen neu einlesen:
apt-get update

3. LXQt installieren:
apt-get install lxqt-metapackage openbox

Die Installation unter Debian wird derzeit nicht empfohlen. Derzeit (Stand: 2015-03-05) ist hier alles noch eine Baustelle.
Sollte man es doch versuchen, so sollte man zuerst den Befehl [add-apt-repository] nachinstallieren, so das man Paketquellen hinzuzufĂŒgen kann:
apt-get install software-properties-common
Anschließend sollte man nach einer Installationsanleitung googeln.
IceWM Screenshot unter Debian 8
  • alter Windows Look,
  • alt, aber sehr ressourcensparend,
  • fĂŒr Desktops eher weniger empfohlen, da doch sehr schlicht.
'universe' Paketquelle hinzufĂŒgen (ab Ubuntu 18.04):
add-apt-repository universe

Folgendes installiert den IceWM Desktop:
apt-get install xorg icewm

optionale Themes (z. B. SilverXP) installieren:
apt-get install icewm-themes
Cinnamon Screenshot unter Debian 8.
  • ist ab Ubuntu 14.10 und Debian 8 ĂŒber die Standard Paketquellen verfĂŒgbar,
  • ist ein Fork von GNOME bzw. der GNOME Shell,
  • benötigt einen Grafiktreiber der Video und 3D beschleunigt,
  • als fall-back wird ein Software-Rendering-Modus verwendet, der jedoch eine erhöhte CPU-Auslastung bewirkt,
  • daher eine sehr hohe CPU Last in VMs,
  • fĂŒr leistungsstarke Desktops durchaus empfohlen,
  • wird hauptsĂ€chlich in Linux Mint eingesetzt.
'universe' Paketquelle hinzufĂŒgen (ab Ubuntu 18.04):
add-apt-repository universe

Folgendes installiert den Cinnamon Desktop:
apt-get install xorg cinnamon-core

Folgendes installiert Cinnamon mit allen zusÀtzlichen Anwendungen:
apt-get install xorg cinnamon-desktop-environment
Unity Screenshot unter Ubuntu 15.04.
  • die Entwicklung wurde ab Ubuntu 17.10 eingestellt (fĂŒr Ubuntu wird wieder Gnome verwendet),
  • Unity wurde speziell fĂŒr kleinere Displays wie z. B. Netbooks entwickelt,
  • Die Arbeitsumgebung Unity wird hauptsĂ€chlich unter Ubuntu eingesetzt,
  • des Weiteren werden die Standard GTK+ Programme verwendet,
  • Ab Unity 8 wird das Qt-Framework verwendet,
  • die linke Schnellstart-
    leiste ist clever und auch gut ĂŒber eine Tastensteuerung zu erreichen,
  • auch die Suchfunktion ĂŒber die [Windows-Fahnentaste] ist an sich gut gelöst,
  • nur leider trĂŒben der enorme Ressourcenbedarf, die teileweise ĂŒbertriebenen Anpassungen mit Themes, sowie die integrierte Websuche (ĂŒber verschiedenste Portale und die daraus resultierenden Datenschutzprobleme) das positive Bild,
  • Unity ist derzeit unter Debian nicht oder nur schwer installierbar.

Folgendes installiert unter Ubuntu den Ubuntu-Desktop mit Unity (weniger empfohlen):
apt-get install ubuntu-desktop

Folgendes installiert die mit Lernprogrammen erweiterte Schulversion Edubuntu (weniger empfohlen):
apt-get install edubuntu-desktop

TastenkĂŒrzel:
Strg+Alt+T = neues Terminal.

SUPER (Windows-Taste)+A = Suche nach Anwendungen.

SUPER (Windows-Taste)+F = Suche nach Dateien (Files).
KDE Plasma 4 Screenshot unter Debian 8.

KDE Plasma 4:
  • wird stĂ€ndig weiter entwickelt,
  • ist relativ verspielt,
  • verwendet die Qt-Bibliothek.
'universe' Paketquelle hinzufĂŒgen (ab Ubuntu 18.04):
add-apt-repository universe

Folgendes installiert den KDE Plasma Desktop:
apt-get install xorg kde-plasma-deskop

Sprachpaket fĂŒr Ubuntu:
apt-get install language-pack-kde-de
Sprachpaket fĂŒr Debian:
apt-get install kde-l10n-de

weitere Metapakete:
apt-get install kde-standard
apt-get install kde-full

Folgendes installiert den speziell fĂŒr Ubuntu angepassten Desktop (weniger empfohlen):
apt-get install kubuntu-desktop
KDE Plasma 5 Screenshot unter Ubuntu 15.04.

Neu: KDE Plasma 5:
  • hat einen modernen flat Look,
  • und fast ein einheitliches Design,
  • trotzdem ist es noch sehr verspielt,
  • befindet sich z. Z. noch in Entwicklung,
  • verwendet das Qt 5 und KDE Framework 5,
  • Kubuntu 15.04 verwendet KDE Plasma 5 erstmals als Standard Desktop.
KDE-Plasma 5 Installationsanleitung
fĂŒr Ubuntu 14.10:
apt-add-repository ppa:kubuntu-ppa/next
apt-get update
apt-get dist-upgrade
apt-get install kubuntu-plasma5-desktop plasma-workspace-wallpapers

KDE-Plasma Installationsanleitung
ab Ubuntu 15.04:
apt-get install kubuntu-desktop kde-l10n-de
circa Ressourcenverbrauch*:
Xfce:
Download: 92 MB
HD Speicher: +336 MB
HD insgesamt: 1,7 GB
laufende Tasks: 110
belegter RAM: 135 MB
Die Angaben beziehen sich auf das Xfce Grundsystem.
Mate Desktop Environment:
Download: 125 MB
HD Speicher: +423 MB
HD insgesamt: 1,8 GB
laufende Tasks: 103
belegter RAM: 135 MB
GNOME Flashback (Metacity):
Download: 309 MB
HD Speicher: +1180 MB
HD insgesamt: 3 GB
laufende Tasks: 149
belegter RAM: 320 MB
LXDE:
Download: 78 MB
HD Speicher: +288 MB
HD insgesamt: 1,6 GB
laufende Tasks: 107
belegter RAM: 110 MB
LXQt:
Download: 154 MB
HD Speicher: +486 MB
HD insgesamt: 2,1 GB
laufende Tasks: 112
belegter RAM: 150 MB
IceWM:
Download: 40 MB
HD Speicher: +136 MB
HD insgesamt: 1,5 GB
laufende Tasks: 87
belegter RAM: 75 MB
Cinnamon:
Download: 185 MB
HD Speicher: +773 MB
HD insgesamt: 2,7 GB
laufende Tasks: 130
belegter RAM: 260 MB
Ubuntu (Unity):
Download: 625 MB
HD Speicher: +2306 MB
HD insgesamt: 4,8 GB
laufende Tasks: 155
belegter RAM: 500 MB
Die Angaben beziehen sich auf Ubuntu 15.04.
KDE-Plasma 4:
Download: 209 MB
HD Speicher: +707 MB
HD insgesamt: 2,9 GB
laufende Tasks: 115
belegter RAM: 360 MB
Die Angaben beziehen sich auf KDE-Plasma 4.

Hinweise:
Eine parallele Installation von verschiedenen Desktopumgebungen kann zu unerwĂŒnschten Effekten fĂŒhren.
Denn Einstellungen wie Thema, Schriftbild, Panel, Icons usw. können andere vorhandene Desktopumgebungen negativ beeinflussen. Man sollte daher möglichst nur einen Fenstermanager (nur eine Desktopumgebung) installieren.
Um alternative Desktopumgebungen zu testen, kann man auch CD/DVD/USB-Live-Systeme, oder getrennte VM Installationen verwenden.

Das System sollte jetzt in den GrundzĂŒgen einsatzbereit sein.
In den nachfolgenden Schritten werden verschiedenste wichtige Programme, Tipps sowie einige Server Dienste vorgestellt.
Beachtet hier nur die Punkte die Ihr benötigt.

6.

Die grafische BenutzeroberflÀche starten & Autologon:


Hier bitte nur eine Option zum Autologin verwenden.
Die einfache Consolenvariante (links) empfiehlt sich fĂŒr Einzelplatzsysteme und Server - die Variante mit dem Displaymanager (rechts) sollte man verwenden, wenn man einen Anmeldescreen fĂŒr mehrere Benutzer benötigt.
TTY Console Autologin: Grafisches Login mit dem Displaymanager:
Verwendet man 'getty' bzw. 'agetty' fĂŒr das Autologin auf der Console TTY1, dann kann man sich auf dieser Console nicht mehr abmelden. Möchte man das System spĂ€ter durch ein exit wieder sperren, so muss man stattdessen 'rungetty' verwenden:
apt-get install rungetty

Tipp vorab: Sollte das System nach dem Neustart in der Console hĂ€ngen bleiben (das passiert nur bei Falscheingaben), dann meldet man sich einfach ĂŒber eine andere Console an. Z. B. ĂŒber Strg + Alt + F2 an. Hier kann man sich dann normal anmelden und Fehleingaben korrigieren oder auch alles wieder rĂŒckgĂ€ngig machen.
Neu fĂŒr systemd-Versionen:
Unter Debian (ab Debian 8, 9) bzw.
unter Ubuntu (ab Ubuntu 15.04, 15.10, 16.04, 16.10, 17.04, 17.10, 18.04)
muss man folgende Schritte durchfĂŒhren:

Zuerst folgendes Verzeichnis anlegen:
mkdir -pv /etc/systemd/system/getty@tty1.service.d/

Dann eine neue Datei (*.conf) mit folgendem Inhalt anlegen:
nano /etc/systemd/system/getty@tty1.service.d/autologin.conf
# Hier folgende Zeilen hinzufĂŒgen:
[Service]
ExecStart=
ExecStart=-/sbin/
agetty --autologin Benutzername tty1

# alternativ mit rungetty:
# ExecStart=-/sbin/rungetty --autologin Benutzername tty1

# Wichtig: Die leere 'ExecStart=' Zeile muss mit eingegeben werden.
Unter Debian (init-Version bis Debian 7) muss man folgende Datei editieren:
nano /etc/inittab
# Hier die vorhandene Zeile:
1:2345:respawn:/sbin/getty -8 38400 tty1
# so Àndern und speichern:
1:2345:respawn:/sbin/rungetty --autologin Benutzername tty1
Unter Ubuntu (init-Versionen bis Ubuntu 14.10) muss man folgende Datei editieren:
nano /etc/init/tty1.conf
# Hier die vorhandene Zeile:
exec /sbin/getty -8 38400 tty1
# so Àndern und speichern:
exec /sbin/rungetty --autologin Benutzername tty1
Ab sofort sollte das Autologin klappen.

Die Desktopumgebung kann man nun wie folgt starten:
startx

Will man anschließend von der Console aus direkt in die grafische OberflĂ€che starten, so legt man im Homeverzeichnis des Benutzers eine neue Datei an:
nano ~/.bash_profile
# Hier fĂŒgt man folgenden Befehl ein:
startx &
# Tipp: Hier an dieser Stelle kann man natĂŒrlich auch
# beliebige andere Befehle oder Scripte starten (Linux Autostart).

Dann wird nach dem Autologin anschließend direkt der XServer gestartet, ohne dass man einen Displaymanager benötigt.
Wichtig: Will man spĂ€ter auch ĂŒber SSH und Putty zugreifen, so sollte man ein [ &] anhĂ€ngen um den XServer im Hintergund zu starten. Denn hĂ€ngt man das [ &] nicht an, so wĂŒrde in Putty gleich nach dem Login versuchen den XServer zustarten und dann die Console blockieren.
Möchte man dagegen direkt in die Desktopumgebung (GUI) starten, so kann man einen Displaymanager verwenden. Der Displaymanager stellt einen Anmeldbildschirm fĂŒr erschiedene User bereit.
Empfehlen wĂŒrde ich folgenden:
apt-get install lightdm lightdm-gtk-greeter

Das Startverhalten (ob z. B. direkt das grafische Login gestartet werden soll) kann man jederzeit wie folgt anpassen:
nano /etc/default/grub
# Hier den vorhandenen Eintrag:
GRUB_CMDLINE_LINUX_DEFAULT=""
# Àndern in:
GRUB_CMDLINE_LINUX_DEFAULT="text"
# ParametererklÀrung:
# Ein leerer Eintrag "" bedeutet, es wird direkt das grafische Login gestartet.
# Der Eintrag "text" bedeutet, es wird nach dem Login das Terminal (die Console) gestartet.

Anschließend muss man noch die grub Einstellungen aktualisieren:
update-grub

Die Einstellungen werden erst nach einem Neustart ĂŒbernommen:
reboot
In dem Beispiel oben wird also nicht mehr die GUI - sondern nur noch die Eingabeaufforderung (also das Terminal) gestartet.

LightDM Autologon:
Will das ein bestimmter User am LightDM Displaymanager automatisch anmeldet wird, so muss man nur in der Datei:
mousepad /etc/lightdm/lightdm.conf
# Folgendes hinzufĂŒgen:
[SeatDefaults]
autologin-user=Username
# autologin-user-timeout=30
# Der Parameter [autologin-user-timeout=xx] ist optional.
# Angegeben wird hier die Zeitdauer (in Sekunden) die gewartet wird bevor das Autologin stattfindet.
# Meldet sich wÀhrend dieser Wartezeit ein anderer User an, so wird das Autologin unterbrochen.
# Hat man den Parameter nicht angegeben, so wird der User sofort angemeldet.

Nach der Abmeldung des automatisch angemeldeten Users kommt man wieder in die grafische Login-Maske des Displaymanagers, hier kann sich dann auch ein anderer User anmelden.

Gnome 3 Autologon (Ă€hnlich wie bei LightDM):
mouspad /etc/gdm3/daemon.conf
# Hier dann folgende Werte aktivieren & Àndern:
[daemon]
# Enabling automatic login
  AutomaticLoginEnable=true
  AutomaticLogin=Username

# Alternativ kann das verzögerte Login ĂŒber die vorhandenen TimedLogin-EintrĂ€ge vorgenommen werden.
# TimedLoginEnable=true
# TimedLogin=Username
# TimedLoginDelay=10

7.

Anpassung des Netzwerks:


Hier bitte nur eine Auswahl verfolgen.
Entweder man verwendet den Netzwerkmanager links (bei hÀufig wechselnden Adressen & WLANs, VPN oder DSL Einwahl) oder man stellt die IP-Adresse fest ein (rechts).
Netzwerkkonfiguration ĂŒber Netzwerkmanager (WLAN, VPN, DSL): IP-Adresse fest einstellen (Server) bis Ubuntu 17.04:
Eine Möglichkeit ist es den Netzwerkmanager zu verwenden, um die Netzwerkeinstellungen zu Àndern. Der Netzwerkmanager wird verwendet, um Netzwerkeinstellungen mit Hilfe einer ProgrammoberflÀche vorzunehmen.
Zum Beispiel kann man hier WLANs auswÀhlen, VPN oder eine DSL Einwahl konfigurieren oder statische IP-Adressen vergeben.

Will man die Netzwerkeinstellungen anpassen, so empfiehlt es sich den Netzwerkmanager nach zu installieren:
apt-get install network-manager network-manager-gnome network-manager-openvpn-gnome
Hinweis: [network-manager-openvpn-gnome] muss man nur installieren wenn man VPN-Verbindungen mit dem Netzwerkmanager einrichten will.

Zuerst muss man die Konfiguration der Netzwerkkarte hier deaktivieren:
nano /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback
# Das loopback-Netzwerkinterface also Original belassen.

# The primary network interface
# allow-hotplug eth0
# iface eth0 inet dhcp
# Und das Netzwerkinterface der Karten auskommentieren (deaktivieren)
# die man ĂŒber den Netzwerk-Manager einstellen will.


Gleich im Anschluss muss man dann folgende Konfigurationsdatei editieren (nicht immer nötig):
nano /etc/NetworkManager/NetworkManager.conf
Hier den vorhandenen Eintrag wie folgt Àndern:
managed=true

Damit der NetworkManager auch noch im Taskleisten-Tray erscheint (je nach Umgebung vorher testen) muss man noch folgende Datei editieren (nicht immer nötig):
nano /etc/xdg/autostart/nm-applet.desktop
# Und hier in der Zeile:
Exec=

# den Eintrag [nm-applet] in [dbus-launch nm-applet] Àndern.

Die Netzwerkeinstellungen werden erst nach einem Neustart ĂŒbernommen.
Die Lösung hier gilt bis Ubuntu 17.04. Ab Ubuntu 17.10/18.04 wird netplan verwendet.
Eine andere Möglichkeit der Netzwerkanpassung besteht durch direktes anpassen der Konfigurationsdateien.
Statische IP-Adesse vergeben:

Die Netzwerk-Konfigurationsdatei öffnen:
nano /etc/network/interfaces

die vorhandene Standardkonfiguration:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

wie folgt Àndern (IP-Adressen entsprechend anpassen):
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static # eth0 ist die Netzwerkschnittstelle, beachtet dabei,
                       # dass diese ab Ubuntu 15.10 unterschiedliche Namen tragen kann.
address 192.168.2.100
netmask 255.255.255.0
gateway 192.168.2.1
broadcast 192.168.0.255
network 192.168.0.0
dns-search domain.localnet intern.home # Man kann mehrere DomÀnennamen/SubdomÀnen angegeben.
dns-domain domain.localnet
dns-nameservers 192.168.2.1 8.8.8.8 # DNS-Server (Lokal & Internet, hier z. B. der Google DNS-Server).
# Wichtig: Hier kann man einen, oder maximal zwei DNS-Server angeben.
# LĂ€sst man die DNS-Serverangabe weg, so kann es zu verschiedensten Fehlern
# wie [unknown host], [... konnte nicht aufgelöst werden.] kommen.
# Daher sollte man den DNS-Server-Eintrag in der Regel immer mit angeben.
# Im Home-Office sollte dies in der Regel die IP-Adresse des Routers/Gateways sein.
# 8.8.8.8 ist ein freier öffentlicher DNS-Server von google.
hwaddress ether 00:11:22:33:44:55 # Optional die MAC-Adresse Ă€ndern (erleichtert ggf. die NetzwerkĂŒbersicht).
# Hinweis: Ändert man unter VirtualBox in der VM die MAC-Adresse, dann hat man keinen Netzwerkzugriff mehr.
# Verwendet man VirtualBox, so kann man die MAC-Adresse nur
# ĂŒber den MenĂŒpunkt [Netzwerk] im [Oracle VM VirtualBox Manager] Ă€ndern.

den Netzwerk Interface Namen Àndern (optional): IP-Adresse fest einstellen (Server) ab Ubuntu 17.10/18.04:
Ab Ubuntu 15.10 erhalten die Netzwerkschnittstellen neue Interface Namen.
Die Namen orientieren sich dabei unter anderem an der Art des Anschlusses (onboard, PCI-Express, USB, WLAN).
Statt eth0, eth1 heißt der Interface Name der Netzwerkkarte dann z. B. enp0s3, enps21, eno1, wlp3s0 usw.
Insbesondere im Betrieb an- und abschaltbare Netzwerkkarten/GerĂ€te wie z. B. USB-Netzwerkkarten machten eine Anpassung des alten Namenschemas erforderlich.
FĂŒr die Namensvergabe ist udev verantwortlich.
Im Allgemeinen empfehle ich die Einstellung nach dem neuen Schema zu belassen.
Falls man den Namen trotzdem Ă€ndern will so empfehle ich folgende 2 Varianten.

Ändern kann man den Namen wie folgt:
Variante 1 (empfohlen/Update fest):
folgende Datei neu anlegen/Ă€ndern:
nano /etc/udev/rules.d/999-network.rules # Die hohe Nummer sorgt dafĂŒr, dass dieser Eintrag bei einem Update bestehen bleibt.
# Hier folgendes in einer Zeile einfĂŒgen:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="11:22:33:44:55:66", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="eth1"
# Hinweise:
# FĂŒr jede Netzwerkkarte wird ein separater Eintrag erzeugt.
# Die doppelten Gleichheitszeichen muss man genauso mit ĂŒbernehmen.
# Die MAC-Adresse muss zur jeweiligen Netzwerkkarte passen.
# Alle Buchstaben der MAC-Adresse muss man klein schreiben (sofern welche vorkommen).
# Den Name kann man dabei beliebig wÀhlen, eth0, eth1 sind nur VorschlÀge nach dem alten Schema.

Nach einem Neustart ist die Netzwerkkarte ĂŒber den neuen Namen erreichbar.

Variante 2 (weniger empfohlen/nicht Update fest):
nano /etc/default/grub
# Hier die folgende Zeile wie folgt ergÀnzen:
...
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
...
# Beachtet: Bei einem Kernel Update/Grub Update wird diese Einstellung möglicherweise wieder zurĂŒckgesetzt.

Anschließend muss man noch die geĂ€nderten grub Einstellungen aktualisieren:
update-grub

Wichtig:
Beachten sollte man, dass man bei der dazugehörigen Netzwerkkonfiguration
unter [/etc/netplan/*] bzw. [/etc/network/interfaces] (siehe rechte Spalte)
den Netzwerkinterface-Namen entsprechend angepassen muss.
Hier im Beispiel mĂŒsste man dann aus enp0s3 -> eth0 machen.

Nach einem Neustart ist dann die Netzwerkkarte ĂŒber den neuen Namen erreichbar.


 
Ab Ubuntu 17.10/18.04 wird netplan zur Netzwerkkonfiguration verwendet.
Mit netplan sind vielfÀltige Konfigurationsvarianten möglich.
Unter anderem wird dhcp, static-ip, wakeonlan, routen, bridges, wifi (mit Passwortangabe) und vieles mehr unterstĂŒtzt.

Eine statische IPv4-Adresse richtet man wie folgt ein:
In das Konfigurationsverzeichnis wechseln:
cd /etc/netplan

Alle Netzwerkkonfigurationen auflisten:
ls -laF
Beachtet dabei, der Konfigurationsname kann verschieden sein, auch mehrere Konfigurationsdateien sind möglich. Legt man mehrere Konfigurationen an, so werden diese in lexikalischer Reihenfolge (0-9 & A-Z) eingelesen.

# Zu Beginn ist oft nur eine einzelne yaml-Konfigurationsdatei zur Netzwerkkonfiguration vorhanden.
# Diese sollte man öffnen:
nano 01-netcfg.yaml # Den Dateinamen ggf. anpassen.
nano /etc/netplan/* # Oder wenn es nur eine Konfiguration gibt, diese direkt öffnen.

die vorhandene Standardkonfiguration:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3: # Beachtet der Interface-Name der Netzwerkkarte ist GerÀteabhÀngig/verschieden.
      dhcp4: yes
      dhcp6: yes

wie folgt Àndern (IP-Adressen entsprechend anpassen):
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  ethernets:
    enp0s3: # Den Interface-Name der Netzwerkkarte muss man entsprechend ĂŒbernehmen.
      dhcp4: no # Den automatischen Bezug von IPv4-Adressen ausschalten.
#     dhcp6: no # Den automatischen Bezug von IPv6-Adressen ausschalten (APIPA Adresse).
      addresses: [192.168.2.100/24] # statische IPv4-Adresse und Subnetzmaske.
      gateway4: 192.168.2.1         # Standardgateway, meist die DSL-Router IP-Adresse.
      nameservers:
        addresses: [192.168.2.1, 1.1.1.1, 9.9.9.9, 8.8.8.8] # DNS-Server Lokal & Internet.

# ParametererklÀrungen:
# IP-Adresse und Subnetzmaske:
# 192.168.2.100 = ist die feste IP-Adresse die man vergeben will.
# /24 = bestimmt die Subnetmaske (3 Bytes * 8 Bits = 24 Bits = 255.255.255.0).

# DNS-Server Adressen:
# 192.168.2.1 = ist hier Beispielsweise ein lokaler DNS-Server. Beachtet dabei, ein
# DSL-Router verwendet in der Regel nur einen DNS-forwarder ĂŒber das Standardgateway.
# Die IP-Adresse vom DSL-Router sollte man daher hier nicht angegeben.
# 1.1.1.1 = ist der freie DNS-Server von CloudFare + APNIC.
# 9.9.9.9 = ist der freie DNS-Server von Global Cyber Alliance (GCA) + Partner.
# 8.8.8.8 = ist der freie DNS-Server von Google.

# Wichtiges:
# Die Konfiguration darf keine Tabulator-Zeichen enthalten.
# Zum EinrĂŒcken sind nur Leerzeichen erlaubt. Wenn man doch Tabs verwendet hat, dann
# erhÀlt man den Fehler: [Invalid YAML at ... found character that cannot start any token].

# Wenn die EinrĂŒckung nicht stimmt dann erhĂ€lt man den Fehler:
# [Invalid YAML at /etc/netplan/ ... mapping values are not allowed in this context]
# Beachtet hier folgendes:
# Alle SchlĂŒssel muss man mit Leerzeichen wie oben dargestellt nach rechts einrĂŒcken.
# Dies ist notwendig, damit das System die SchlĂŒssel korrekt zuordnen kann.
# Hier noch ein Beispiel. 'addresses' gibt es z. B. zweimal.
# Der erste 'addresses' SchlĂŒssel bezieht sich auf die Netzwerkkarte (hier enp0s3),
# dieser bestimmt die IP-Adresse der Netzwerkkarte.
# Der zweite 'addresses' SchlĂŒssel bezieht sich auf 'nameservers',
# dieser gibt hier die Adresse(n) zum DNS-Server an.
# Damit das System diese doppelten Werte korrekt zuordnet, muss eingerĂŒckt werden.

# Man erhÀlt den Fehler: [Error in network definition /etc/netplan/ ... unknown key adresses],
# wenn man die SchlĂŒssel also den Teil links vor dem Doppelpunkt falsch geschrieben hat.

# Man erhÀlt den Fehler: [Error in network definition /etc/netplan ... expected sequence],
# wenn man die eckigen Klammern [ ] bei SchlĂŒsseln mit mehreren Werten nicht vorhanden sind.

# Beachtet auch, zu den angezeigten fehlerhaften Zeilen (line) und Spaltennummern (column)
# muss man in der Regel immer eins (+1) dazu addieren.

Die neuen Einstellungen werden bei einem Neustart automatisch ĂŒbernommen.
Mit folgendem Befehl kann man die Änderungen sofort prĂŒfen und ĂŒbernehmen:
netplan apply
Eventuelle Fehler werden sofort angezeigt.
Wird nach Eingabe des Befehls nichts angezeigt, dann ist alles ok.

FĂŒr debug Zwecke kann man folgenden Befehl verwenden:
netplan --debug apply
Hier sieht man dann mehr Details, so kann man ggf. Fehler leichter finden und beheben.

Aufruf der Hilfe mit:
man netplan

Von der Konfigurationsdatei sollte man vor der Bearbeitung eine Sicherung anlegen.
Da netplan nur *.yaml-Dateien verarbeitet, empfehle ich das AnhÀngen des Datums.
Beispielsweise so (Dateiname & Pfad entsprechend anpassen):
cp 01-netcfg.yaml 01-netcfg.yaml.2018-06-05

Hierzu noch folgende kurze Anmerkungen:
Man sollte sich bevorzugt mit dem neuen Schema befassen (das ist Zukunftssicher).
Ich empfehle daher nicht auf das alte Schema umzuschalten (auch das wÀre möglich).
Vor allem sollte man niemals alte Konfigurationen (/etc/network/interfaces) und
neue netplan Konfigurationen (/etc/netplan/*) zur gleichen Zeit verwenden.
Um Problemen aus dem Weg zugehen solltet ihr hier nur einen Weg nutzen.
Ich persönlich wĂŒrde ab Ubuntu 17.10/18.04 die neuen Einstellungen ĂŒber netplan nutzen.

Tipps zum Netzwerk:
Änderungen am Netzwerk werden erst ĂŒbernommen wenn man das Netzwerk neu startet.
ip -c a = Zeigt die derzeitige Netzwerkkonfiguration farblich hervorgehoben an.
ip link = Zeigt die MTU Einstellung und MAC-Adressen an.
ifconfig -a = Zeigt die derzeitige eingestellte Konfiguration an.
networkctl status -a = Status-Anzeige der verwendeten Netzwerklinks.
ifup eth0 = startet das Netzwerk eth0.
ifdown eth0 = beendet das Netzwerk eth0.
ping 192.168.2.1 = setzt Ping Pakete an die Adresse 192.168.2.1 ab.
netstat -npl = Zeigt Aktive Internetverbindungen, Sockets und die verwendeten Ports an.
netstat -s = Zeigt verschiedene Paketstatistiken an.
apt-get install traceroute = Installiert das Linux Pendant zum Windows Befehl [tracert] um Routen zu verfolgen [traceroute IP oder Hostname].
/etc/hostname = die Datei enthÀlt den Hostnamen des eigenen Systems.
/etc/hosts = in der Datei kann man IP-Adressen und Domain-Namen sowie lokale PC-Namen zuweisen (auch fĂŒr Werbeblocker geeignet).

8.

hosts-Datei/WINS/NetBIOS Hostnamen auflösen (winbind):


Wichtig in kleinen Netzwerken:
Wenn man keinen eigenen DNS-Server eingerichtet hat (also nur einen Standard DSL-Router verwendet), dann macht der Router nicht automatisch eine Namensauflösung,
denn der Router leitet die Namens-Anfragen nur an die vom Provider bereitgestellten DNS-Server im Internet weiter.
Diese DNS-Server im Internet kennen jedoch die PCs und GerÀte im LAN nicht und eine Namensauflösung schlÀgt fehl.
Daher kann der Router diese Hostnamen nicht auflösen.

Um das Problem zu lösen installiert man entweder einen DNS-Server (wie z. B. bind9) oder einen WINS-Server (der Windows Internet Name Service (WINS) ĂŒbernimmt die Namensauflösung von NetBIOS-Computernamen).

Am einfachsten installiert man den [samba nameservice integration server] (winbind):
apt-get install winbind

Danach muss nur noch folgende Konfigurationsdatei angepasst werden:
nano /etc/nsswitch.conf
# Hier Àndert man die Zeile hosts: wie folgt ab:
...
hosts: files wins dns
...

ParametererklÀrung:
Die Hostnamenauflösung aller NetzwerkgerÀte (PCs, Drucker, Tablet ...) sollte damit sofort klappen.
Denn winbind dient der Integration von Namensdiensten fĂŒr Samba-Server und erledigt das Auflösen von Benutzer-/Gruppeninformation fĂŒr Microsoft Windows, OS X, und andere Unix-Systeme.
Die Reihenfolge der Abfragen kann man beliebig festlegen:
[files] steht fĂŒr die Abfrage ĂŒber die [/etc/hosts]-Datei.
[wins] steht fĂŒr die Abfrage ĂŒber den WINS-Server.
Wenn kein WINS-Server im Netzwerk vorhanden ist geschieht die WINS-Namensauflösung ĂŒber NetBIOS-Broadcast.
Das bedeutet nichts anderes, als dass ein Computer, der einen Hostnamen im Netz auflösen möchte, einen Broadcast (Rundruf) ins lokale Netzwerk (an alle im Subnetz) sendet und so den angesprochenen EmpfĂ€nger auffordert mit seiner IPv4-Adresse (WINS ist nicht IPv6 kompatibel) zu antworten. Auf Grund wie diese Informationen ĂŒber das Netzwerk ĂŒbermittelt werden kann dies ggf. ein Sicherheitsrisiko darstellen (wenn kein Zentraler Server vorhanden ist).
WINS beantwortet nur Antworten aus dem eigenen Subnetz - Routen in andere Netze schlagen daher oft fehl.
NetBIOS-Namen (Hostnamen) dĂŒrfen maximal nur 15 Zeichen lang sein.
[dns] steht fĂŒr die Abfrage ĂŒber den DNS-Server.

Die [winbind]-Installation behebt also typische Namensauflösungsfehler wie z. B.: [ping: unknown host] (ping), [server can't find ... : NXDOMAIN] (nslookup), [... : Der Name oder Dienst ist nicht bekannt] (traceroute).

Alternativen:
Will man nicht noch einen extra Daemon laufen lassen, so kann man Hostnamen auch ĂŒber die [hosts]-Datei bekannt machen:
nano /etc/hosts

9.

Netzwerk browsing aktivieren:


Kann man das Netzwerk nicht nach (Windows) Freigaben durchsuchen, so muss man folgendes Paket nachinstallieren:
apt-get install gvfs-backends
Dieses ermöglicht das EinhĂ€ngen von virtuellen Dateisystemen, also das EinhĂ€ngen von verschiedensten Freigaben (wie z. B. ftp, http, network, sftp, smb, smb-browse, usw.).

10.

Empfehlenswerte Zusatzprogramme:


Da einige Minimalinstallationen sehr spartanisch daher kommen, hier noch ein paar empfohlene/wichtige Programme die man je nach Bedarf nach installieren kann.
EintrÀge die mit Sternen gekennzeichnet wurden sind meine persönliche Bewertung (mehr Sterne [*] = besser - bewertet wurde der Funktions- und Bedienungsumfang).
EintrÀge die mit einem Herzen [] gekennzeichnet wurden sind meine besonderen Empfehlungen.
Am Ende ist bei einigen Programmen in Klammern die jeweils dazugehörige Standard Systemumgebung angegeben.
NatĂŒrlich kann man die Programme unter jeder beliebigen Distribution installieren.

apt-get install update-manager - installiert ein Programm um System-Updates zu installieren (fĂŒr alle auf Ubuntu basierende Systeme).
apt-get install pcmanfm - ** installiert einen Dateimanager (LXDE).
apt-get install gnome-system-monitor - ** installiert einen Taskmanager, der unter anderem den CPU- und RAM-Verbrauch sowie Netzwerk-Traffic anzeigen kann (Gnome).
apt-get install mate-system-monitor - installiert einen Taskmanager, der unter anderem den CPU- und RAM-Verbrauch sowie Netzwerk-Traffic anzeigen kann (MATE).
apt-get install xfce4-taskmanager - * installiert einen einfachen Taskmanager, der unter anderem den CPU- und RAM-Verbrauch anzeigen kann (Xfce).
apt-get install lxtask - installiert einen einfachen Taskmanager, der unter anderem den CPU- und RAM-Verbrauch anzeigen kann (LXDE).
apt-get install mousepad - ** einen Text Editor mit Syntaxhervorhebung installieren (Xfce).
apt-get install pluma - *** installiert einen Text Editor mit Syntaxhervorhebung und Plugin-Optionen - wie z. B. eine RechtschreibprĂŒfung [apt-get install hunspell-de-de] (MATE).
apt-get install leafpad - einen Text Editor installieren (LXDE).
apt-get install synaptic - eine grafische Paketverwaltung installieren.
apt-get install xfce4-terminal - ** installiert ein Terminal, in dem man auch eigene Fonts verwenden kann (Xfce).
apt-get install lxterminal - installiert ein Terminal, in dem man auch eigene Fonts verwenden kann (LXDE).
apt-get install virtualbox-guest-x11 - die VirtualBox Gasterweiterungen installieren. Optionale Pakete [virtualbox-guest-dkms] & [virtualbox-guest-utils].
apt-get install firefox firefox-locale-de - installiert den Webbrowser Firefox.
apt-get install iceweasel iceweasel-l10n-de - installiert den auf Firefox basierenden Webbrowser unter Debian.
apt-get install chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg chromium-codecs-ffmpeg-extra - installiert Google Chrome, mit Multimedia-Codecs, wie z. B. AAC/AC3/MPEG-4 Audio/H264/QuickTime/MP3.
apt-get install chromium chromium-l10n - installiert Google Chrome unter Debian.
apt-get install thunderbird thunderbird-locale-de - installiert das E-Mailprogramm Thunderbird unter Ubuntu.
apt-get install icedove icedove-l10n-de - installiert ein E-Mailprogramm (basiert auf Thunderbird) unter Debian.
apt-get install midori - installiert einen schlanken Webbrowser (Xfce4).
apt-get install fonts-croscore - installiert den Monospace Font 'Cousine' (bei Debian erst ab Version 8 verfĂŒgbar) z. B. fĂŒrs Terminal.
apt-get install xfonts-terminus - installiert den Terminus Font z. B. fĂŒrs Terminal.
apt-get install language-pack-gnome-de - installiert fehlende Sprachpakete nach (Gnome).
apt-get install language-pack-de - installiert fehlende Sprachpakete nach (Metapaket fĂŒr Systemanwendungen).
apt-get install oxygen-icon-theme - installiert ein alternatives Icon-Thema.
apt-get install xarchiver - installiert einen Packer (Xfce).
apt-get install Xfburn - installiert eine Brennsoftware (Xfce).
apt-get install brasero - * installiert eine Brennsoftware die unter anderem auch CD/DVD kopieren kann (auch als Image).
apt-get install lxmusic - installiert einen einfachen Musikplayer (LXDE).
apt-get install vlc - * installiert den VLC media player von VideoLAN.org (vlc startet ggf. nicht wenn man als root-User angemeldet ist).
apt-get install parole - installiert einen schlanken Videoplayer (Xfce4).
apt-get install gpicview - ** installiert einen Bildbetrachter (LXDE).
apt-get install ristretto - * installiert einen Bildbetrachter (Xfce4).
apt-get install eom - installiert den Bildbetrachter Eye-of-Mate (MATE).
apt-get install xfce4-whiskermenu-plugin - installiert unter Xfce ein schlichtes alternatives StartmenĂŒ (dieses kann man dann der Leiste hinzufĂŒgen). Funktionen wie: Favoriten, Gliederung der Anwendungen, Anzeige der zuletzt genutzten Programme, oder eine Suchfunktion werden hier bereitgestellt.
apt-get install adblock-plus - installiert einen Werbefilter fĂŒr den Webbrowser.
apt-get install warmux supertux pingus monkey-bubble tecnoballz lbreakout2- installiert folgende Games: einen Worms Clone, ein Jump'n'Run, ein Lemmings-Clone, ein Bubble-Spiel und zwei Breakout's Clones. Die gelb hervorgehobenen laufen unter einer VM eher schlecht.
apt-get install ubuntu-restricted-extras - installiert unfreie Code-Plugins unter anderem gstreamer, ffmpeg, adobe-flashplugin und MS-Fonts (Ubuntu).
apt-get install flashplugin-nonfree installiert den Adobe Flashplayer - unter UmstĂ€nden muss die [Multiverse]-Paketquelle hinzugefĂŒgt werden.
apt-get install openjdk-9-jdk openjdk-9-source openjdk-9-demo openjdk-9-doc openjdk-9-jre-headless - installiert das Java-Development-Kit (fĂŒr Entwickler).
apt-get install openjdk-*-jre icedtea-*-plugin - installiert immer die aktuelle Java Version incl. Webbrowser-Plugin.
Hinweis: Setzt man statt der Versionsnummer den Joker '*' ein, so wird immer automatisch die aktuelleste Version ausgewÀhlt.
apt-get install compizconfig-settings-manager compiz-plugins-extra - (universe) erweiterte Effekte (wie einen 3D-Desktop, abbrennende-, wabbelnde- und explodierende-Fenster uvm.) nachrĂŒsten (Ubuntu). [ccsm] startet den 'CompizConfig Einstellungs-Manager', alle geĂ€nderten Einstellungen werden im Ordner [~/.gconf/] gespeichert. Bei Fehlern sollte man diesen Ordner löschen und neu starten.
apt-get install p7zip-full - installiert den Packer 7-zip.org [7z].
apt-get install ntfs-3g - Lese- und Schreibzugriff fĂŒr NTFS-Dateisysteme nachrĂŒsten (nur Debian/unter Ubuntu bereits integriert). In aktuellen Live-Systemen ist dies meist schon installiert.
apt-get install hardinfo sysinfo lshw lshw-gtk - installiert verschiedene Tools um Hardware-Infos an zu zeigen (fĂŒr Console & XServer).
apt-get install gsmartcontrol smartmontools - installiert Tools um SMART-Werte (Self-Monitoring, Analysis, and Reporting Technology) von SSDs & HDs anzuzeigen & zu ĂŒberwachen [smartctl -a /dev/sda].
apt-get install libreoffice libreoffice-l10n-de libreoffice-help-de - installiert das komplette LibreOffice.
apt-get install gimp gimp-help-de - installiert GIMP2.
apt-get install testdisk - sucht und repariert gelöschte Partitionstabellen (Hinweis: testdisk stellt den MBR nicht wieder her). Alternativ kann man zum Partitionen wieder herstellen [gpart -g -i -W /dev/sda /dev/sda] verwenden - gpart unterstĂŒtzt zurzeit allerdings kein ext3 & ext4.

11.

Paketquellen entfernen:


Will man Programme nachinstallieren, so wird unter Debian oft nach der Installations-CD/DVD gefragt.
Hat man diese nicht mehr zur Hand, oder will man aus Bequemlichkeit lieber die Online-Quellen verwenden,
so kann man diese einfach auskommentieren. Öffnet hierzu die Datei:
nano /etc/apt/sources.list
# Hier Àndert man alle EintrÀge, die den Eintrag [cdrom:] enthalten:
deb cdrom: [...] / ... main
# so ab:
# deb cdrom: [...] / ... main
# Man fĂŒgt also vor die Entsprechenden Zeilen ein Rautezeichen [#] ein.
# Das Rautezeichen bedeutet, dass diese Zeilen nicht mehr ausgewertet werden.

12.

TTY Terminal Consolen Font Àndern & Tipps zur Console:


Damit mehr in der in den Consolen (Strg + Alt und F1 bis F7) angezeigt wird, kann man einen anderen Font auswÀhlen:
dpkg-reconfigure console-setup
Hier wĂ€hlt man dann z. B. folgendes:
UTF-8
# Latin1 und Latin5 - ...
Terminus (optional TerminusBold oder Fixed)
8x14

Danach haben die Terminals z. B. 28 statt 25 Zeilen.

Möglichkeit 2 bzw. Workaround falls die Einstellungen nach einem Neustart nicht ĂŒbernommen werden:
Unter Ubuntu 15.04/Ubuntu 15.10 wird die Einstellung von [dpkg-reconfigure console-setup] nach einem Neustart vergessen (bug?).
Man kann hier einfach in der Datei:
nano /etc/rc.local
# Hier vor dem Eintrag [exit 0] eine den entsprechenden Fontaufruf hinzufĂŒgen (hier 2 VorschlĂ€ge):
/bin/setfont /usr/share/consolefonts/Lat7-Terminus14.psf.gz
/bin/setfont /usr/share/consolefonts/Lat7-Fixed13.psf.gz
# Weitere Fonts und GrĂ¶ĂŸen findet man im Verzeichnis [/usr/share/consolefonts/].

Tipps zum Terminal/zur Console:
Seitenweises scrollen im Terminal ĂŒber Shift + Bild auf bzw. Shift + Bild ab.
Strg + r die letzten Befehlseingaben durchsuchen.
Strg + a Cursor an Zeilenanfang setzen.
Strg + e Cursor an Zeilenende setzen.
Strg + u Zeileninhalt löschen.
Strg + Shift + v etwas im Terminal einfĂŒgen (anders als zum Beispiel in Windows).

Die Terminal/Consolen Historie löschen:
Gespeichert wird die Historie in einer versteckten Text-Datei mit dem Namen [.bash_history], in der Regel liegt die Datei direkt im entsprechenden Userprofil.
Hierzu vorab noch folgender Tipp: Beginnt man den Kommandozeilenbefehl mit einem Leerzeichen, so wird dieser nicht in der Historie gespeichert.

Den Historie-Cache löschen:
history -cw
ParametererklÀrung:
[-c] = (clear) löscht die Historie.
[-w] = (write) schreibt die [.bash_history]-Datei neu.
[-cw] = löscht also die Historie & speichert diese sofort (leer) ab.

Man kann die History auch löschen in dem man die History-Datei selbst löscht.
rm ~/.bash_history
Da sich ggf. noch eine Kopie der History im RAM befindet, muss man im Anschluss noch alle Terminals schließen - dann sollte die History leer sein.

13.

Grafische Fernsteuerung/Fernwartung der Server:


Die Vorgestellten Lösungen sind eine Auswahl, diese wurden getestet und fĂŒr gut befunden.
Es gibt natĂŒrlich noch eine Vielzahl anderer Möglichkeiten zur Fernsteuerung. Hier sollte man sich also je nach Bedarf die benötigte Verbindung heraussuchen.
xrdp (RDP): vino (VNC): x11vnc (VNC):
Um von Windows aus auf den Desktop zu zugreifen installiert man am einfachsten den xrdp Server (Remote Desktop Protokoll) (sourceforge.net/projects/xrdp, xrdp.org):
apt-get install xrdp

Anpassungen unter:
mousepad /etc/xrdp/xrdp.ini

xrdp erzeugt neue virtuelle X-Sitzungen, teilweise stimmten hier bei mir die Pfade nicht, so dass bei mir z. B. Installationen nicht klappten.
Den VNC Server installieren:
apt-get install vino

Passwort und Einstellungen festlegen:
vino-preferences
vino-passwd

VNC Serverstart ĂŒber:
/usr/lib/vino/vino-server

Problemlösung falls es nicht klappt (VerschlĂŒsselung ausschalten):
apt-get install dconf-editor

Den Editor starten:
dconf-editor
Hier unter [org] >[gnome] > [desktop] > [applications] > [remote-access],
bei [require-encryption] den [ ] Haken entfernen.

Wenn man will kann man hier auch einen [view-only] Modus aktivieren.

Hinweis: Achtung die Tastaturbelegung ist US nicht DE.
Der x11vnc Server gefÀllt mir persönlich derzeit am besten, denn x11vnc gibt 1:1 den tatsÀchlichen Bildschirminhalt wieder.

x11vnc Installieren ĂŒber:
apt-get install x11vnc

Starten kann man den Server (ohne Passwortabfrage) ĂŒber:
x11vnc
Beim Starten sollte man die angezeigte Portadresse beobachten.

ZunÀchst sollte man ein Passwort festlegen (mit eigenem Pfad zur Passwortdatei):
x11vnc -storepasswd P@ssw0rD /etc/x11vnc.pass

Man sollte diese Datei auch fĂŒr andere lesbar machen (so das auch Standard-User eine VNC-Verbindung aufbauen können):
chmod 644 /etc/x11vnc.pass

Den Server kann man jetzt mit Passwortabfrage starten (mit eigenem Pfad zur Passwortdatei) einmaliger Verbindungsaufbau:
x11vnc -rfbauth /etc/x11vnc.pass

Alternativ kann man das Passwort auch ĂŒber die Terminal Zeile eingeben:
Das Passwort wird hierbei im Terminal abgefragt und automatisch verschlĂŒsselt in der Datei ~/.vnc/passwd im User-Home-Dir gespeichert.
x11vnc -storepasswd

Der Server wird dann so gestartet (es wird hierbei dann die oben angelegte ~/.vnc/passwd Passwortdatei aus dem User-Home-Dir verwendet.):
x11vnc -usepw

Den Server mit einem bestimmten Port starten:
x11vnc -rfbport 5900

Den Server fĂŒr einen dauerhaften Verbindungsaufbau bereit machen:
x11vnc -forever

NatĂŒrlich können die Parameter auch zusammen verwendet werden:
x11vnc -rfbauth /etc/x11vnc.pass -forever -rfbport 5900 &

VNC Tastaturlayout auf Deutsch umstellen:
Unter Xfce wird das Tastaturlayout nicht ĂŒbernommen.
Beheben kann man das Problem in dem man die Spracheinstellung fest auf die gewĂŒnschte Sprache einstellt.
Hierzu muss man unter [Einstellungen] > [Einstellungen] > [Tastatur] > [Tastaturbelegung] den [ ] Haken bei [Systemweite Einstellungen benutzen] entfernen.

Der Verbindungsaufbau vom Client aus erfolgt dann ĂŒber IP-Adresse und Portangabe, also z. B. so:
192.168.2.1:5900

Sicherheitshinweise:
RDP-Verbindungen verwenden nur eine RC4-VerschlĂŒsselung - diese gilt als nicht mehr 100 % sicher.
Auch VNC-Verbindungen sind nicht verschlĂŒsselt, es werden z. B. Tastatureingaben im Klartext ĂŒbertragen!
Es besteht daher die Gefahr, das Übertragungen belauscht und Passworte mitgeschnitten werden.
Man sollte daher RDP- und VNC-Verbindungen nur Netzintern bzw. abgesichert ĂŒber ein VPN oder einen anderen gesicherten Tunnel verwenden.

Will man auf die Systeme gesichert (ĂŒber das Internet) zugreifen, so empfiehlt sich die Nutzung von SSH (siehe Punkt 15).

14.

vsftpd FTP-Server mit Benutzeranmeldung (FTP/FTPS):


vsftpd ist ein FTP-Server der auf besondere Sicherheit ausgelegt wurde (Very Secure File Transfer Protocol Daemon).
vsftpd ist schnell, stabil und sicher und wird bei den meisten Distributionen regelmĂ€ĂŸig gepflegt und mit Sicherheitsupdates versorgt.
Daher wĂŒrde ich vsftpd bevorzugt empfehlen.
Links: Original Webseite - vsftpd.conf ParametererklÀrungen
vsftpd Grundkonfiguration & Benutzerkonfiguration: Absicherung mit Zertifikaten (FTPS-Server):
Den FTP-Server installieren:
apt-get install vsftpd

Anschließend muss man Konfigurationsdatei öffnen:
nano /etc/vsftpd.conf
# Hier folgende Zeilen am Anfang hinzufĂŒgen:
userlist_deny=NO # Die Anmeldungen von allen lokalen Usern verbieten (erhöht die Sicherheit).
userlist_enable=YES # Ausgenommen sind nur lokale User die auf der unter [userlist_file] gefĂŒhrten Liste stehen.
userlist_file=/etc/vsftpd.user_list # Optional: Die Datei wird geladen wenn [user_list] auf [YES] steht (Standard ist /etc/vsftpd.user_list).
local_root=/srv/ftp # In diesen Pfad wird nach einem Userlogin gewechselt. Hier mĂŒssen dann die bereitgestellten FTP-Daten hin.

# Und folgende vorhandene Zeilen Àndern:
anonymous_enable=NO # Auf [NO] umĂ€ndern = Anonymen Zugang nicht gestatten.
local_enable=YES # Das Rautezeichen [#] Am Anfang entfernen. Lokalen Benutzern den Login gestatten.
xferlog_enable=YES # Optionales Logging (Standard=YES). Kann man spÀter auch ausschalten.
connect_from_port_20=NO # Auf [NO] umÀndern. Der Port 21 reicht in der Regel völlig aus.
ftpd_banner=Willkommen # Optional: Eigene Willkommensmeldung fĂŒr FTP GĂ€ste.
dirmessage_enable=YES # Anzeigen von [.message]-Dateien.
use_localtime=NO # Optional: Wenn die Zeit im FTP abweicht auf [NO] stellen (war bei mir in VMs so).

chroot_local_user=YES # Hier das Rautezeichen [#] Am Anfang entfernen.
# Lokale Benutzer auf das Home Verzeichnis (definiert unter local_root) beschrÀnken (erhöht die Sicherheit).
# Achtung den Eintrag gibt es zweimal, einen aktivieren reicht aus.

listen_port=21 # Optional: Wer mag kann auch den Standard-Port Àndern.
# Ein geÀnderter Port kann auch Angriffe erschweren.
# Will man auf den FTP-Server ĂŒber das Internet
# zugreifen, so muss man im Router fĂŒr diesen Port
# eine entsprechende Weiterleitung einrichten.

Will man fĂŒr Tests vorĂŒbergehend nur die Anonyme Anmeldung zulassen, so muss man [userlist_enable=NO] und [anonymous_enable=YES] setzen, sowie den [vsftpd]-Dienst neu starten.

Als nĂ€chstes muss man die User hinzufĂŒgen die den FTP-Server besuchen dĂŒrfen:
nano /etc/vsftpd.user_list
Hier kann man dann die User hinzufĂŒgen denen der FTP-Zugang gewĂ€hrt wird:
Benutzer1
Benutzer2
...

Wichtig:
Alle geĂ€nderten Einstellungen werden erst nach einem Neustart des FTP-Servers ĂŒbernommen.
Den Server Neustarten/Starten/Beenden:
service vsftpd restart
/etc/init.d vsftpd start
/etc/init.d vsftpd stop

Ab sofort funktioniert der FTP-Server. Benötigt man einen reinen öffentlichen Downloadserver ist man hier fertig.
Will man Daten hoch laden so muss man noch den Schreibzugriff aktivieren (siehe rechts unten).
Will man den Transfer verschlĂŒsseln, so benötigt man Zertifikate um die Übertragung ab zu sichern (siehe rechts oben).

Willkommens Meldung anlegen (optional):
In den FTP-Bereich wechseln:
cd /srv/ftp/
Eine neue Datei anlegen:
nano .message
# Hier dann eine beliebige Willkommensmeldung eintragen:
Willkommen! Hinweis: Alle Zugriffe werden Protokolliert.
Absicherung mit Zertifikaten:
Vorbereitende Arbeiten:
openssl installieren & Verzeichnisse mit Berechtigungen anlegen (meist vorhanden):
apt-get install openssl
mkdir -p /etc/ssl/private
chmod 700 /etc/ssl/private


Das Zertifikat erzeugen:
openssl req -x509 -nodes -days 365 -newkey rsa:8192 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Die nachfolgenden Abfragen entsprechend ausfĂŒllen:
Country Name ... = DE
State or Provice ... = Bundesland
Locality Name (eg, city) = Stadt
Organization Name ... = Firmenname
Organization Unit ... = Abteilung
Common Name ... = Domainname.de
Email Address ... = E-Mailadresse

Aus dem eben erzeugten Zertifikat extrahiert man den Privat-Key:
openssl rsa -in /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.key

Anschließend muss man die Konfiguration wie folgt ergĂ€nzen:
nano /etc/vsftpd.conf
# folgende Zeilen am Anfang hinzufĂŒgen:
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_ciphers=HIGH

# und folgende vorhandene Zeilen Àndern:
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key
ssl_enable=
YES

# Folgende EintrĂ€ge braucht man nicht hinzufĂŒgen,
# da diese im Default/StandardmĂ€ĂŸig schon die richtigen Werte haben:
ssl_tlsv1=YES # Standard=YES
ssl_sslv2=NO # Standard=NO
ssl_sslv3=NO # Standard=NO
allow_anon_ssl=NO # Standard = NO

# Disable SSL session reuse:
# ist nur nötig bei wenigen speziellen Clients
# wie z. B. bei FireFTP.
# Diesen Wert daher nur einstellen,
# wenn dies wirklich benötigt wird.
# require_ssl_reuse=NO

Hinweis: Setzt man [force_local_logins_ssl=NO] und [force_local_data_ssl=NO], so werden sowohl TLS (verschlĂŒsselte Verbindungen mit Zertifikat) als auch nicht-TLS Verbindungen (unverschlĂŒsselte Verbindungen) erlaubt, je nach dem was der FTP-Client unterstĂŒtzt.

einen reinen FTP-User anlegen (optional): Schreibzugriff aktivieren:
Empfehlenswert ist es wenn man einen reinen FTP-Benutzer anlegt, der sich nicht am lokalen System anmelden kann.
Sinn und Zweck: Dies erhöht die Sicherheit des Systems bei möglichen Angriffen.

Den neuen FTP-Benutzer anlegen:
useradd usr_ftp_only -m -d /home/usr_ftp_only -s /bin/false
ParametererklÀrung:
[usr_ftp_only] ist der Benutzername des neu anzulegenden Users, der Name ist natĂŒrlich frei wĂ€hlbar.
[-m] (main) ist die Kurzform von [--create-home] > bedeutet: Beim Erstellen wird das Home-Verzeichnis mit erstellt.
[-d] (dir) ist die Kurzform von [--home] > bedeutet: Hier wird der Pfad zum Home-Verzeichnis festgelegt (kann geÀndert werden).
[-s] ist die Kurzform von [--shell] > bedeutet: legt die zu startende login shell fest.

FĂŒr den eben erzeugten User muss man noch ein Passwort vergeben:
passwd usr_ftp_only

Nun muss man noch die login shell (/bin/false) hinzufĂŒgen:
nano /etc/shells
hier also am Ende folgendes hinzufĂŒgen:
/bin/false

Ebenso sollte man nicht vergessen den User in der [vsftpd.user_list] einzutragen:
nano /etc/vsftpd.user_list
Den eben angelegten User hinzufĂŒgen (andere User ggf. löschen):
usr_ftp_only
Die Konfigurationsdatei öffnen:
nano /etc/vsftpd.conf
# und folgende EintrÀge anpassen:
write_enable=YES # Die Dateirechte (chmod) muss man ebenfalls setzen.
local_umask=022

und folgendes hinzufĂŒgen:
allow_writeable_chroot=YES # Falls man direkt ins FTP-Wurzelverzeichnis (FTP root Verzeichnis) schreiben will.
Will man nur einigen Usern das schreiben ins FTP-Wurzelverzeichnis (ins FTP root Verzeichnis) erlauben,
so sollte man sich die EintrÀge [chroot_local_users=YES], [chroot_list_enable=YES] und [chroot_list_file=/etc/vsftpd.chroot_list] genauer anschauen.

vsftpd erlaubt es StandardmĂ€ĂŸig nicht das man direkt ins Wurzelverzeichnis des FTP-Servers (local-root=/srv/ftp) schreiben kann (es sei denn man hat dies durch [allow_writeable_chroot=YES] explizit erlaubt).
Am einfachsten umgeht man das Problem, in dem man ein Unterverzeichnis in dem FTP-Verzeichnis erstellt und hier die Schreibrechte erteilt.
mkdir /srv/ftp/net/
chmod 777 /srv/ftp/net/

Wichtige Hinweise & Fehlerbehebungen:
vsftpd ist auf Sicherheit ausgelegt und ĂŒberprĂŒft vor dem Start seine eigene Konfiguration und die Rechte aller Dateien auf die es zugreifen soll und verweigert den Start bzw. den Zugriff bei einer eventuell falschen Konfiguration (siehe auch die FAQ auf der Herstellerwebseite). Hat man die Dateiberechtigung vom FTP-Wurzelverzeichnis (local-root=/srv/ftp) geĂ€ndert, so kommen möglicherweise Fehler wie [GnuTLS-Fehler -15: An unexpected TLS packet was received.] oder [Herstellen der Verbindung zum Server fehlgeschlagen]. Als Lösung hilft hier nur die original Berechtigungen wieder herstellen [chmod 755 /srv/ftp] und [chown root:ftp /srv/ftp] oder man lockert die Sicherheitsbestimmungen durch HinzufĂŒgen von [allow_writeable_chroot=YES].

Versucht man in die FTP-root zu schreiben kommen möglicherweise Fehler wie:
[553 Could not create file.], [Kritischer DateiĂŒbertragungsfehler] oder [550 Create directory operation failed.]. Als Lösung hilft hier nur wie oben beschrieben 1. ein Unterverzeichnis anlegen und 2. die entsprechende Berechtigung zu vergeben oder man lockert die Sicherheitsbestimmungen durch HinzufĂŒgen von [allow_writeable_chroot=YES].

Jeweils Dienstneustart nicht vergessen.

Clientzugriff:
Zugriffsmöglichkeiten fĂŒr den Client gibt es viele. Ich möchte hier nur ein paar ausgewĂ€hlte gĂ€ngige vorstellen:
Zugriff auf den Server mit FileZilla (Windows):
Hierzu muss man im Servermanager von FileZilla folgende Einstellungen vornehmen:
Server: IP-Adresse oder Domain
Port: 21 (kann man leer lassen)
Protokoll:
FTP - File Transfer Protocol
VerschlĂŒsselung: Explizites FTP ĂŒber TLS anfordern
Benutzername: Benutzername
Passwort: Geheim (kann man auch weglassen - dann wird gefragt)
Zugriff auf den Server mit WinSCP (Windows):
In der Anmeldemaske muss man folgende Einstellungen vornehmen:
File protocol: FTP
Encryption: TLS/SSL Explicit encryption
Host name: IP-Adresse oder Domain
Port number: 21
User name: Benutzername
Password: Geheim (kann man auch weg lassen - dann wird gefragt)
Zugriff auf den Server mit dem Browser-Plugin FireFTP (MultiOS/Cross-Platform):
Zuerst muss man die Erweiterung im Webbrowser installieren:
Im Firefox am einfachsten installieren ĂŒber MenĂŒ [Extras] > [Add-ons] > [Erweiterungen],
hier in der Suchmaske oben rechts [FireFTP] eingeben und auf [Installieren] klicken.
Nach einem Browserneustart ist FireFTP aktiv.

Damit der Zugriff zum Server richtig funktioniert, muss in der [vsftpd.conf] der Eintrag [require_ssl_reuse=NO] vorhanden sein (Dienstneustart nicht vergessen).

Der Aufruf eines Servers funktioniert dann ĂŒber: ftps://IP-Adresse_oder_Domain
Zugriff auf den Server mit dem Total Commander mit dem Secure FTP Plugin (Windows):
Der Total Commander kann auch mit Hilfe des Secure-FTP-Plugins nicht auf einen FTPS-Server zugreifen.
Das Secure-FTP-Plugin im Total Commander erwartet auf der Serverseite zwingend einen SFTP-Server.
Und vsftpd stellt aber nur einen FTPS-Server bereit. Also muss man einen zusÀtzlichen SFTP-Server einrichten.
Wie man einen SFTP-Server installiert habe ich unter dem Punkt 15 beschrieben.
Hinweis zum Internet Explorer:
Der IE fragt nicht nach einem Benutzernamen & Passwort (er versucht immer eine Anonyme Anmeldung und bringt dann einen Fehler). Verwendet daher zum Testen einen anderen Browser.

Lösung: Der Zugriff ĂŒber den IE klappt nur so (Namen, Passwort & IP-Adresse muss man entsprechend Ă€ndern):
ftp://Benutzername:Passwort@192.168.2.1

Ein paar wichtige optionale Parameter:
anon_upload_enable=YES # anonymous Anmeldungen Schreibzugriff erlauben (Verzeichnisrechte und [write_enable=YES] werden benötigt).
anon_mkdir_write_enable=YES # anonymous Anmeldungen das Erstellen von Verzeichnissen erlauben (Verzeichnisrechte und [write_enable=YES] werden benötigt).
anon_root=/data/directory # Den FTP-Pfad fĂŒr die Anonyme Anmeldung festlegen.
anon_other_write_enable=YES # Erlaubt auch andere Dateioperationen wie Löschen oder Umbenennen oder Verzeichnisse zu erstellen.
anon_max_rate=10240 # Transferate in Bytes/Sekunde fĂŒr Anonyme User (0=unbegrenzt/Standard).
local_max_rate=10240 # Transferrate in Bytes/Sekunde fĂŒr lokale User mit Anmeldung (0=unbegrenzt/Standard).
max_clients=0 # Höchstzahl der zugelassenen Clients - weitere Clients erhalten eine entsprechende Fehlermeldung (0=unbegrenzte Clientanzahl/Standard).
hide_file={*.mp3,.hidden,hide*,h?} # Dateien vom Directorylisting ausblenden. Der Zugriff auf die Dateien ist nur möglich wenn man den Namen kennt. AusschlĂŒsse werden im Regex-Format festgelegt.
deny_file= # Zugriff auf die Datei(en) verbieten.
vsftpd_log_file=/var/log/vsftpd.log # Standardausgabe-Pfad fĂŒr die Logdatei (benötigt [xferlog_enable=YES] - Standard=NO). Protokolliert ausfĂŒhrlich alle up- und downloads.
download_enable=NO # Setzt man den Wert auf [NO], so sind nur noch Uploads möglich.
chown_uploads=YES # Upload Benutzerrechte automatisch Àndern auf den ...
chown_username=Benutzername # ... User mit dem Namen ... (Der owner wird nur auf den angegebenen User geÀndert, wenn der upload von einem anonymen User erfolgte).
max_per_ip=10 # Maximal zugelassene Anzahl von Nutzer von ein und derselben IP-Adresse (Standard:0 = unbegrenzt).
delete_failed_uploads=YES # löscht fehlerhaft abgeschlossene uploads.
delay_failed_login=10 # Pause in Sekunden nach einem fehlerhaften login (Standard:1).

Hilfe erhĂ€lt man ĂŒber:
man vsftpd.conf

15.

OpenSSH-Server / SFTP-Server (SSH File Transfer Protocol) zugriff ĂŒber SSH (Secure Shell):


Public Key Authentifizierung unter Debian und Ubuntu mit OpenSSH.
Benötigt man nicht einen FTPS sondern einen SFTP Zugang, so muss man einen SSH-Server installieren.
Mit dem SFTP Zugang klappt z. B. auch der Zugriff ĂŒber den [Total Commander] wenn man das [Secure FTP]-Dateiplugin installiert hat.
Grundkonfiguration:
OpenSSH installieren:
apt-get install openssh-server

HostKey - Sicherheitshinweis:
Bei der Installation werden automatisch RSA-, DSA- sowie ECDSA-Keys und ggf. ein ED22219-Key erstellt. Diese Keys (SchlĂŒsseldateien) liegen alle im Verzeichnis [/etc/ssh/]. Jeder SchlĂŒssel besteht hierbei aus zwei Dateien (private- & public-key).
All diese SchlĂŒssel werden in der Regel mit maximal 2048-Bit erstellt.
Problematisch dabei ist das jeder einzelne SchlĂŒssel einen Zugang zum Server ermöglicht!
Ist ein SchlĂŒsselverfahren kompromittierbar (die NSA lĂ€sst grĂŒĂŸen), so ist der Server angreifbar.

Daher empfiehlt es sich hier alle vorhandenen SchlĂŒsseldateien mit höherer Sicherheit neu zu erstellen (sofern möglich),
dabei sollte man fĂŒr diese SchlĂŒssel keine passphrase vergeben.
Hinweis: Eine ausfĂŒhrliche ParametererklĂ€rung finden Sie ĂŒber diesen Link (auf dieser Seite weiter unten).
ssh-keygen -t rsa -b 8192 -o -f /etc/ssh/ssh_host_rsa_key # Mögliche Werte fĂŒr -b 768 - 16384 (SSH Protocoll 2).
ssh-keygen -t dsa -b 1024 -o -f /etc/ssh/ssh_host_dsa_key # Nur 1024 Bit möglich (SSH Protokoll 2).
ssh-keygen -t ecdsa -b 521 -o -f /etc/ssh/ssh_host_ecdsa_key # Nur 256, 384 oder 521 Bit möglich (SSH Protokoll 2).
ssh-keygen -t ed25519 -b 256 -f /etc/ssh/ssh_host_ed25519_key # Aktuell nur 256 Bit möglich (wird schon so erstellt) (SSH Protokoll 2).
[-o] ist nur möglich wenn openssh >= 6.5 vorhanden ist.
Noch besser ist es, wenn man sich nur fĂŒr ein VerschlĂŒsselungsverfahren entscheidet (Empfohlen):
Man löscht also z. B. im Verzeichnis [/etc/ssh/] die SchlĂŒssel-Dateien (Keyfiles):
[ssh_host_dsa_key] & [ssh_host_dsa_key.pub],
[ssh_host_ecdsa_key] & [ssh_host_ecdsa_key.pub] und
[ssh_host_ed25519_key] & [ssh_host_ed25519_key.pub],
so das als einzige Anmeldemöglichkeit nur noch RSA, ĂŒber die SchlĂŒsseldatei:
[ssh_host_rsa_key] & [ssh_host_rsa_key.pub] ĂŒbrig bleibt.
Vorsicht beim Löschen: Der Ordner enthÀlt versteckte Dateien - diese nicht mit löschen!

Es darf also nur ein SchlĂŒsselpaar fĂŒr das gewĂŒnschte Verfahren ĂŒbrig bleiben (RSA ist hier nur Beispielhaft aufgefĂŒhrt - man kann auch ein anderes VerschlĂŒsselungsverfahren auswĂ€hlen).
Man zwingt also seinen Usern ein einzelnes (spezielles) Verfahren auf.
Das wiederum erhöht die Sicherheit, da es dadurch weniger Angriffsmöglichkeiten gibt.
FĂŒr das ausgewĂ€hlte Verfahren sollte man wie oben vorgeschlagen einen neuen sicheren Key erzeugen.
ssh-keygen -t rsa -b 8192 -o -f /etc/ssh/ssh_host_rsa_key # Einen sicheren RSA-Host-Key erzeugen.

Hinweis:
Bei Updates, insbesondere bei grĂ¶ĂŸeren VersionssprĂŒngen kann es passieren das die Keys automatisch neu erstellt werden!
Es empfiehlt sich daher eigene Keys separat zu sichern und diese nach einem Update ggf. manuell zurĂŒck zu spielen.
VerschlĂŒsselungsstandards im Überblick:
[dsa] (Digital Signature Algorithm) wurde von der NSA (National Security Agency) entwickelt und 1991 vom National Institute of Standards and Technology (NIST) empfohlen. Bei DSA können jedoch schwÀchen auftreten, wenn ein schwacher Zufallsgenerator verwendet wird.

ECDSA (Elliptic Curve Digital Signature Algorithm) ist eine Variante des DSA Algorithmus der Elliptische-Kurven-Kryptographie verwendet.
Mit erheblich kĂŒrzeren SchlĂŒsseln erreicht das Verfahren Ă€hnliche Sicherheit wie das RSA-Kryptosystem (ein Vergleich siehe Tabelle). Dieses Verfahren ist schnell und bietet sich an wenn die Rechenzeit entscheidend ist. ECDSA wird noch nicht von jedem Client unterstĂŒtzt.
Einige Kyrptoexperten vermuten, dass die von der US-Standardisierungsbehörde stammenden NIST-Kurven möglicherweise angreifbar sind, da die hĂ€ufig verwendeten NIST-Kurven von einem NSA Mitarbeiter entwickelt wurden. Das Ausgangsmaterial fĂŒr die Kurven ist nicht dokumentiert und es werden HintertĂŒren durch schwache Kurven nicht ganz ausgeschlossen.
Elliptic Curve Key Size RSA and Diffie-Hellman Key Size
256 bits 3072 bits
384 bits 7680 bits
521 bits 15360 bits

[Ed25519] Reduziert etwas das Risiko von Angriffen die durch schlechte Zufallsgeneratoren auftreten können (verhindert diese aber nicht 100%).
Der Algorithmus ist sehr schnell, er wurde fĂŒr 64-Bit CPUs optimiert, die SchlĂŒssellĂ€nge ist auf 256 bits begrenzt.
Ein 128 Bit SchlĂŒssel entspricht etwa einem 3000 Bit RSA SchlĂŒssel. Ed25519 wird noch nicht von jedem Client unterstĂŒtzt.

[RSA] Hat derzeit die meiste Verbreitung, daher wĂŒrde ich derzeit zu RSA mit einem starken SchlĂŒssel tendieren.

Allgemeine Links zum Nachlesen:
Wikipedia: Ed25519, Elliptic_Curve_Cryptography
Golem: OpenSSH rĂŒstet auf, Was noch sicher ist, die Herkunft der NIST-Kurven, OpenSSH Key
NSA: Elliptische Kurven

Andere wichtige Parameter fĂŒr ssh-keygen:
ssh-keygen -p -f Keydatei # Ändert die Passphrase von der angegebenen Keydatei.
Die Datei wird dabei nicht neu erzeugt, sondern es wird dabei nur die passphrase geÀndert.

ssh-keygen -A # Erzeugt alle Host-Keys komplett und ohne RĂŒckfrage neu.
Bestehende HosKeys werden ĂŒberschrieben. Den Befehl daher nur starten falls nichts mehr geht.

Hinweis: Nach dem man den Server installiert hat ist der Zugriff sofort möglich.

SSH-Zugang in der Firewall (ufw) öffnen:
ufw allow 22/tcp
ufw enable

Will man sich spĂ€ter mit dem Server verbinden, so wird dann ein SSH Fingerprint angezeigt. Will man diesen auch ĂŒberprĂŒfen, so ist es wichtig dass man sich diesen Fingerprint zuvor natĂŒrlich anzeigt und notiert.
Folgender Befehl zeigt den SSH Server Fingerprint an:
ssh-keygen -lv -f /etc/ssh/ssh_host_rsa_key.pub
Man kann hier natĂŒrlich auch den Pfad zu eigenen erstellten SchlĂŒsseln angeben. Dann erhĂ€lt man den Fingerprint der selbst erstellten SchlĂŒssel.
Wichtig! Brute-Force-Angriffe erschweren (faildelay einstellen):
Um Brute-Force-Angriffe zu erschweren sollte man die Wartezeit zwischen einem fehlerhaften Login deutlich erhöhen. Wörterbuchattacken sind dann durch die deutlich erhöhte Laufzeit fĂŒr Angreifer nicht mehr sinnvoll durchfĂŒhrbar. Dies erhöht also die Sicherheit des Systems deutlich.
nano /etc/pam.d/sshd
# Hier am Anfang folgende Zeile einfĂŒgen:
auth optional pam_faildelay.so delay=20000000 # 20 Sekunden (20 Millionen Micro Sekunden/180 Passwortversuche je Stunde)
auth optional pam_faildelay.so delay=60000000 # 1 Minute (60 Millionen Micro Sekunden/60 Passwortversuche je Stunde)
# Die Zeit kann man je nach Sicherheitsanspruch natĂŒrlich individuell anpassen.
root User Login verbieten & den Zugriff auf bestimmte Benutzer/Gruppen beschrÀnken & Port einstellen:
StandardmĂ€ĂŸig kann sich auch der User [root] verbinden. Aus SicherheitsgrĂŒnden sollte man das verbieten.
Gleichzeitig kann man hier den Zugriff nur fĂŒr einzelne Benutzer & Gruppen festlegen.

Hierzu bearbeitet man die Konfiguration vom openssh-server:
nano /etc/ssh/sshd_config
# Den vornandenen Eintrag Àndert man wie folgt:
PermitRootLogin=NO # Verbietet das einloggen als root User.

# FĂŒgt man AllowUsers hinzu, so wird das Login wird nur fĂŒr die Benutzer erlaubt die man angegeben hat.
AllowUsers Benutzer1 Benutzer2
# LĂ€sst man den Parameter AllUsers weg, so können sich StandardmĂ€ĂŸig alle Benutzer verbinden.
# AllowGroups erlaubt den Zugriff fĂŒr Gruppen.
# Berechtigungen werden in folgender Reihe abgearbeitet:
# DenyUsers, AllowUsers und DenyGroups, AllowGroups

# Externer Zugriff von außen:
Port 22
# Optional: Wer mag kann auch den Port Àndern.
# Ein geÀnderter Port kann Angriffe erschweren.
# Will man auf den SFTP/SSH-Server ĂŒber das Internet
# zugreifen, so muss man im Router fĂŒr diesen Port
# eine entsprechende Weiterleitung einrichten.


Hinweis:
Änderungen an der Konfiguration werden nur nach einem Neustart des Dienstes, bzw. dem neu einlesen der Konfiguration ĂŒbernommen:
service ssh restart
service ssh reload
User in Verzeichnisse einsperren:
Achtung: StandardmĂ€ĂŸig erhĂ€lt man Zugriff auf alles ab dem Wurzelverzeichnis [/]. Dies sollte man aus SicherheitsgrĂŒnden etwas einschrĂ€nken.

Zuerst legt man eine Gruppe an die spÀter alle User beherbergen soll:
addgroup grp_sftp_user

Anschließend fĂŒgt man den Benutzer hinzu:
useradd -g grp_sftp_user -s /bin/false usr_sftp_user
Der User erhÀlt hierbei keinen Shell-Zugang (/bin/false).

Dem Benutzer vergibt man im Anschluss noch ein Passwort:
passwd usr_sftp_user

Danach muss man die Konfiguration vom openssh-server wie folgt anpassen:
nano /etc/ssh/sshd_config
# Den bereits vorhandenen Eintrag:
Subsystem sftp /usr/lib/openssh/sftp-server
# Àndert man wie folgt ab:
Subsystem sftp internal-sftp

# und ganz am Ende der Datei fĂŒgt man folgendes hinzu:
Match Group grp_sftp_user
# Die folgenden Regeln gelten fĂŒr alle Benutzer der Gruppe.
# Statt Group, kann man auch User fĂŒr einen einzelnen User verwenden.
# Hier legt man dann den Pfad fest in welches Verzeichnis der User eingesperrt wird:
    ChrootDirectory /home # Hier wird das root-Verzeichnis festgelegt.
# Wichtig: Die Verzeichnisberechtigung auf dem root-Verzeichnis darf maximal [chmod -R 755 Ordner] betragen.
# Ist die Berechtigung zu hoch (z. B. 777), dann kann man keine Client-Verbindungen mehr herstellen,
# meist treten dann am Client Fehler wie [Fehler: Konnte SFTP-Sitzung nicht initialisieren!] oder [Unable to startup channel] auf.
    ForceCommand internal-sftp
    AllowTCPForwarding no
    X11Forwarding no # Grafischen Serverzugriff verbieten.

Hier im Beispiel hat der Benutzer mit dem Namen [usr_sftp_user] nur noch einen SFTP-Zugriff auf alle Dateien und Verzeichnisse (Dateirechte beachten) die unter dem Verzeichnis [/home] liegen - eine lokale Anmeldung ist verboten [/bin/false].

Damit die Änderungen ĂŒbernommen werden muss der Dienst wieder neu gestartet werden.
service ssh restart
Absicherung mit SchlĂŒssel-Dateien durch Umstellung auf die SSH Public-Key-Authentifizierung:
Nach der Umstellung auf die SSH Public-Key-Authentifizierung wird zur Anmeldung zwingend eine SchlĂŒsseldatei benötigt. Eine einfache Anmeldung mit Benutzernamen & Passwort ist dann nicht mehr möglich.

SchlĂŒssel erzeugen:
ssh-keygen -t rsa -C '[Kommentar]' -b 8192 -o -a 2048 -f id_rsa -Npassphrase
ParametererklÀrung:
[-t] (type) Bestimmt den VerschlĂŒsselungsstandard neben [rsa] existiert z. B. noch [dsa], [ecdsa], [ed25519]).
[-b] (bits) Legt die Anzahl der Bits fest, die zur VerschlĂŒsselung verwendet werden (mind. 768, max. 16384 bei RSA, Standard meist 2048). Empfehlenswert ist hier eine deutliche Erhöhung, da diese die Sicherheit deutlich steigern.
Dauer die in etwa benötigt wird zum erstellen der Keys (IntelCPU @ 3 GHz): bei 4096 Bits ~ 10 Sekunden, bei 8192 Bits ~ 30 Sekunden, bei 16384 Bits ~ 4 Minuten.
[-C] (comment) optional: Hier kann man ein extra Kommentar dem SchlĂŒssel hinzufĂŒgen. Ich wĂŒrde hier z. B. Datum, Kennzahlen o. Ă€. angeben. Bei einer Vielzahl von SchlĂŒsseln kann dies helfen den Überblick zu behalten. Hier nur nicht die Passphrase eingeben, denn der Kommentar wird im Klartext am Ende des SchlĂŒssels gespeichert.
[-o] Den SchlĂŒssel im neuen sicheren (SSH protocol 2) Format speichern (dies ist nur möglich wenn openssh >= 6.5 vorhanden ist).
Die Angabe ist nur beim Typ RSA notwendig da DSA, ECDSA sowie ED25519 automatisch im SSH Protokoll 2 Standard gespeichert werden.
[-a] Anzahl der [key derivation function] festlegen, höhere Werte erhöhen die Resistenz gegen Brute-Force-Angriffe - gleichzeitig steigt damit jedoch die Zeit, bei der Passphrasen-ÜberprĂŒfung (dies ist nur möglich wenn openssh >= 6.5 vorhanden ist).
Hinweis: Der Parameter macht daher nur Sinn wenn eine passphrase vergeben wird.
Dauer die in etwa benötigt wird fĂŒr die Erstellung bzw. ÜberprĂŒfung der passprase (IntelCPU @ 3 GHz): bei 1024 ~ 10 Sekunden, bei 2048 ~ 19 Sekunden, bei 4096 ~ 38 Sekunden, bei 8192 ~ 77 Sekunden, bei 16384 ~ 152 Sekunden.
[-f] (file) Bestimmt den Ausgabepfad und den Dateinamen der SchlĂŒssel - standardmĂ€ĂŸig ist der Pfad [~/.ssh/id_rsa] (bei RSA) voreingestellt. LĂ€sst man den Parameter komplett weg, so wird bei der Erstellung der Standard-Pfad vorgeschlagen. Sollte der Pfad noch nicht vorhanden sein, so wird dieser dann automatisch erstellt. Die benötigten Berechtigungen werden dabei automatisch korrekt gesetzt.
[-N] (new passphrase) kannn man verwenden wenn man die Passphrase gleich mit eingeben will. LĂ€sst man den Parameter weg, so wird an der Kommandozeile danach gefragt.
Wichtig: Aus SicherheitsgrĂŒnden sollte man den SchlĂŒssel mit einer Passphrase schĂŒtzen, denn sollte der private SchlĂŒssel von einem Angreifer gestohlen werden, so mĂŒsste dieser zuerst noch das Passwort herausfinden um diesen zu nutzen. Dieses Passwort sollte gĂ€ngigen Passwortstrategien entsprechen (man sollte es also nicht zu leicht wĂ€hlen).

Als nĂ€chstes wechselt man in das [.ssh]-Verzeichnis wo die so eben erstellten SchlĂŒssel abgelegt wurden.
cd .ssh/

Zum einen kann man hier eine .pem Datei erzeugen (wird z. B. fĂŒr [Total Commander] benötigt (optional):
cp id_rsa id_rsa.pem

Will man die SchlĂŒssel mit Putty verwenden, so sollte man diese noch in das Putty-Format konvertieren. Bei meinen Tests (2015-03-26) klappte das nur mit SchlĂŒsseln im alten Format (ohne Parameter -o, -a).
Zuerst benötigt man die entsprechenden Tools:
apt-get install putty-tools

Danach erzeugt der Aufruf von:
puttygen id_rsa -o id_rsa.ppk
einen fĂŒr Putty gĂŒltigen Key.

Wichtig:
Als nĂ€chstes sollte man zuerst die SchlĂŒssel sichern (id_rsa & id_rsa.pub und ggf. id_rsa.pem & id_rsa.ppk). Denn wenn man in den nachfolgenden Schritten einen Fehler macht, kann es passieren dass man sich vom Server selbst aussperrt. Je nach verwendetem Client benötigt man unterschiedliche Dateien. Daher am besten einfach alle sichern. Die SchlĂŒssel sollte man dabei nur ĂŒber einen sicheren Kanal auf den Client kopieren.

Damit der SchlĂŒssel beim Login ausgewertet wird, muss er zum SchlĂŒsselbund hinzugefĂŒgt werden:
cat id_rsa.pub >> authorized_keys
Man sollte hier kein [cp] wie Copy verwenden, da man in der Datei mehrere verschiedene SchlĂŒssel ablegen kann. Die SchlĂŒsseldateien sind reine Textdateien.
Die Datei [~/.ssh/authorized_keys] enthĂ€lt alle öffentlichen SchlĂŒssel, der User die sich mit dem Server verbinden dĂŒrfen.

Als nĂ€chstes muss man noch folgende Änderungen vornehmen:
nano /etc/ssh/sshd_config
# Hier folgendes einstellen (vorhandene Werte entsprechend anpassen):
PubkeyAuthentication yes # Verwenden der SchlĂŒsseldatei aktivieren.

PasswordAuthentication no # Setzt man hier [no], so kann man sich nur noch ĂŒber eine SchlĂŒsseldatei anmelden. LĂ€sst man hier [yes] so ist sowohl die Anmeldung ĂŒber eine SchlĂŒsseldatei, als auch ĂŒber ein Kennwort möglich.

ChallengeResponseAuthentication no # Behebt ggf. Probleme, ist meist StandardmĂ€ĂŸig so.

Damit die Änderungen ĂŒbernommen werden muss der Dienst wieder neu gestartet werden.
service ssh restart

Wichtig: Zuletzt sollte man aufrÀumen:
Der private SchlĂŒssel, der beim Erstellen mit erzeugt wurde gehört nicht auf den Server. Denn wird dieser von einem Angreifer vom Server gestohlen, so kann dieser SchlĂŒssel zur Anmeldung verwendet werden. Der privaten SchlĂŒssel und die ggf. konvertierten sollte man daher alle löschen. Auf dem Server verbleibt somit im [.ssh]-Verzeichnis am Ende nur die einzelne Datei [authorized_keys]. Alle anderen Dateien im [.ssh]-Verzeichnis kann man nach dem man sie gesichert hat löschen.
rm ~/.ssh/id_*

Alternativen:
Man kann die SchlĂŒssel natĂŒrlich auf jedem anderen System zuerst erstellen und dann entsprechend verteilen. Unter Windows kann man zur SchlĂŒsselerstellung z. B. Puttygen.exe verwenden.
ASCII-Banner (optional):
Damit man den Server besser identifizieren kann, kann man ein Banner einbinden.
Dieses Banner wird dann z. B. bei Putty in der Loginmaske angezeigt.

Zuerst muss man aktivieren das die Banner ĂŒberhaupt angezeigt werden:
nano /etc/ssh/sshd_config
Hier einfach den vorhanden Banner-Eintrag aktivieren (also das Rautezeichen [#] entfernen) und den vorhandenen Dateinamen etwas abĂ€ndern (z. B. [.txt] anhĂ€ngen).
Die voreingestellte Originaldatei [/etc/issue.net] sollte man möglichst nicht verĂ€ndern, da diese bei einem Update mit aktualisiert wird (Änderungen wĂŒrden verloren gehen).
Banner /etc/issue.net.txt

Anschließend kann man den Bannertext eingeben:
nano /etc/issue.net.txt
Hier dann einen beliebigen Text, bzw. eine beliebige ASCII-Grafik einfĂŒgen, wie z. B.:
________________________________________________________________________________
  _____
 |[KEY]! Disk erforderlich.                                             .\_/.
 |  o. |                                                               --(@)--
 !__!__!                                                                 /.\
                                            _           _           _
                       .:(:( _|_ ):):.   __(=)__     __|=|__    ___|=|___
                              |         (___R.__)   [=__I._=]   \__ P.__/
    /\_/\     _,      ________|_           (=)         |=|         |=|
     (")     <')     /._.\ =  = \          (=)         |=|         |=|
___.(_o_).___(_)>___/_/_\_\______\___\|/___(=)___\|/___|=|___\|/___|=|___\|/___
|___|___|___|___|___|#Hacker|___|___|___|___|___|___|___|___|___|___|___|___|__|
|_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|____|
|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|_2019@cts_|
________________________________________________________________________________

oder z. B. so (kurze Version):
                                            _           _           _   
      .:(:( _|_ ):):.                    __(=)__     __|=|__    ___|=|___
     ________|_                         (___R.__)   [___I.__]   \__ P.__/ 
    /._.\ =  = \                           (=)         |=|         |=|   
___/_/_\_\______\____________________\|/___(=)___\|/___|=|___\|/___|=|___\|/____
|___|__#Hacker__|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__|
|_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|____|
|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|_2019@cts_|

Der Text sollte hierbei maximal 16 Zeilen je maximal 80 Zeichen betragen, damit Anmeldename und Passworteingabe noch mit angezeigt werden.
Des Weiterhin sollte man hier keine Serverangaben veröffentlichen die Hackangriffe vereinfachen.
Benutzernamen, OS Version, Serverzweck usw. sollte man hier also nicht veröffentlichen.

Die Änderungen an der [sshd_config] werden erst ĂŒbernommen wenn man den Dienst neu lĂ€dt.
service ssh reload
VisualHostKey auf Linux Clients anzeigen und Verbindungsaufbau mit Linux Client:
Will man sich von einem Linux Client aus verbinden, so kann man sich vor dem einloggen auch zusÀtzlich den 'fingerprint' als 'randomart image' ausgeben lassen.

Hierzu muss man auf dem Client folgende Änderung vornehmen:
nano /etc/ssh/ssh_config
Hier Àndert man dann den vorhandenen Eintrag wie folgt ab:
VisualHostKey yes

Ab sofort wird beim Verbindungsaufbau nicht nur der 'fingerprint' sondern auch zusÀtzlich das 'randomart image' ausgegeben.
Ein ggf. eingerichtetes Banner wird danach ebenso angezeigt.

Der Verbindungsaufbau vom Client erfolgt so:
ssh Benutzername_auf_dem_Server@servername_oder_IP-Adresse

Beispiel fĂŒr eine 'fingerprint'- und 'randomart image'-Ausgabe beim Verbindungsaufbau:
Host key fingerprint is 1e:78:40:3c:df:cd:c3:bd:9d:2c:df:e7:3e:4a:94:3a
+---[RSA 8192]----+
|     ..          |
|     .o          |
|      .o . + .   |
|       o. . = o  |
|      . S    +.o.|
|       o .  o..o.|
|        .  E .o .|
|            o  oo|
|             ..o=|
+-----------------+

Merke:
Der 'fingerprint' und das 'randomart image' wird nur ausgegeben wenn man es bei den Clients entsprechend aktiviert hat.
Putty unter Windows zeigt den 'fingerprint' nur einmalig beim ersten Verbindungsaufbau an (vertrauenswĂŒrdige Keys werden in der Registry gespeichert).
Das 'randomart image' zeigt Putty ĂŒberhaupt nicht an.
Man kann also Serverseitig nicht erzwingen das 'fingerprint' bzw. 'randomart image' auf dem Client angezeigt werden.
Will man vor jeder Verbindung eine Anzeige erzwingen, so sollte also man ein Banner (siehe oben) verwenden.

Clientzugriff:
Zugriffsmöglichkeiten fĂŒr den Client gibt es viele. Ich möchte hier nur ein paar ausgewĂ€hlte gĂ€ngige vorstellen:
Zugriff mit Putty (MultiOS/Windows):
Terminal-/ Consolen-Zugriff erhĂ€lt man z. B. mit Putty (Windows).
Zugriff mit dem Total-Commander (Windows):
Im [Total Commander] muss man zuerst das [SFTP Dateisystemerweiterungs-Plugin] installieren, anschließend kann man ĂŒber den Slash [\] - also die Netzwerkumgebung] (nicht ĂŒber Netz/FTP-Verbinden gehen) das [Secure FTP]-Plugin starten.
Hier kann man dann ĂŒber F7 eine neue Verbindung anlegen. FĂŒr die neue Verbindung wird dann ein Name abgefragt (beliebig wĂ€hlbar).
In der Anschließenden Maske trĂ€gt man dann folgendes ein:
Verbinden mit ... : Server-IP-Adresse:22 oder Domain:22 Die Port-Nummer muss man nur angeben, wenn man den Port geÀndert hat.
Benutzername: Name des anzumeldenden Users
Kennwort: Rumpelstilzchen oder passphrase Hier kommt das Kennwort des Users rein, verwendet man dagegen eine passphrase dann wird diese hier eingetragen.
Öffentliche SchlĂŒsseldatei (*.pub): Hier die ir_rsa.pub Datei auswĂ€hlen.
Private SchlĂŒsseldatei (*.pem): ir_rsa.pem Hier gehört die private ir_rsa Datei hin (diese muss zwingend die Endung .pem haben!)

Hinweis:
Verwendet man die Public-Key-Authentifizierung also einen SchlĂŒssel mit einer passphrase, so muss man bei Kennwort statt dem Userkennwort die Passphrase eintragen.

Alternativ kann man auch in der Verbindungsmaske vom [Secure FTP]-Plugin den MenĂŒpunkt [PuTTY-Agenten benutzen (Pageant)] anhaken (aktivieren).

Damit der PuttyAgent funktioniert sind folgende Schritte zu erledigen:
1. Die [pageant.exe] herunterladen und starten.
2. Im Taskleisten Tray (unten rechts neben der Uhr) erscheint dann der [Pageant (PuTTY authentication agent)]. Über diesen kann man jetzt die verschiedenen SchlĂŒssel verwalten.
Alternativ kann man die SchlĂŒssel auch durch folgenden Aufruf hinzufĂŒgen: [pageant.exe /Pfad_zur_SchlĂŒsseldatei/id_rsa.ppk].
Beim HinzufĂŒgen egal ob ĂŒber Tray oder Kommandozeile wird immer die passphrase des SchlĂŒssels abgefragt. Diese wird auch nicht gespeichert.

Tipps:
Besteht ĂŒber den Total Commander eine Verbindung so kann man ĂŒber den MenĂŒpunkt [Dateien] > [Dateiattribute Ă€ndern...] diese entsprechend Ă€ndern.
Weiterhin kann man wenn eine Verbindung besteht beliebige Consolenbefehle eingeben (dabei aber bitte die entsprechenden User Berechtigungen beachten). Eventuelle Ausgaben werden oben im Logfile angezeigt (dieses lĂ€sst sich durch einen Doppelklick vergrĂ¶ĂŸern).
Zugriff mit FileZilla (Windows):
Zuerst muss man den SchlĂŒssel hinzufĂŒgen, dieser wird im Putty-Format erwartet.
Im MenĂŒ auf [Bearbeiten] > [Einstellungen] klicken, hier dann
folgendes aufklappen [Verbindung] > [FTP] > [SFTP] und [SchlĂŒsseldatei hinzufĂŒgen...] auswĂ€hlen.

WĂ€hlt man eine nicht konvertierte [id_rsa]-public-key-Datei aus, so wird angeboten diesen in ein Putty-Format zu konvertieren. Man muss diese neu konvertierte Datei dann erst speichern und anschließend die konvertierte Datei auswĂ€hlen.
Hat man eine bereits im Putty-Format [id_rsa.ppk] vorliegende Datei, so wÀhlt man diese einfach aus.

Anschließend kann man ĂŒber MenĂŒ [Datei] > [Servermanager] eine neue SFTP-Verbindung anlegen.
In der Anschließenden Maske trĂ€gt man dann folgendes ein:
Server: Server-IP-Adresse oder Domain     Port: 22 Die Port-Nummer muss man nur angeben, wenn man den Port geĂ€ndert hat.
Protokoll: SFTP - SSH File Transfer Protocol Entsprechend auswÀhlen.
Benutzername: Name des anzumeldenden Users
Passwort: Abrakadabra

16.

Netzwerk Dateiserver mit Papierkorb / LAN-Freigabe ĂŒber Samba:


Samba kann Datei- und Druckerfreigaben im Netzwerk bereitstellen und als DomÀnencontroller arbeiten.

Samba installieren:
apt-get install samba libpam-smbpass

ParametererklÀrung:
Samba pflegt eine eigene User- und Passwortdatenbank. [libpam-smbpass] = synct stÀndig System- und Samba-Passworte (alle 90 Sekunden), so das man diese nicht getrennt aktualisieren muss (empfohlen).
Damit 'libpam-smbpass' funktioniert und die User-Passworte in die Samba-Passwortdatenbank ĂŒbernommen werden, muss man sich einmalig mit dem User der fĂŒr Samba verwendet wird auf dem Linux PC an- und abmelden. Bei PasswortĂ€nderungen des Samba Users muss man sich ebenso einmalig unter dem geĂ€nderten Usernamen am Linux Server an- und abmelden, damit die PasswortĂ€nderungen im Samba aktualisiert werden.
Hinweis: 'libpam-smbpass' steht ab Ubuntu 16.04 leider nicht mehr zur VerfĂŒgung, die Synchronisation der User- und Samba-Datenbank muss man daher ab sofort eigenstĂ€ndig ĂŒber 'smbpasswd' erledigen.

Man kann Samba das Passwort des Users auch so bekannt machen (nur nötig wenn man kein 'libpam-smbpass' verwendet):
smbpasswd -a Benutzername # den Benutzer der Samba Datenbank hinzufĂŒgen & das Samba Passwort abfragen.
smbpasswd -x Benutzername # den Benutzer aus der Samba Datenbank entfernen.

Optional: Freigabe ĂŒber den Dateimanager Nautilus einrichten (weniger empfohlen, da wenig Möglichkeiten):
apt-get install nautilus nautilus-share
Ordner können dann ĂŒber den Dateimanager mittels rechter Maustaste freigegeben werden.
Man hat hier allerdings nur wenig Optionen (wie lesen alle, schreiben alle).
Der Zugriff lÀsst sich so also schlecht einschrÀnken.
Braucht man aber nur schnell mal eine Freigabe, so ist dies durchaus eine Option.
Besser ist es die Freigabe wie folgt einzurichten:

Zuerst legt man einen Ordner an den man freigegeben will.
mkdir /srv/Box

Anschließend muss man noch die Dateiberechtigungen auf Systemebene setzen:
chmod -R 777 /srv/Box # Die Dateiberechtigung 777 bedeutet Vollzugriff fĂŒr alle.

Dann muss man die Freigabeberechtigungen fĂŒr die User (darf ich lesen, durchsuchen, beschreiben, fĂŒr welche Netze, ...) anpassen:
nano /etc/samba/smb.conf
FĂŒr die meisten Standardzwecke sollte folgende Konfiguration reichen (fĂŒr Copy & Paste) (empfohlen):
# Folgende Zeilen am Anfang hinzufĂŒgen:
# Unter dem vorhandenen [global]-Eintrag kann man fĂŒr alle Freigaben allgemeingĂŒltige EintrĂ€ge festlegen.
## Freigabe Optionen: ##
[Box$]
# Freigabename (mit [$] wird es eine versteckte Freigabe).
comment=Samba Freigabe Kommentar
# Kommentar zur Freigabe.
path=/srv/Box
# Pfad zur Freigabe. Der Ordner muss bereits vorhanden sein.
writeable=yes
# Schreibrecht aktivieren.
valid users=%U
# Zugriff fĂŒr alle User (auch root).
read list=Benutzername
# Folgende Benutzer haben nur Leserechte. Alternativ: Schreibzugriff nur fĂŒr bestimmte Benutzer [write list=Benutzername] wenn man zuvor die Schreibrechte fĂŒr alle deaktiviert hat.
hosts allow=192.
# Netzbereich 192.*.*.*

## Cache Optionen: ##
write cache size=262144
# Cacht Schreibzugriffe (hier 256k), dies kann den Durchsatz erhöhen.

## Optionale Datei und Verzeichnisrechte: ##
# create mode = 0640
# directory mode = 0750

## Papierkorb Optionen: ##
# FĂŒgt man z. B. die die folgenden Papierkorboptionen unter dem vorhandenen [global]-Eintrag ein, so gelten diese fĂŒr alle Freigaben.
vfs object=recycle
# Papierkorb FunktionalitÀt aktivieren.
recycle:repository=.recycle/%U
# FĂŒr jeden User einen extra Papierkorb anlegen.
recycle:keeptree=yes
# Verzeichnisstruktur beim Löschen beibehalten.
recycle:exclude=*.tmp, .~lock*.*#, ~$*.*
# Folgende Dateien nicht im Papierkorb sichern: [*.tmp] = beliebige Temp-Dateien, [.~lock*.*#] = LibreOffice lock-Dateien, [~$*.*] = Microsoft Office lock-Dateien.
recycle:directory_mode=0750
# Recht setzen das andere Gruppenmitglieder den Papierkorb lesend durchsuchen können.
recycle:versions=yes
# Historische Versionen aufheben = gleiche Dateien (geÀnderte) werden fortlaufend durchnummeriert.
recycle:noversions=*.doc?, *.xls?, *.mdb, *.pdf
# Von diesen Datentypen keine historischen Daten speichern. Nur die letzte Version wird gesichert.
recycle:touch=yes
# Beim Löschen von Dateien wird das [Datum des letzten Zugriffs] auf das Löschdatum gesetzt.
hide files=/?esktop.ini/?humbs.db/
# Diese Dateien/Verzeichnisse erhalten das versteckt Attribut.
# veto files=/TypVerbieten/
# Verbietet das Anlegen von Dateien/Verzeichnissen.

Windows Zugriffsprobleme ab Samba 4.5 beheben:
# Hat man noch Ă€ltere Windows Versionen wie z. B. Windows XP, Windows 2000 o. Ă€. im Einsatz, dann funktioniert der Zugriff auf die Samba-Freigaben StandardmĂ€ĂŸig nicht mehr.
# Man erhÀlt dann beim Versuch ein Netzlaufwerk zu verbinden [net use * \\hostname\share /user:test passwd] trotz korrekt eingegebener Zugangsdaten
# die folgende Fehlermeldung: [Systemfehler 1326 aufgetreten.] bzw. [Anmeldung fehlgeschlagen: unbekannter Benutzername oder falsches Kennwort.].
#
# Hintergrund ist, dass ab Samba Version 4.5 die unsichere NTLMv1-Authentifizierung standardmĂ€ĂŸig deaktiviert wurde.
# Aus SicherheitsgrĂŒnden sollte man daher wenn möglich die betroffenen Client-Systeme aktualisieren, so dass diese die neuere NTLMv2-Authentifizierung unterstĂŒtzen.
# Sollte dies nicht mehr möglich sein, wie z. B. bei Windows XP oder Windows 2000, so muss man die folgenden EintrĂ€ge unter dem Abschnitt [global] hinzufĂŒgen:

[global]
lanman auth=yes
ntlm auth=yes

# Wichtig:
# Diese zwei EintrĂ€ge mĂŒssen zwingend unter dem bereits vorhandenen Eintrag [global] hinzugefĂŒgt werden.
# Man kann diese EintrÀge nicht bei einer Freigabe angeben!
# Aus SicherheitsgrĂŒnden sollte man diese Parameter nur angeben wenn man diese zwingend benötigt.

AusfĂŒhrliche Beschreibung:
## Freigabe Optionen: ##
[Box$] # Das ist der Freigabename, dieser kann auch anders lauten als der Ordnername. Ein [$] am Ende erzeugt eine versteckte Freigabe.
comment = Freigabe-Beschreibung # Eine optionale Beschreibung der Freigabe.
browsable = yes # Darf die Freigabe auch rekursiv durchsucht werden (Standard=yes)?
path=/srv/Box # Der Pfad zur Freigabe (die Datei-Berechtigungen auf Systemebene mĂŒssen gegeben sein!).
writeable = yes # Freigabe beschreibbar machen?
valid users = Benutzername, @grp_Lager, %U
# Welche Benutzer dĂŒrfen die Freigabe nutzen? @grp_Lager = bedeutet alle User die Mitglied der Gruppe Lager sind können die Freigabe nutzen. [%U] (username) = alle lokal existierenden User einschließlich root.
hosts allow = 192.168. # FĂŒr welche Netzwerkbereiche soll die Freigabe erreichbar sein?
# Hier können alle User aus dem lokalen Netzwerk 192.168.*.* auf die Freigabe zugreifen.

## Papierkorb Optionen: ##
# Papierkorb aktivieren & Pfad einstellen:
vfs object = recycle # Gelöschte Dateien und Verzeichnisse werden in den festgelegten (versteckten) Ordner verschoben.
recycle:repository = .recycle/%U # Der Pfad zum Papierkorb ist relativ zur Freigabe [.recyle] = ist Standard, [%U] = Username (wenn man fĂŒr jeden User ein extra Papierkorb will).

# Ausnahmen & Berechtigungen fĂŒr den Papierkorb festlegen:
recycle:keeptree = yes # Verzeichnisstruktur im Papierkorb mit sichern.
recycle:exclude = .~lock*.*#, ~$*.*, *.tmp # Vom Papierkorb ausgeschlossene Dateien z. B. Office-Temp-Dateien (LibreOffice/Microsoft Office). Diese werden nicht im Papierkorb gesichert.
recycle:exclude_dir = tmp, temp # Sofort zu löschende Verzeichnisse. Diese werden nicht im Papierkorb gesichert.
recycle:directory_mode = 0750 # Zugriffsrechte fĂŒr das Papierkorbverzeichnis festlegen.
# [0700] = Nur der User selbst hat Vollzugriff auf den Papierkorb (Standard).
# [0750] = Der User hat Vollzugriff und alle Gruppenmitglieder können lesend auf den Papierkorb zugreifen.
recycle:maxsize = 0 # Festlegen bis zu welcher maximalen DateigrĂ¶ĂŸe werden Dateien in den Papierkorb geschoben? GrĂ¶ĂŸere Dateien werden sofort gelöscht. Die Angabe erfolgt in Bytes (1073741824 Bytes = 1 GiB).

# Wie soll mit gleichen Dateien (geÀnderten Dateien) umgegangen werden:
recycle:versions = yes # GeÀnderte Versionen werden nicht gelöscht, sondern fortlaufend durchnummeriert (Copy #x of Dateiname). Auf Àltere Versionen kann hier also zugegriffen werden.
recycle:noversions = *.doc?, *.xls?, *.mdb, *.pdf # bedeutet dabei das Àltere Versionen von geÀnderten Dateien (die dem angegebenen Wert entsprechen) nicht im Papierkorb gesichert werden.
# [recylce:noversion] hat immer Vorrang vor [recycle:versions].
# Das bedeutet wenn ein Wert fĂŒr [recycle:noversions] gesetzt wurde, so wird immer nur die zuletzt gelöschte Dateiversion erhalten. Alle anderen Vorversionen werden nicht im Papierkorb gesichert.
# Wird eine Datei gelöscht die nicht zu den Werten von [recycle:noversions] passt, so gilt [recycle:versions] und es wird eine durchnummerierte Historie der Datei angelegt.

# korrekten Zeitstempel setzen, zur Vorbereitung auf die Löschung via Cron-Job:
recycle:touch = yes # Der Zeitstempel (das Datum des letzten Zugriffs) wird bei der gelöschten Datei auf das aktuelle Datum gesetzt, wenn die Datei in den Papierkorb geschoben wird (empfohlen).
recycle:touch_mtime = yes # Der Zeitstempel (das Datum der letzten Änderung) wird bei der gelöschten Datei auf das aktuelle Datum gesetzt, wenn diese in den Papierkorb geschoben wird (weniger empfohlen).
# Diese Zeitstempel sind wichtig, um so spĂ€ter den Papierkorb zu bereinigen. Man kann dann z. B. nach dem 'letzten Zugriff' bzw. nach der 'letzten Änderung' suchen.

# User festlegen die den Papierkorb durchsuchen können:
write list = admin, root, @grp_trashcan # Die angegebenen User bzw. die Mitglieder der angegebenen Gruppen können auch den Papierkorb von anderen Usern durchsuchen und bereinigen.
# Dies lockert also unter anderem die Berechtigung [recycle:directory_mode = 0700] von oben.

# Verschiedene Dateien und Verzeichnisse fĂŒr User verstecken:
hide files = /.recycle/?esktop.ini/?humbs.db/ # EintrĂ€ge mĂŒssen immer zwingend mit einem Slash [/] beginnen und enden.
# So kann man den MĂŒlleimer und andere unwichtige Dateien fĂŒr die User verstecken.
# Die Dateien erhalten dabei Transparent das hidden/versteckt-Attribut - ein Zugriff auf die Dateien ist also nach wie vor noch möglich.

# Verschiedene Dateitypen oder Namen verbieten:
veto files = /*.mpg/MĂŒll/ # Verbietet das Anlegen von Dateien oder Verzeichnissen die dem Muster entsprechen. EintrĂ€ge mĂŒssen immer zwingend mit einem Slash [/] beginnen und enden.
delete veto files = yes # Die Option weist Samba an, veto-Dateien zu löschen, wenn ein User versucht, ein Verzeichnis zu löschen, in dem veto-Dateien enthalten sind.
# Das bedeutet, wenn ein User ein Verzeichnis zu löschen versucht, das eine veto-Datei enthÀlt, dann wird die Datei (und das Verzeichnis) nicht gelöscht.
# Stattdessen wird das Verzeichnis bestehen bleiben und aus der Perspektive des Users leer erscheinen. Wird die Option auf yes gesetzt, werden Verzeichnis und Veto-Dateien gelöscht. (Standard=no)
Benötigt man ein getrenntes Homedirectory fĂŒr jeden User, so sollte man die vorbereiteten EintrĂ€ge wie [homes], [netlogon], [profiles] usw. beachten.

Um die Änderungen zu ĂŒbernehmen, muss man den Dienst neu starten. Je nach verwendeter Samba Version sind die Befehle unterschiedlich:
service smbd restart
service samba restart

Samba Papierkorb automatisch bereinigen:
Der Ordner der als Papierkorb verwendet wird wird nicht automatisch gelehrt.
Entweder man bereinigt den Ordner manuell von Zeit zu Zeit.
Oder man richtet hierzu einen geplanten Task (Cron-Job) fĂŒr die Bereinigung des Papierkorbs ein:
crontab -e

Variante mit Zwischensicherung (empfohlen):
# Hier unten die folgenden zwei Aufrufe hinzufĂŒgen:
0 12 * * * find /srv/Box/.recycle/* -atime +15 -exec mv {} /srv/recycle_temp \;
>/dev/null 2>&1
# Hier werden tÀglich um 12 Uhr ab dem angegebenen Verzeichnis alle Dateien und Verzeichnisse gesucht, bei denen das Zugriffsdatum Àlter als 15 Tage ist.
# Zutreffende werden in den Ordner '/srv/recycle_temp' verschoben. In dem Ordner '/srv/recycle_temp' erhalten sie dann eine letzte Gnadenfrist.
# Der User hat dann erst mal keinen Zugriff mehr auf seine gelöschten Dateien und das Zugriffsdatum bleibt somit konstant.
# Der Administrator hat natĂŒrlich noch die Möglichkeit Dateien aus dem Ordner '/srv/recycle_temp' wieder herzustellen.
# FĂŒr den Administrator sollte man daher eine extra Freigabe auf '/srv/recycle_temp' einrichten.

0 12 * * * find /srv/recycle_temp/* -atime +60 -exec rm -rf {} \; >/dev/null 2>&1
# Bedeutet: TĂ€glich um 12 Uhr, im Ordner '/srv/recycle_temp' nach Dateien und Verzeichnisse suchen, bei denen das Zugriffsdatum Ă€lter als 60 Tage ist. Zutreffende werden dann endgĂŒltig gelöscht.

# Optional:
# cron leitet immer alle Ausgaben die an die Standardausgabe (stdout) gehen standardmĂ€ĂŸig per E-Mail weiter - so das man die Ausgabe dann dort in der E-Mail sieht.
# Der User 'root' wĂŒrde bei dieser Konfiguration tĂ€glich 2 E-Mails erhalten.
# FĂŒgt man der cron-Zeile den Anhang [ >/dev/null 2>&1] an, so werden nur Fehler (stderr) per E-Mail weitergeleitet - alle anderen fehlerlosen Ausgaben werden nicht mehr weitergeleitet.

Alternative Varianten (weniger empfohlen):
# Hier werden tĂ€glich um 12 Uhr alle Dateien (ab dem angegebenen Verzeichnis) endgĂŒltig entfernt, wenn der letzte Zugriff auf diese Dateien Ă€lter als 15 Tage her ist.
0 12 * * * find /srv/Box/.recycle -mindepth 1 -atime +15 -exec rm -rf {} \;
# Hat man mehrere Freigaben definiert, so werden diese alle mit dieser einen Zeile automatisch bereinigt. (Die unterschiedlichen Farben dienen nur der besseren Lesbarkeit.):
0 12 * * * for path in $(grep path /etc/samba/smb.conf | cut -d= -f2 | sed -e '/^#/d' -e '/^ /d'); do find ${path}/.recycle -mindepth 1 -atime +15 -exec rm -rf {} \;; done;
# ParametererklÀrung:
# Über die for;, do;, done; - Schleife werden mit Hilfe von grep nacheinander alle Pfade aus der 'smb.conf'-Datei ausgelesen.
# Diese Pfade werden mit Hilfe von cut und sed noch entsprechend Formatiert und in einer Variable gespeichert.
# Diese Variable wird nun an find ĂŒbergeben. find sucht dann alle Dateien und Verzeichnisse auf die in den letzten 15 Tagen nicht mehr zugegriffen wurde.
# Die gefundenen Dateien und Verzeichnisse werden im Anschluss entsprechenden mit rm gelöscht.

# grep Parameterbeschreibung:
# [grep path /etc/samba/smb.conf] gibt alle Zeilen aus die [path] enthalten.
#
# cut Parameterbeschreibung:
# [-d=] Beschreibt das Trennzeichen hier [=]. Die Zeilen werden am Trennzeichen in Spalten zerlegt.
# [-f2] Bestimmt welcher Spaltenteil ausgegeben werden soll.
# Hier im Beispiel soll alles nach dem ersten [=] Gleichheitszeichen ausgegeben werden.
# Daher wird hier eine 2 wie 2. Spalte angegeben. Es wird dann also der Pfad ausgegeben.
#
# sed ParametererklÀrung:
# [-e '/^#/d'] entfernt vorhandene Kommentarzeilen.
# [-e '/^ /d'] entfernt fĂŒhrende Leerzeilen [ ].
# Wichtig: Löscht man das Leerzeichen so muss der Pfad ohne Leerzeichen angegeben sein. Also z. B. so: [pfad=/srv/Box] und nicht so [pfad = /srv/Box].
# Das Leerzeilen entfernen macht insbesondere daher Sinn, da so die vorhandenen Kommentarzeilen alle gelöscht werden.

# -mindepth ParametererklÀrung:
# Gibt man [-mindepth 1] an so beginnt die Suche nach dem löschen erst nach dem 1. Unterverzeichnis. Es bleibt also das [.recycle]-Verzeichnis bestehen.
# Setzt man [-mindepth 2] auf den Wert auf 2 so bleiben auch eventuell vorhandene Userverzeichnisse bestehen.

[-atime] = (access time) sucht nach dem [Datum des letzten Zugriffs] (empfohlen).
Das [Datum des letzten Zugriffs] wird oben ĂŒber den Parameter [recycle:touch] auf das Löschdatum gesetzt.
Beachten sollte man, dass ggf. eine Bildervorschau als neuer Zugriff gewertet werden kann. Durchsucht also eine Anwendung den MĂŒlleimer, kann dies als neuer Zugriff gewertet werden. Dies kann dann das Löschen hinauszögern.
Tritt dieser Effekt hĂ€ufiger auf kann man nur nach dem [Datum der letzten Änderung] suchen.

[-mtime] = (modification time) sucht nach dem [Datum der letzten Änderung] (weniger empfohlen).
Achtung: Liegt das Änderungsdatum weit zurĂŒck, sprich löscht man eine Datei die man vor lĂ€ngerer Zeit erstellt hat (z. B. vor den 15 Tagen), so wĂŒrde die Datei beim nĂ€chsten Lauf (also am nĂ€chsten Tag) sofort mit gelöscht (und nicht erst in 15 Tagen).
Da beim Löschen das Änderungsdatum der Datei ja nicht geĂ€ndert wird und die Datei schon alt genug wĂ€re (die Datei war ja schon mindestens 15 Tage alt).
Umgehen kann man das in dem man [recycle:touch_mtime = yes] aktiviert - hier wird beim Löschen das Änderungsdatum aktualisiert.
Da hier aber das Änderungsdatum der Datei geĂ€ndert wird wĂŒrde ich davon abraten, denn hier wĂŒrde dann bei einem Restore der Datei das Datum der letzten Änderung nicht mehr stimmen.
# Zum Testen kann man folgendes Shell-Script verwenden:
#!/bin/sh
for path in $(grep path /etc/samba/smb.conf | cut -d= -f2 | sed -e '/^#/d' -e '/^ /d'); do echo ${path}; done; # fĂŒr Debug Zwecke (Ausgabe der Papierkorbverzeichnisse).
for path in $(grep path /etc/samba/smb.conf | cut -d= -f2 | sed -e '/^#/d' -e '/^ /d'); do find ${path}/.recycle -mindepth 1 -atime +15; done; # fĂŒr Debugzwecke (Ausgabe der zu löschenden Daten).

Samba Firewall (ufw) Zugriff ermöglichen:
ufw allow 137/udp
ufw allow 138/udp
ufw allow 139/tcp
ufw allow 445/tcp
ufw enable

Hilfe erhĂ€lt man ĂŒber:
man smb.conf

17.

Apache2 Webserver mit PHP:


Grundkonfiguration: mod_rewrite aktivieren (optional):
Apache und PHP installieren:
apt-get install apache2 php5 libapache2-mod-php5 php5-gd (bis Ubuntu 15.10 mit PHP5)
apt-get install apache2 php libapache2-mod-php php-gd (ab Ubuntu 16.04 mit PHP7)
Die Pakete [php5-mysql] bzw. [php-mysql] (ab Ubuntu 16.04) und [mysql-server] muss man nur installieren wenn man eine Datenbank benötigt.
[php5-gd] bzw. [php-gd] = Richtet die Grafikbibliothek GDlib ein (diese wird oft benötigt, daher am besten gleich mit installieren).
[php-xml] ist optional, benötigt z. B. das myBB-Forum.

Das Wurzelverzeichnis-Verzeichnis (root-Verzeichnis) fĂŒr den Apache2-Server befindet sich unter [/var/www/] bzw. unter [/var/www/html/] (neuere Versionen).

Um zu ĂŒberprĂŒfen ob die Installation geklappt hat, kann man folgende Testdatei verwenden:
nano /var/www/index.php
# Hier fĂŒgt man folgendes hinzu:
<?php phpinfo(); ?>

Ruft man die Datei nun im Webbrowser auf (IP-Adresse anpassen), sollte eine PHP-Versionsanzeige erscheinen:
http://192.168.2.1/index.php

Als root-User könnte man jetzt schon beliebigen Inhalt bereit stellen (aus SicherheitsgrĂŒnden sollte man dieses jedoch vermeiden).

Vorbereitungen User-Rechtevergabe fĂŒr den Upload:
Der Apache Webserver reagiert oft sehr empfindlich wenn man direkt die Berechtigungen fĂŒr den web-root-Ordner verĂ€ndert (verschiedenste Zugriffsprobleme können dabei auftreten).
StandardmĂ€ĂŸig sind fĂŒr den Ordner [/var/www/html] folgende Berechtigung vergeben:
[drwxr-xr-x 2 root root 4096 MĂ€r 29 09:06 html/] (diese sollte man so belassen).
Hat man diese Berechtigung verÀndert, so kann man diese wie folgt wieder herstellen:
[chmod -R 755 /var/www] und [chown -R root:root /var/www].

Will man nun die web-Daten nicht als root-User verwalten,
so sollte man den Inhalt am besten in einem extra Unterordner ablegen und
dort die Berechtigungen fĂŒr einen separaten Benutzer entsprechend festlegen.

Man erzeugt also ein neues Unterverzeichnis:
mkdir /var/www/html/cms

FĂŒr dieses Verzeichnis vergibt man folgende Datei-Berechtigung:
chmod -R 755 /var/www/html/cms

Weiterhin Àndert man die Besitzrechte auf den Benutzer der spÀter den Inhalt pflegen soll.
Dieser Benutzer benötigt dann keine root-Rechte mehr um den web-Inhalt zu pflegen:
chown -R Benutzer /var/www/html/cms

Weiterhin fĂŒgt man den Benutzer zur bestehenden Gruppe [www-data] hinzu:
addgroup Benutzer www-data
Dies ist notwendig, damit man spĂ€ter den kompletten Zugriff auf alle Dateien hat, denn die von einer Webanwendung (z. B. CMS/Forum) erzeugten Dateien gehören immer der Gruppe [www-data] (Apache) an.
Hat man nur statischen Inhalt, so muss man den Benutzer nicht der Gruppe [www-data] hinzufĂŒgen.

Webanwendung wie CMS, Forum usw. installieren:
Jetzt kann man das CMS-System hochladen und den Installer starten.

Wenn dann der CMS-Installer nicht schreiben kann, so muss man die Dateiberechtigungen-Zugriffsrechte wie folgt anpassen:
chmod -R 777 /var/www/html/Ordner_oder_Dateien_die_Schreibrechte_benötigen

Hinweis:
Die Dateiberechtigung 777 bedeutet = Vollzugriff fĂŒr alle.
Man sollte daher diese Rechte nur fĂŒr die Dateien und Ordner vergeben, fĂŒr die das CMS-System diese wirklich dringend benötigt.
Die Entsprechenden Ordner sollten in einer guten CMS-Dokumentation beschrieben sein, bzw. beim Installer angezeigt werden.

Sicherheit:
Um die Sicherheit zu erhöhen, sollte man die Schreibrechte von Dateien wieder entziehen, wenn diese nur einmalig beim Installieren benötigt werden.
Dies trifft z. B. hĂ€ufig auf die [config.php]-Datei zu - hier werden z. B. meist einmalig Datenbankenpfade u. Ă€. gespeichert, die danach nicht mehr geĂ€ndert werden.
Beispiel: [chmod -R 644 config.php] = Nur der EigentĂŒmer darf lesen & schreiben, alle anderen dĂŒrfen nur lesen.
Das Modul aktivieren:
a2enmod rewrite

Verzeichnis anlegen (meist schon vorhanden):
mkdir -p /var/run/apache2

Besitz-Berechtigung fĂŒr den Ordner festlegen:
chown -R www-data /var/run/apache2

Die Module aktivieren:
a2enmod actions

Apache Patchen das [.htaccess]-Dateien ausgewertet werden:
nano /etc/apache2/sites-enabled/000-default
nano /etc/apache2/apache2.conf # ab Apache 2.x
Hier in der Passage:
<Directory /var/www>
folgendes Àndern:
  AllowOverride None
in:
  AllowOverride FileInfo

Hinweis:
Die Datei [/etc/apache2/sites-enabled/000-default] ist hierbei in der Regel ein symbolischer Link auf
die Datei [../sites-available/default]. Welche Datei man editiert ist also egal.

Zuletzt noch den apache2 Server neu starten.
service apache2 restart
Verzeichnisschutz fĂŒr Verzeichnisse mit .htaccess und .htpasswd (optional):

Die [.htpasswd]-Datei erzeugen:
htpasswd -c -B -C 13 /var/www/geschuetztes_Verzeichnis/.htpasswd Benutzername
ParametererklÀrung:
[-c] = eine neue Datei anlegen (eine bestehende wird ĂŒberschrieben), lĂ€sst man den Parameter weg - so wird eine weitere Berechtigung der Datei hinzugefĂŒgt (angehĂ€ngt).
[-m] = MD5 VerschlĂŒsselung (Standard).
[-s] = SHA VerschlĂŒsselung (nicht mehr 100% sicher).
[-B] = bcrypt VerschlĂŒsselung (sehr sicher).
[-C] = legt die StĂ€rke der bcrpt VerschlĂŒsselung fest (nur fĂŒr bcrypt VerschlĂŒsselung geeignet), es sind dabei die Werte 4 - 31 erlaubt (Standard = 5).

Hinweise:

Die bcrypt-VerschlĂŒsselung mit höheren Werten verzögert deutlich das Login, auch die erste Berechnung der Keys kann bei hohen Werten sehr lange dauern. Die bycrpt-VerschlĂŒsselung ist erst ab Debian 8 und neueren Ubuntu Versionen verfĂŒgbar.

Als nÀchstes erzeut man die [.htaccess]-Datei:
nano /var/www/geschuetztes_Verzeichnis/.htaccess
# Hier fĂŒgt man dann folgendes ein:
AuthName "Bitte geben sie ihre Zugangsdaten ein."
AuthType Basic
AuthUserFile /var/www/geschuetztes_Verzeichnis/.htpasswd
require valid-user

Beachtet dabei: Die [.htaccess]-Datei verweist auf die zuvor erstellte [.htpasswd]-Datei.

Damit die [.htpasswd]- und die [.htaccess]-Datei vom apache2 geparst wird muss man die Konfiguration vom apache2 Server anpassen:
nano /etc/apache2/sites-available/default
nano /etc/apache2/apache2.conf # ab Apache 2.x
Hier Àndert man unter:
<Directory /var/www/>
    Options Indexes FollowSymlinks MultiViews
    AllowOverride None
in:
    AllowOverride AuthConfig

Hinweis:
Die Datei [/etc/apache2/sites-enabled/000-default] ist hierbei in der Regel ein symbolischer Link auf
die Datei [../sites-available/default]. Welche Datei man editiert ist also egal.

Die geÀnderte Konfiguration im apache2 einlesen:
service apache2 reload

Hinweis:
Will man [mod_rewrite] und den [Verzeichnisschutz] gleichzeitig verwenden, so trÀgt man in der Konfiguration einfach folgendes ein: [AllowOverride FileInfo AuthConfig] ein.

Absicherung wenn alles lÀuft (bei statischen Context) - Achtung dies entzieht komplett den Schreibzugriff (optional):
chmod -R a-w /var/www
Ändert die Dateiberechtigungen von [drwxr-xr-x] auf [dr-xr-xr-x] - entzieht also die write/Schreibberechtigung.
Umkehren kann man das durch [chmod -R a+w /var/www].

18.

Einen MySQL Datenbankserver Server einrichten & die Anbindung an PHP und Apache realisieren:


Eine MySQL-Datenbank benötigt man fĂŒr verschiedenste Datenbankbasierende Webanwendungen wie z. B. CMS- und Foren-Systeme.
Port: 3306 ist der Standardport.
Original: MySQL Handbuch

Die benötigten MySQL Pakete installieren:
apt-get install mysql-server php5-mysql (bis Ubuntu 15.10 mit PHP5)
apt-get install mysql-server php-mysql (ab Ubuntu 16.04 mit PHP7)
Wichtig: Aus SicherheitsgrĂŒnden wird hierbei ein Passwort fĂŒr MySQL (MySQL-root-Passwort) fĂŒr den fĂŒr den Benutzer root abgefragt, dieses sollte man setzen.
Dieses Passwort sollte gÀngigen Passwortstrategien entsprechen, man sollte es also nicht zu leicht wÀhlen.
Weiterhin sollte sich das Passwort vom root-User-Passwort unterscheiden, um Hackangriffe zu erschweren.
Rumpelhein1zchen

Die MySQL Installation absichern (u. a. Test- und Anonymous-ZugÀnge deaktivieren):
mysql_secure_installation

Als nÀchstes loggt man sich in MySQL ein:
mysql -uroot -pPasswort
ParametererklÀrung:
[-u] = (user) unter welchem MySQL-User-Account (hier root) soll die Datenbank angelegt werden?
[-p] = (password) hier wird das MySQL-root-Passwort welches man zuvor vergeben hat eingegeben. Achtung: Zwischen dem Parameter [-p] und dem vergebenen [Passwort] darf kein Leerzeichen stehen.

Hier kann man dann eine Datenbank erstellen und die Benutzer-Berechtigungen vergeben:
Als nÀchstes erstellt man eine neue Datenbank, dies geschieht mit folgendem MySQL-Befehl:
CREATE DATABASE Datenbankname;

ParametererklÀrung:
[create] = (erstellen), also neu erstellen.
[database] = (Datenbank), es soll also eine neue Datenbank erstellt werden.
[Datenbankname] = der Name ist beliebig frei wĂ€hlbar (z. B. db, CMS, Forum, Projektname).
[;] = Wichtig: Das Semikolon schließt den MySQL Befehl immer ab, dieses also nicht vergessen!

Wenn man den Befehl mit der Eingabe bestĂ€tigt, so sollte eine RĂŒckmeldung kommen wie:
[Query Ok] = (Abfrage ok) = bedeutet der Befehl wurde erfolgreich ausgefĂŒhrt.

Welcher User erhĂ€lt das Recht Daten in der Datenbank hinzuzufĂŒgen und ein Passwort fĂŒr die Datenbank festlegen:
GRANT ALL PRIVILEGES ON Datenbankname.* TO 'Benutzername'@'%'    IDENTIFIED BY 'Datenbank-Passwort';
GRANT ALL PRIVILEGES ON db_name.*       TO 'db_user'@'localhost' IDENTIFIED BY 'db_pass';

ParametererklÀrung und Hinweise:
[Datenbankname] = ist hier im Beispiel der Name der Datenbank die man eben erstellt hat.
[Benutzername] = ist ein neuer beliebiger Benutzername, dieser Benutzer erhÀlt dann Zugriff auf die angegebene Datenbank.
[@'%'] = erlaubt Zugriff von ĂŒberall.
[@'localhost'] = Achtung dies erlaubt den Zugriff nur lokal.
Gibt man nur localhost an, so kommen Fehler wie: [Could not connect to the database. Verify that username and password ...] bzw. [Die Verbindung zur Datenbank konnte nicht hergestellt werden. Bitte prĂŒfen Sie, ob der Benutzername und Kennwort ...].
Aus SicherheitsgrĂŒnden sollte der Datenbank-Benutzer auch kein lokales Konto auf dem PC besitzen. Hier also keinen lokalen User verwenden! Man sollte hier auch nicht den User root verwenden!
Falls nĂ€mlich ein Hacker die Zugangsdaten zur Datenbank hacken wĂŒrde, so hĂ€tte er möglicherweise Zugriff auf das komplette System.
Man verwendet also fĂŒr den Benutzernamen einen neuen Namen wie z. B. [dbuser_Projektname].
Den neuen Benutzernamen sollte man aus SicherheitsgrĂŒnden nur fĂŒr die Datenbank verwenden (also keinesfalls fĂŒr andere Dienste verwenden).
[Datenbank-Passwort] = ist das neu zu vergebende Datenbankpasswort (MySQL-db-Passwort).
[;] = Wichtig: Das Semikolon schließt den MySQL Befehl immer ab, dieses also nicht vergessen!
['] = Wichtig: Die Hochkomma die den Usernamen, den Domainteil und das Passwort umgeben sollte man mit eingeben - teilweise werden die erwartet!

Im Anschluss sollte wieder eine Meldung kommen [Query OK].
Ab sofort hat der Benutzer mit Hilfe des vergebenen Passworts Vollzugriff auf die Datenbank.

Hinweis: Die Datenbank ist jetzt sofort Einsatzbereit.
Man kann jetzt mit dem Testen der Verbindung beginnen, das Ausloggen kann man auch spÀter noch erledigen.

Wenn alles lÀuft kann sich jetzt aus dem MySQL ausloggen. Alternativ kann man auch die Kurzform [\q] verwenden.
QUIT
Wichtiger Sicherheitshinweis (debian.cnf sichern):
Unter Ubuntu und Debian wird noch ein zweiter MySQL-Benutzer mit dem Namen [debian-sys-maint] angelegt. Dieser ist fĂŒr verschiedenste Wartungsaufgaben zustĂ€ndig. FĂŒr diesen User wird in der Datei [/etc/mysql/debian.cnf] das Passwort im Klartext gespeichert. Mit diesem User kann man das root-MYSQL-Passwort zurĂŒcksetzen. Man erhĂ€lt also ĂŒber diesen User wieder Vollzugriff auf die Datenbank wenn man mal das Kennwort fĂŒr MySQL vergessen hat.
Diese Datei sollte man sich daher sichern, da es ggf. passieren kann, dass die Datei [/etc/mysql/debian.cnf] bei einem Upgrade vom mysql-server Paket mit ausgetauscht wird.
cp /etc/mysql/debian.cnf /etc/mysql/debian.cnf.mein-backup

Datenbank-Verwaltung ĂŒber den Adminer:
Adminer ist eine PHP-WeboberflĂ€che (Ă€hnelt phpMyAdmin) mit der man verschiedenste Datenbankaufgaben durchfĂŒhren kann. Adminer benötigt einen apache2-Webserver.

Verzeichnis fĂŒr Adminer anlegen:
mkdir /var/www/html/adminer

In das Verzeichnis wechseln:
cd /var/www/html/adminer

Adminer herunter laden (die aktuelle Version findet man immer hier www.adminer.org/#download):
wget -O adminer.php adminer.org/latest-mysql-de.php = Der Link verweist immer auf die aktuellste Version.

Adminer benötigt folgende Pakete:
apt-get install libpq5 php5-pgsql php5-sqlite = diese Pakete muss man noch nachinstallieren (bis Ubuntu 15.10).
apt-get install php-mysql = folgendes nachinstallieren (ab Ubuntu 16.04 mit PHP7).
apt-get install libapache2-mod-php5 php5-mysql php5-cli = diese Pakete sind meist schon vorhanden.

Weiterhin muss Apache neu gestartet werden:
service apache2 reload

Den Adminer kann man dann ĂŒber einen Webbrowser wie folgt aufrufen:
http://IP-Adresse_oder_localhost/adminer/adminer.php

Das Design vom Adminer kann man mit css-Design anpassen, hierzu legt man im Ordner eine adminer.css Datei an.
Es gibt auf der Homepage mehrere Beispieldateien.
Alle angelegte Datenbanken auflisten:
mysqlshow -pPasswort # Hier muss man das MySQL-root-Passwort angeben.
[information_schema], [mysql] und [performance_schema] sind schon StandardmĂ€ĂŸig angelegt.
Hier noch ein paar wichtige SQL-Befehle:
SHOW DATABASES; = alle vorhandenen Datenbanken anzeigen.
SHOW TABLES FROM db_name; = gespeicherte Tabellen der angegebenen Datenbank anzeigen.
USE db_name; = Will man SQL-Befehle innerhalb einer Datenbank ausfĂŒhren (wie z. B. Tabellen anlegen), so muss man die gewĂŒnschte Datenbank zuvor auswĂ€hlen.
DROP DATABASE db_name; = Datenbank löschen.
Die MySQL-Datenbank sichern:
mysqldump -u root -pPasswort --all-databases > Sicherung.sql # Sichert alle Datenbanken.
mysqldump -u root -pPasswort --all-databases --ignore-table mysql.events > Sicherung.sql # Sichert alle Datenbanken & verhindert den Fehler [-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.]
mysqldump -u root -pPasswort Projekt > Sicherung_Projekt_Datenbank.sql # Sichert nur die eine angegebene Datenbank z. B. Projekt.
[Passwort] = ist immer das oben angegebene MySQL-root-Passwort.
Die MySQL-Datenbank wieder herstellen:
mysql -u root -pPasswort < Sicherung.sql # Stellt alle gesicherten Datenbanken wieder her.
mysql -u root -pPasswort Projekt < Sicherung_Projekt_Datenbank.sql # Stellt nur die gesicherte Datenbank (z. B. Projekt) wieder her.

Sollte man die Datenbank auf einem anderen System wieder herstellen, so sollte man unbedingt noch ein flush privileges durchfĂŒhren (die Berechtigungen neu setzen):
mysqladmin -u root -pPasswort flush-privileges
[Passwort] = ist immer das oben angegebene MySQL-root-Passwort.
Den Datenbankzugang fĂŒr das Netzwerk öffnen:
Die folgenden Schritte sind nur nötig wenn man direkt ĂŒber den Port 3306 (sofern geĂ€ndert anpassen) vom Netzwerk aus auf die Datenbank zugreifen möchte.
FĂŒr Web-Foren, CMS Systeme oder vergleichbare Web-Anwendungen - also Webdienste die in der Regel nur ĂŒber Port 80 erreichbar sind - ist dieser Block irrelevant.
ZunÀchst ist der Zugriff auf die MySQL-Datenbank nur auf den localhost (also den lokalen PC) beschrÀnkt.
Will man auch aus dem Netzwerk auf die MySQL-Datenbank zugreifen so muss man die Konfigurationsdatei von MySQL anpassen.
Die Konfigurationsdatei öffnen:
nano /etc/mysql/my.cnf &
# Hier den bereits vorhandenen Wert entsprechend Àndern (nur eine Variante auswÀhlen):
bind-address = 0.0.0.0 # Zugriff von ĂŒberall zulassen. Man kann den Eintrag auch einfach auskommentieren [#] davor setzen.
bind-address = 192.168.0.0 # Zugriff nur aus dem lokalen Netz (192.168.*) erlauben.
bind-address = 192.168.2.100 # Nur der Computer mit der IP-Adresse 192.168.2.100 hat auf die SQL-Datenbank Zugriff.
# Hinweis: Hat man bei bind-address etwas Falsches eingetragen so startet MySQL gar nicht mehr. Es kommt dann immer der Fehler [[FAIL] Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!].

Hinweis: Änderungen an der MySQL Konfiguration werden erst nach einem neu einlesen der Konfiguration, bzw. nach einem Neustart des mysql-Dienstes ĂŒbernommen.
service mysql reload
service mysql restart # Achtung, dies trennt bereits bestehende Verbindungen!
service mysql status # Anzeige ob der Dienst lÀuft oder nicht.
MySQL-root-Passwort zurĂŒcksetzen (nur nötig, wenn man das MySQL-root-Passwort vergessen hat/optional):
1. Als User [debian-sys-maint] an MySQL anmelden:
mysql -u debian-sys-maint -p

2. Das Kennwort zurĂŒcksetzen:
update mysql.user set Password=password('neues-Passwort') where User='root';
flush privileges;
quit;
verschiedene Problemlöser:
netstat -ln | grep mysql # PrĂŒfen ob MySQL hört.

eventuell zusĂ€tzlich benötigte Pakete [Imagic] z. B. fĂŒrs phpBB3 Forum:
apt-get install php5-imagick graphicsmagick-imagemagick-compat

19.

Transparenter Bildschirmschoner unter Linux:


Zuerst installiert man folgende Pakete:
apt-get install xtrlock xautolock libnotify-bin xfce4-notifyd notify-osd

ParametererklÀrung:
[xtrlock] = Sperrt nach dem Start das System, danach sind keinerlei Maus- oder Tastatureingaben mehr möglich. Das Icon des Mauszeigers verwandelt sich dabei in ein blaues Schloss. Das Schloss-Icon kann man nicht ohne weiteres Àndern, da es mit einkompiliert wurde.
Der Befehl 'xtrlock' kann auch einfach so im Terminal eingegeben werden - danach ist die Sperre sofort aktiv. Wichtig: Zum entsperren des Systems kommt keine Eingabeaufforderung. Man muss hier einfach blind das Passwort des Users eingeben der das System gesperrt hat. Danach wird das System wieder freigegeben.

[xautolock] = Sorgt dafĂŒr das nach einer festlegbaren Leerlauf-Wartezeit ein beliebiger Befehl (Parameter '-locker') gestartet wird. Man kann hier z. B. einen beliebigen Sperrdienst angeben z. B. eben 'xtrlock' zum Bildschirmsperren.
Vor dem ausfĂŒhren des locker-Befehls (also vor dem Sperren) kann xautolock noch zusĂ€tzlich einen anderen Befehl starten (Parameter '-notifier').
Über diesen Info-Befehl kann man z. B. den User ĂŒber die anstehende Systemsperre informieren. Dieser kann dann durch Mauswackeln oder durch eine beliebige Tasteneingabe die anstehende Sperre neu verzögern.

[notify-send] = Kann dem User Meldungen darstellen, in der Regel werden diese wie alle anderen Systemmeldungen ĂŒber Sprechblasen angezeigt.
Je nach System können diese Benachrichtigungsdienste anders heißen.
notify-send benötigt unter Debian/Ubuntu die Pakete [libnotify-bin xfce4-notifyd notify-osd] fĂŒr die Darstellung der Sprechblasen.
notify-send hat leider einen kleinen Bug, der Parameter -t wird ignoriert. Benachrichtigungen werden immer Systemweit etwa 10 Sekunden lang angezeigt. Die Anzeigedauer der Systemmeldung kann also nicht verlĂ€ngert oder verkĂŒrzt werden.

FĂŒr den automatischen Bildschirmschonerstart, legt man nun ein Shell-Script an:
mousepad autolock.sh
In der Datei fĂŒgt man folgendes hinzu:
#!/bin/bash
xautolock -notify 60 -notifier '
notify-send -i info "Achtung:" "Autolock in 60 Sekunden."' -time 5 -locker 'xtrlock'
Hinweis: Die verschiedenen AnfĂŒhrungszeichen & Hochkomma (sie dienen der Befehlstrennung) mĂŒssen 1:1 ĂŒbernommen werden.
Die Wartezeit bis zum Sperren betrÀgt in dem Beispiel 5 Minuten,
60 Sekunden vorher (also nach 4 Minuten) wird die Warnmeldung auf die bevorstehende Sperre ausgegeben.

Als nĂ€chstes muss man das Script ausfĂŒhrbar machen:
chmod +x autolock.sh

Das Shell-Script muss jetzt nur noch in den Autostart eingebunden werden.
Wichtig: Dem Aufruf sollte man noch ein '&' anhÀngen, so dass der Prozess im Hintergrund gestartet wird.
Also entweder:
./autolock.sh & # FĂŒr den Direktaufruf oder
/Pfad_zum_Script/autolock.sh & # fĂŒr die Einbindung beim Autostart.
Die AusfĂŒhrung als root ist nicht nötig.
Hinweis: Startet man das Shell-Scrip bzw. xtrlock als root-User, so ist zum entsperren auch das root-User-Passwort nötig.

Weitere Infos hier:
wiki.ubuntuusers.de/Benachrichtigungsdienst

20.

GRUB 2 anpassen (Consolenauflösung und Grub-Splash-Screen anpassen) & Kernel Parameter festlegen:


Die GRUB 2 Konfigurationsdatei findet man unter:
nano /etc/default/grub
Hier kann man verschiedene Einstellungen anpassen.
Um die möglichst grĂ¶ĂŸte KompatibilitĂ€t sicher zu stellen sollte man nur Einstellungen Ă€ndern die wirklich wichtig sind.
GRUB_DEFAULT=0
Legt fest welcher Eintrag gestartet werden soll.
TrÀgt man hier statt '0' = 'saved' ein, so wird immer der zuletzt ausgewÀhlte Eintrag gestartet.

GRUB_TIMEOUT=20
Legt die Wartezeit in Sekunden fest, die gewartet wird bevor automatisch der unter 'GRUB_DEFAULT' festgelegte Eintrag gestartet wird.
Ist der Wert = 0, so wird direkt durchgestartet (nicht empfohlen).
Ist der Wert = -1, so wird gewartet bis ein Eintrag manuell ausgewÀhlt wird (kein Autologin mehr).

GRUB_CMDLINE_LINUX_DEFAULT="quiet"
Legt fest, dass nahezu alle Meldungen ausgeblendet werden.
Steht hier "quiet splash" oder nur "splash" so wird ein Boot-Splashscreen angezeigt sofern einer eingerichtet ist.
Ist der Wert leer "" so werden alle Meldungen beim Start ausgegeben (ggf. hilfreich bei der Fehlersuche).

GRUB_CMD_LINUX="vga=0x0314 acpi=force"
Hier werden Kernel-Bootparameter ĂŒbergeben. Unter anderem legt man hier z. B. die Consolenauflösung fest.
Sollten schon EintrÀge drin stehen, so wird der Parameter angehÀngt (als Trennzeichen zwischen den Parametern wird ein Leerzeichen verwendet).
Hinweis: Splashscreens funktionieren nur mit 16-bit.

Hier eine Tabelle mit den Kernel-Mode-Nummern fĂŒr den 'vga=' Boot-Parameter:
\Auflösung
Farbtiefe\
640x400 640x480 800x600 1024x768 1152x864 1280x1024 1400x1050 1600x1200
4-bit 0x302
8-bit 0x300 0x301 0x303 0x305 0x161 0x307 0x31C
15-bit 0x310 0x313 0x316 0x162 0x319 0x340 0x31D
16-bit 0x311 0x314 0x317 0x163 0x31A 0x341 0x31E
24-bit 0x312 0x315 0x318 0x31B 0x342 0x31F
32-bit 0x164

Sonderformate:
vga=normal (entspricht dem Standard 80x25 Zeilen - kann man auch einfach weg lassen.)
vga=ext (entspricht 80x50 Zeilen - scheint nicht mehr zu klappen.)
vga=ask (Nachfragen - wird nicht mehr unterstĂŒtzt.)

acpi=force fĂŒr alte Computer die stĂ€ndig in den Stromsparmodus gehen, sich also stĂ€ndig schlafen legen, stĂ€ndig den Bildschirm abschalten,
ja teilweise selbst schon beim Starten von der Live-CD/DVDs hÀngen bleiben haben möglicherweise ein zu altes Bios. Meist ist bei diesen PCs das Bios-Datum aus dem Jahr 1999 oder Àlter.
Der Grund das Linux nicht richtig startet/arbeitet liegt daran, dass es nicht den ACPI-Modus verwendet da das Bios zu alt ist. Sondern den APM-Modus versucht der aber immer mal nicht richtig implementiert wurde.
Lösen kann man dies in dem man den Kernel den Parameter [acpi=force] ĂŒbergibt, so erzwingt man die Verwendung des ACPI-Modus. Das stĂ€ndige schlafen legen und hĂ€ngen bleiben tritt dann nicht mehr auf.
Alternativ wĂŒrde auch ein aktuelles Bios helfen, welches man fĂŒr die meiste alten PCs nicht mehr bekommen dĂŒrfte.
Startet man von einem Live-Medium, so kann man den Parameter ĂŒbrigens vor dem Start ĂŒbergeben (F6/Tabulator).

forcepae erzwingt die Nutzung eines Kernels (nur nötig bei Ă€lteren CPUs wie z. B. einigen Pentium M's die kein PAE unterstĂŒtzen).

#GRUB_TERMINAL=console
Aktiviert man den Eintrag (in dem man das # am Zeilenanfang entfernt), so wird im reinen Textmodus gestartet.
Es wird dann kein Hintergrundbild mehr angezeigt.

#GRUB_GFXMODE=800x600
Legt fest in welcher Auflösung das GRUB 2 Hintergrundbild vorliegt (der Eintrag muss ggf. erst aktiviert werden).
StandardmĂ€ĂŸig ist hier 640x480 eingestellt. Will man ein Bild in der Standardauflösung verwenden, so muss man den Eintrag nicht verĂ€ndern.
VerfĂŒgbare Auflösungen kann man sich z. B. ĂŒber den Befehl [hwinfo --framebuffer] anzeigen lassen [apt-get install hwinfo].

Will man das GRUB 2 Hintergrundbild Àndern, so muss man nur ein Bild im PNG-Format in der entsprechenden Auflösung im folgenden Ordner speichern:
/boot/grub/mein_grub_bild.png
Der Bildname ist frei WĂ€hlbar. Es wird immer nur das zuerst gefundene Bild (nach dem Alphabet) angezeigt.
Man sollte in dem Ordner also möglichst nur ein Bild ablegen um Verwechslungen zu vermeiden.

GRUB 2-Beispielbild (Darstellung verkleinert):
wget -O /boot/grub/support.png https://ctaas.de/images/support.png
GRUB 2 mit eigenem Hintergrund.

Wichtig: Um die Änderungen zu ĂŒbernehmen muss man den grub-Bootloader neu schreiben:
update-grub

GRUB 1 Consolenauflösung Àndern (historische alte Systeme):
sudo gedit /boot/grub/menu.lst
Hier zu dem Kernel scrollen den man bearbeiten will und in der Zeile, die mit 'kernel' anfĂ€ngt, das 'vga=0x314' am Ende hinzufĂŒgen.
Beispiel: kernel /boot/vmlinuz-2.6.17-10-386 root=UUID=100b704a-2065-49c5-81be-1b4b42362a24 ro vga=0x317

21.

gelöschte Bilder/Fotos wieder herstellen (recoverjpeg):


recoverjpeg durchsucht beliebige Speichermedien (z. B. ganze Festplatten, Partitionen, SD-Karten oder USB-Sticks) nach gelöschten jpg/jpeg-Dateien und stellt diese wieder her.
Am leichtesten kann man recoverjpeg von einem Live-Medium verwenden.

Verwendet man eine Ubuntu-Live-DVD so muss man zuerst die [universe]-Paketquellen hinzufĂŒgen um die Installation zu ermöglichen (z. B. ĂŒber das [Ubuntu Software-Center]).
Bei einer Debian 8 Live-DVD ist dieser Schritt nicht notwendig.

Hat man die Paketquellen verÀndert, so muss man diese erst noch aktualisieren (neu einlesen):
sudo apt-get update

Anschließend kann man recoverjpeg installieren:
sudo apt-get install recoverjpeg

Wichtig: Gefundene Dateien werden in dem Verzeichnis gespeichert aus welchem das Programm gestartet wurde.
Man muss daher zuerst auf die Festplatte oder Freigabe wechseln wo man die wiederhergestellten Bilder speichern möchte.

Anschließend kann man die Wiederherstellung wie folgt starten:
sudo recoverjpeg /dev/sda = durchsucht die komplette 1. Festplatte und speichert die gefundenen im aktuellen Verzeichnis ab.
sudo recoverjpeg /dev/sda1 = durchsucht die 1. Partition der 1. Festplatte und speichert die gefundenen im aktuellen Verzeichnis ab.

22.

Ubuntu auf eine neue Version aktualisieren (Upgrade):


Die Anleitung ist fĂŒr alle Ubuntu basierenden Distributionen gĂŒltig (sowohl Server- als auch Desktop-Systeme).
Die Dokumentation wurde vom Release/Version 10.04 bis zum aktuellen Release/Version 18.10 getestet.

Hinweise vorab:
Vor einem Upgrade sollte man eine Datensicherung durchfĂŒhren.

Programme aus inoffiziellen Quellen und selbst nachinstallierte Treiber können beim updaten Probleme verursachen.
Des Weiteren wird Software die man ohne Paketquellen installiert hat nicht vom Update-Manager erkannt und berĂŒcksichtigt.
Eine Lösungsmöglichkeit wÀre daher, derartige 'Fremdprogramme' und 'Treiber' vor dem Update zu deinstallieren und nach dem Upgrade wieder neu zu installieren.

Auch sollte man beachten, das eine neue Version die derzeit verwendete Hardware möglicherweise nicht mehr korrekt unterstĂŒtzt, da evtl. die Treiber zu UnterstĂŒtzung von Ă€lterer Hardware (von der Linux-Kernel UnterstĂŒtzung) entfernt wurden.
Um sicher zu gehen sollte man die KompatibilitÀt vorher testen (beispielsweise von einem Live-System aus).

FĂŒhrt man ein Upgrade ĂŒber eine Remoteverbindung z. B. via SSH durch, so kann es passieren dass die Verbindung beim Aktualisieren unterbrochen wird.

Von den wichtigsten Konfigurationsdateien sollte man eine extra Sicherung anlegen (empfohlen).

 Updates ĂŒber die grafische OberflĂ€che (Aktualisierungsverwaltung):

Als erstes muss man prĂŒfen ob die 'Aktualisierungsverwaltung' schon installiert ist:
apt-get install update-manager

Anschließend startet man die [Aktualisierungsverwaltung] einfach ĂŒber das StartmenĂŒ, oder ĂŒber:
update-manager & # um auf die nÀchste Version zu aktualisieren.
update-manager -d # die devel-release/Entwickler-Version ermöglicht schon vor dem offiziellen erscheinen den Wechsel auf die nÀchste Version.
Wichtig: Das Terminal nicht schließen so lange das Update lĂ€uft.

Hinweise zum devel-release (Entwickler-Version):
Entwickler-Versionen verĂ€ndern sich meist hĂ€ufig. Fehler sind daher nicht auszuschließen und man sollte diese daher nicht auf produktiven Systemen einsetzen.
Je nach Entwicklungsstand kann die Version eine Alpha, Beta bzw. Relase-Candidat Version sein.
Aktualisiert man die devel-release Version regelmĂ€ĂŸig, so wird diese automatisch auf die nĂ€chste finale Version aktualisiert (alle Einstellungen und installierte Programme bleiben bestehen).
Will man auf die devel-release Version wechseln, so muss die zuletzt verfĂŒgbare Version bereits installiert sein.

Hier sollte man zunĂ€chst die normalen Updates einspielen. Anschließend kann man
ĂŒber den MenĂŒpunkt [Einstellungen],
den Karteireiter [Aktualisierungen],
den Auswahldialog [Über neue Ubuntu-Versionen benachrichtigen:],
festlegen nach welchen Aktualisierungen gesucht werden soll.
 Update ĂŒber die Console (fĂŒr Server ohne GUI & fĂŒr Desktops mit GUI gleichermaßen geeignet):

Vor dem 'Upgrade' auf eine neue Version sollte man das System auf dem neusten Stand aktualisieren, um Problemen aus dem Weg zu gehen.

Man installiert daher erst mal alle Updates bis das System aktuell ist:
apt-get update # Die Paketquellen aktualisieren (Update-Informationen einlesen).
apt-get upgrade -y # Programm-Pakete auf neue Version aktualisieren (kann man ĂŒberspringen).
apt-get dist-upgrade -y # Programm-Pakete auf neue Version aktualisieren (installiert und entfernt ggf. neue Pakete). Das ist noch kein System-Upgrade auf eine neue Version.
apt-get autoclean -y # löscht nicht mehr benötigte Pakete (Platz schaffen fĂŒrs Upgrade).
apt-get autoremove -y # löscht nicht mehr benötigte Pakete und Kernel-Versionen (Platz schaffen fĂŒrs Upgrade).
apt-get clean -y # löscht alle heruntergeladene Pakete (weniger empfohlen).

Als nÀchstes muss man ggf. den Update-Manager installieren (meistens ist dieser schon vorhanden):
apt-get install update-manager-core

Anschließend legt man fest ob man nur auf LTS-Versionen (Long Term Support) oder auf jede neue Version aktualisieren möchte:
nano /etc/update-manager/release-upgrades
Hier den vorhandenen Wert entsprechend Àndern:
Prompt=normal

ParametererklÀrung:
never = (niemals) deaktiviert die Aktualisierungen komplett.
normal = jede neue Distribution wird angezeigt (... 16.04, 16.10, 17.04, 17.10, 18.04, 18.10 usw.).
lts = nur LTS-Versionen werden angezeigt (aktualisiert: 10.04 direkt auf 12.04, 12.04 direkt auf 14.04, 14.04 direkt auf 16.04, 16.04 direkt auf 18.04 usw.).

Dann kann man die Aktualisierung starten:
do-release-upgrade # auf die nÀchste Version aktualisieren.
do-release-upgrade -d # die devel-release/Entwickler-Version ermöglicht schon vor dem offiziellen erscheinen den Wechsel auf die nÀchste Version (beachtet die Hinweise oben zum devel-release).
Man muss nun den Anweisungen auf dem Bildschirm folgen.
Es kommen hier je nach installierter Version verschieden Fragen wie (Update starten?, neue Konfiguration ĂŒbernehmen oder alte behalten?, automatischen Dienstneustart?, Pakete entfernen?, Neustart?).
Das Update lÀuft also nicht komplett automatisch durch und man sollte die Ausgaben beobachten.

Paketquellen komplett neu aufbauen (nur bei einem Fehler):
ErhĂ€lt man beim Aktualisieren der Paketquellen einen Fehler wie z. B.:
[Das Repository wurde nicht aktualisiert und die vorherigen Indexdateien werden verwendet. GPG-Fehler:] oder
[Einige Indexdateien konnten nicht heruntergeladen werden. Sie wurden ignoriert oder alte an ihrer Stelle benutzt.],
so muss man folgende Schritte durchfĂŒhren:
rm -rf /var/lib/apt/lists/ = vorhandene Paketlisten löschen.
apt-get clean = den kompletten Paket-Cache leeren.
apt-get update = und die Paketquellen neu einlesen/aktualisieren.

23.

BitDefender Virenscanner von einem Ubuntu Live-System aus nutzen:


BitDefender kann fĂŒr den privaten Gebrauch frei verwendet werden.
Hier zeige ich wie man diesen von einer Live-DVD (Xubuntu empfohlen) verwendet:

Zuerst die BitDefender Paketquellen hinzufĂŒgen:
sudo add-apt-repository 'deb http://download.bitdefender.com/repos/deb/ bitdefender non-free'
Die Signaturen fĂŒr die Paketquellen hinzufĂŒgen:
wget -q http://download.bitdefender.com/repos/deb/bd.key.asc -O- | sudo apt-key add -
Die Paketquellen neu einlesen (aktualisieren):
sudo apt-get update
Den Virenscanner installieren:
sudo apt-get install bitdefender-scanner
An schließend muss man BitDefender starten:
sudo bdscan
Hier dann die Leertaste (ca. 6 mal) drĂŒcken oder einmal q drĂŒcken bis am Ende folgende Lizenzabfrage kommt:
Please enter "accept" if you agree to the License Agreement.
Die Lizenz wird bestÀtigt in dem man hier:
accept
Eingibt und die Eingabe mit Enter bestÀtigt.

Zum scannen notwendigen Parameter kann man sich wie folgt anzeigen lassen:
sudo bdscan --help
Oder besser man erzeugt schnell ein kleines Scan-Shell-Script zum scannen (Beispiel):
#!/bin/sh
# Als Shell-Script kennzeichnen.

# Virenscanner aktualisieren:
sudo bdscan --update

# Einen Virenscan durchfĂŒhren & gefundene versuchen zu bereinigen, Archive (wie z. B. .zip, .gz, ...) und E-Maildatenbanken auslassen, mit Logfile:
sudo bdscan --action=disinfect --no-archive --no-mail --log=BitdefenderDisinfectLog.txt /zu_scannender_Pfad

# Einen Virenscan durchfĂŒhren & gefundene Virendateien löschen, E-Maildatenbanken auslassen,
# mit einem ausfĂŒhrlichen Logfile (listet auch entpackte Dateien auf),
# Suspekte Dateien werden in den angegebenen Ordner kopiert (diese sollte man separat genauer untersuchen/die Dateien bleiben am Ursprungsort):
sudo bdscan --action=delete --no-mail --verbose --log=BitdefenderDisinfectLog.txt --suspect-copy --quarantine=/home/xubuntu/QuarantÀne_Pfad /zu_scannender_Pfad

Optional:
--no-list = gescannte Dateinamen nicht im Protokoll speichern (kann das Scannen beschleunigen).
--archive-level=20 = Zu scannende ebenen von Archiven angegeben.
--ext=.exe = die angegebenen Dateitypen (nur .exe Dateien) scannen.
--exclude-ext=TYPEN folgende Dateitypen nicht scannen.

Sollte gleich nach dem Start der Fehler [Loading plugins, please wait - Speicherzugriffsfehler (Speicherabzug geschrieben)] kommen,
so fĂŒhrt man folgendes Script in einem Terminal aus (alles kopieren und im Terminal einfĂŒgen):
cat /opt/BitDefender-scanner/var/lib/scan/versions.dat.* | \
awk '/bdcore.so.linux/ {print $3}' | \
while read bdcore_so; do
sudo touch /opt/BitDefender-scanner/var/lib/scan/$bdcore_so;
sudo bdscan --update;
sudo mv /opt/BitDefender-scanner/var/lib/scan/bdcore.so /opt/BitDefender-scanner/var/lib/scan/bdcore.so.old;
sudo ln -s /opt/BitDefender-scanner/var/lib/scan/$bdcore_so /opt/BitDefender-scanner/var/lib/scan/bdcore.so;
sudo chown bitdefender:bitdefender /opt/BitDefender-scanner/var/lib/scan/$bdcore_so;
done

Will man den Scanverlauf beobachten, so startet man in einem extra Terminalfenster:
tail -f BitdefenderDisinfectLog.txt

Den Virenscanner wieder deinstallieren (optional):
sudo apt-get remove bitdefender-scanner

24.

Linux sichern: Master Boot Record (MBR) und Partitionstabellen und Partitionen sichern & wiederherstellen:


Vorsicht: Änderungen am MBR und den Partitionstabellen bzw. den Partitionen können das System unbrauchbar machen.

Will man ein Linux System komplett sichern, so muss man:
1. Den Master Boot Record (MBR) oder auch (1. Bootsektor) sichern.
2. Die Partitionstabelle sichern (MBR oder GPT) also die Partitionierung sichern (welche Partitionen wurden wie angelegt, Anzahl, GrĂ¶ĂŸe, Dateisystem ...).
3. Zuletzt sollte man die eigentlichen Daten sichern. Hier gibt es verschiedene Möglichkeiten.
   Empfehlen wĂŒrde folgende Programme: dd, fsarchiver, partclone und pv (die Programme werden weiter unten beschrieben).

Da ich hĂ€ufiger Linux-Systeme sichere, habe ich folgendes Sicherungsscript dafĂŒr geschrieben.
Das System wird hierbei automatisch ĂŒber ein Live-System in einer Netzwerkfreigabe gesichert.
ext4 Backup Link
Weitere ausfĂŒhrliche Details zum Script werden hier nun beschrieben.
 1. Master Boot Record (MBR), Bootloader und die primĂ€ren EintrĂ€ge der Partitionstabelle sichern:
Der Boot-Loader belegt die ersten 446 Bytes des MBR, dann folgen die Partitionstabelle (64 Bytes) und die MBR-Signatur.
Man sollte aber noch einige weitere Sektoren sichern, da diese evtl. von GRUB 2 verwendet werden.
Ist der DatentrÀger mit GPT-Partitionen ausgestattet so wird Partitionstabelle wo anders gespeichert.

Anzeigen:
dd if=/dev/sda count=1 | hexdump -C | more = Hexadezimale-Anzeige des Bootsektors.

Sichern:
Am besten ist es alle Sektoren bis zum Anfang der ersten Partition mit zu sichern (dies sichert ggf. auch Boot-Manager fĂŒr Dualboot Systeme und GRUB 2 mit).
Um dies zu ermöglichen sind zwei Punkte wichtig.
Zum einen muss man die 'SektorgrĂ¶ĂŸe' des DatentrĂ€gers wissen und den 'Anfang der ersten Partition' herausfinden.

Beides kann man mit fdisk herausfinden:
fdisk -l
Man erhÀlt hier in etwa folgende Ausgabe:
Disk /dev/loop0: 934,4 MiB, 979812352 bytes, 1913696 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sda: 16 GiB, 17179869184 bytes, 33554432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000f3b42

Device     Boot    Start      End  Sectors Size Id Type
/dev/sda1  *        2048 29360127 29358080  14G 83 Linux
/dev/sda2       29362174 33552383  4190210   2G  5 Extended
/dev/sda5       29362176 33552383  4190208   2G 82 Linux swap / Solaris

Hier liest man dann die SektorgrĂ¶ĂŸe und den Startsektor der ersten Partition ab.

Die ausgelesenen Werte setzt man hier entsprechend ein:
bs=SektorgrĂ¶ĂŸe in Bytes (z. B. 512).
count=bestimmt die Anzahl der zu lesenden Sektoren (z. B. 2048).

dd if=/dev/sda of=backup_mbrgrub_only.img bs=446 count=1 = sichert nur den MBR (GRUB 2 Bootloader), dies ist insbesondere sinnvoll vor Windows-Neuinstallationen bei Dualboot-Installationen.
dd if=/dev/sda of=backup_mbrgrub_part.img bs=512 count=1 = sichert den gesamten MBR inkl. der Partitionstabelle von der ersten Festplatte (sda) als Datei im aktuellen Verzeichnis.
dd if=/dev/sda of=backup_mbrgrub_63.img bs=512 count=63 = sichert den MBR inkl. der Partitionstabelle & GRUB (bei herkömmlichen Festplatten sind es meist 63 Sektoren).
dd if=/dev/sda of=backup_mbrgrub_2048.img bs=512 count=2048 = sichert den MBR inkl. der Partitionstabelle & GRUB (bei VMs & SSDs sind es meist 2048 Sektoren).

RĂŒcksichern:
dd if=beliebiges_backup.img of=/dev/sda bs=446 count=1 = stellt nur den MBR (GRUB 2 Bootloader) (die ersten 446 Bytes) wieder her, sinnvoll bei Dualboot-Installationen.
dd if=backup_mbr.img of=/dev/sda bs=512 count=1 = kompletten MBR inkl. Partitionstabelle) rĂŒcksichern.
dd if=backup_mbrgrub_63.img of=/dev/sda bs=512 count=63 = die ersten 63 Sektoren (MBR inkl. Partitionstabelle & GRUB) rĂŒcksichern (meist herkömmliche Festplatten).
dd if=backup_mbrgrub_2048.img of=/dev/sda bs=512 count=2048 = die ersten 2048 Sektoren (MBR inkl. Partitionstabelle & GRUB) rĂŒcksichern (meist VMs und SSDs).

Im Anschluss sollte man zusÀtzlich die logischen Partitionstabellen sichern (entweder MBR oder GPT).
 2. MBR-Partitionstabellen (Master-Boot-Record-Partition-Table) anzeigen und sichern (DatentrĂ€ger bis maximal 2 TB):
sfdisk kann nicht mit GPT-Partitionen und großen Partitionen (grĂ¶ĂŸer 2 TB) umgehen.
sfdisk verwendet man daher fĂŒr die meist kleineren herkömmlichen Festplatten (DatentrĂ€ger).
Anzeigen:
sfdisk -l /dev/sda = MBR-Partitionstabelle (MPT) anzeigen / Partitionen anzeigen.
Sichern:
sfdisk -d /dev/sda > backup_sda.mpt = MBR-Partitionstabelle von der ersten Festplatte (sda) sichern.
RĂŒcksichern:
swapoff -a = (swapping deaktivieren) es kann sonst passieren das, das Live-System die swap-Partition verwendet und so ein RĂŒcksichern verhindert.
sfdisk /dev/sda < backup_sda.mpt = die MBR-Partitionstabelle zurĂŒcksichern.

 2. GPT-Partitionstabellen (GUID-Partition-Table) anzeigen und sichern (neue DatentrĂ€ger gemĂ€ĂŸ der EFI-Spezifikation - insbesondere alle DatentrĂ€ger ĂŒber 2 TB):
Auf GPT-DatentrĂ€gern wird aus KompatibilitĂ€tsgrĂŒnden ein sogenannter Schutz-MBR verwendet.
Dieser sorgt dafĂŒr, dass Betriebssysteme bzw. Programme, die noch nicht mit GPT zurechtkommen, statt eines leeren DatentrĂ€gers eine einzige Partition sehen, die ĂŒber den ganzen DatentrĂ€ger geht.
Will man von einem GPT-DatentrĂ€ger starten, so benötigt man in der Regel Hardware die (Unified Extensible Firmware Interface) UEFI unterstĂŒtzt.
Anzeigen:
sgdisk -p /dev/sda = GPT-Partitionen des DatentrÀges anzeigen / Partitions-Informationen anzeigen. ErhÀlt man hier eine Ausgabe [... Found invalid GPT and valid MBR ...], so bedeutet dies dass hier keine GPT-Informationen gespeichert sind.
Sichern:
sgdisk -b backup_sda.gpt /dev/sda = (backup) Partitionstabelle sichern.
RĂŒcksichern:
sgdisk -l backup_sda.gpt /dev/sda = (load backup) Partitionstabelle wieder herstellen (dies sollte man nur auf demselben DatentrĂ€ger ausfĂŒhren).

25.

 GRUB 2 von einem Live System aus reparieren / MBR wieder herstellen (Ubuntu):


Diese Anleitung bezieht sich auf einfache Standard Desktop Systeme bei denen der MBR (Bootsektor/Bootloader) nach einer Windows-Installation ĂŒberschrieben wurde.
Behandelt wird hier nur die Ubuntu-Version von GRUB 2 (ab Version 1.99 oder neuer).
Um Problemen aus dem Weg zu gehen sollte man bevorzugt das gleiche Installationsmedium bzw. eine möglichst gleiche Version verwenden.
 root-directory-Methode:
Wichtig: Die verwendetet Live-CD muss die gleiche GRUB 2 Version verwenden.

mount /dev/sda1 /mnt # mounten der Linux root-Partition (sda1 entsprechend anpassen).
mount /dev/sdxBOOT /mnt/boot # Falls man eine extra boot-Partition verwendet, so muss man diese vorab einhÀngen (mounten).
mount /dev/sdxUEFI /mnt/boot/efi # Falls man eine UEFI-Partition verwendet, so muss man diese vorab eingehÀngen (mounten).
grub-install --root-directory=/mnt /dev/sda # Neuen GRUB 2 Bootsektor (MBR) schreiben.
 chroot-Methode:
Wichtig: Die verwendete Live-CD muss der gleichen Architektur entsprechen (also 32-Bit oder 64-Bit beachten).

mount /dev/sda1 /mnt # mounten der Linux root-Partition (sda1 entsprechend anpassen).
mount /dev/sdxBOOT /mnt/boot # Falls man eine extra boot-Partition verwendet, so muss man diese vorab einhÀngen (mounten).
mount /dev/sdxUEFI /mnt/boot/efi # Falls man eine UEFI-Partition verwendet, so muss man diese vorab eingehÀngen (mounten).
mount -o bind /dev/ /mnt/dev # Umgebung vorbereiten.
mount -o bind /sys/ /mnt/sys # Umgebung vorbereiten.
mount -t proc /proc/ /mnt/proc # Umgebung vorbereiten.
chroot /mnt # Wechseln der Umgebung.
grub-install /dev/sda # Neuen GRUB 2 Bootsektor (MBR) schreiben.

WeiterfĂŒhrende Links fĂŒr andere Systeme (z. B. RAID-Systeme):
GRUB 2 (ab 1.99 und neuer), Super Grub Disk

26.

Problemlösung: horizontal doppelt/gespiegelt/gesplittete Darstellung ab 800x600 Pixeln unter VMWare ESXi beheben:


In Virtuellen Umgebungen (VMs) z. B. unter VMWare ESXi kann es passieren das der Bildschirminhalt ab einer Auflösung von 800x600 Pixeln, horizontal doppelt/gespiegelt/gesplittet - also mit Darstellungsfehlern angezeigt wird.
Der Fehler kann auch erst nach einem Update auftreten, wenn der Kernel aktualisiert wurde.
Bei mir trat der Fehler unter anderem unter Ubuntu 12.04 und Ubuntu 14.04 auf.

Es gibt hierbei zwei Lösungsmöglichkeiten:
1. Zuerst aktualisiert man die Virtualisierungssoftware also z. B. VMWare ESXi selbst.
Danach aktualisiert man die Hardware-Version der Virtuellen Maschine auf mindestens 10.

2. Sollte dies nicht möglich sein, da man die Virtuelle Umgebung nicht so einfach upgraden kann,
so muss in der installierten Ubuntu Version folgende Änderungen vorgenommen werden:

sudo gedit /etc/modprobe.d/vmwgfx-fbdev.conf
Hier dann den Wert:
vmwgfx enable_fbdev=1
Ă€ndern auf:
vmwgfx enable_fbdev=0

Danach noch folgenden Befehl ausfĂŒhren (Treiber fĂŒr den Systemstart neu aufbauen):
sudo update-initramfs -u

und einen Neustart durchfĂŒhren:
sudo reboot

Screenshot mit Lösungsweg (anklicken zum VergrĂ¶ĂŸern):
ESXi 800x600 doppelter Bildschirm Lösungsweg (anklicken zum VergrĂ¶ĂŸern).

27.

VirtualBox VMs per Batchscript (cmd) starten und beenden:


Batchscript zum Starten von mehreren VMs (unter Windows):
start "ServerVM1" cmd /S /C ""C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm headless "ServerVM1" --type headless"
start "ServerVM2" cmd /S /C ""C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm headless "ServerVM2""

Gibt man den Parameter [--type headless] mit an, so startet die VM komplett im Hintergrund.
Die doppelten AnfĂŒhrungszeichen [""] muss man so eingeben.

Zum sauberen beenden von VMs sollte man die [Ausschalten per ACPI] Funktion verwenden.
Das System fÀhrt dann beim BetÀtigen des Ein-/Ausschalters (powerbutton) immer sauber herunter.
Die ACPI Funktion muss man unter Linux noch entsprechend anpassen.
In der Datei:
nano /etc/acpi/powerbtn.sh
# fĂŒgt man am Anfang folgendes ein:
shutdown -P now # bei Ubuntu.
shutdown -h now # bei Debian.

Anschließend kann man die VMs mit folgendem Batchscript beenden (Windows):
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" controlvm "ServerVM1" acpipowerbutton
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" controlvm "ServerVM2" acpipowerbutton

28.

Datenrettung/Undelete (tsk_recover):


Das Forensik-Toolkit Sleuthkit (die SpĂŒrhund-SchnĂŒfflel-Tools) installieren:
apt get install sleuthkit

ZunÀchst am besten ein Image des zu untersuchenden Laufwerks erstellen:
dd if=/dev/sdX of=sdX_image status=progress bs=1M

Danach den Offset (den Beginn der verschiedenen Partitionen) ermitteln:
mmls sdX_image

Man erhÀlt hier eine Ausgabe der Partitionen (hier ein Beispiel einer SD Karte):
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors

      Slot      Start        End          Length       Description
000:  Meta      0000000000   0000000000   0000000001   Primary Table (#0)
001:  -------   0000000000   0000008191   0000008192   Unallocated
002:  000:000   0000008192   0015122431   0015114240   Win95 FAT32 (0x0b)

Die eigentliche Wiederherstellung startet man dann mittels:
tsk_recover -ev -o 8192 sdX_image /Ausgabepfad/

ParametererklÀrung:
[-ev] 'e' alle Dateien wiederherstellen, 'v' (verbose) einen Verlauf anzeigen.
[-o 8192] ist die Offsetangabe, welche man entsprechend der Partitionen selbst anpassen muss.
[/Ausgabepfad/] bestimmt wo die restaurierten Daten gesichert werden. Der Ausgabepfad sollte logischerweise nicht auf das zu untersuchende/zu rettende Dateisystem verweisen.

29.

Datenrettung mit photorec:


photorec stellt von intakten und beschÀdigten Dateisystemen (auch von Images) mehr als 180 Dateiformate wieder her.
Es werden also nicht nur Fotos, sondern auch Office-, Musik-, Archiv-Dateien uvm. wiederhergestellt.

photorec installieren:
apt install testdisk

Wichtig:

Gefundene Dateien werden in dem Verzeichnis gespeichert aus welchem das Programm gestartet wurde.
Man muss daher zuerst auf die Festplatte oder Freigabe wechseln wo man die wiederhergestellten Bilder speichern möchte.

photorec ausfĂŒhren:
photorec dd_image_oder_/dev/sdx

Es erscheint draufhin ein TextmenĂŒ, wo man Quell und Zielangaben sowie verschiedene Suchdetails festlegen kann.
Den eigentlichen Suchlauf startet man dann mittels der Taste c.

30.

Datenrettung mit foremost:


foremost stellt verschiedene Dateitypen her. Weitere neue such Typen (Suchmuster) kann man manuell hinzufĂŒgen.

foremost installieren:
apt install foremost

Wichtig:
Gefundene Dateien werden in dem Verzeichnis gespeichert aus welchem das Programm gestartet wurde.
Man muss daher zuerst auf die Festplatte oder Freigabe wechseln wo man die wiederhergestellten Bilder speichern möchte.
Das Zielverzeichnis muss leer sein.

Suchlauf starten:
foremost -t all -v dd_image_oder_/dev/sdx

31.

Paketquellen/Repositories hinzufĂŒgen (main universe restricted multiverse):


Paketquellen (Repositories) sind eine Art Programm-Archiv-Sammlung, diese enthalten also eine Vielzahl von verschiedensten Programmen (Pakete) wie z. B. Treiber, Programme, Bibliotheken, Grafiken, Quellcode, Themes uvm.
Installiert man einen neuen Ubuntu Server ab der Version 18.04, dann ist neuerdings nur noch die 'main' Paketquellen aktiv.
Will man nun Programme aus anderen Paketquellen installieren, dann muss man diese zuerst dem System hinzufĂŒgen.

StandardmĂ€ĂŸig sind in Ubuntu die folgenden 4 Paketquellen/Repositories verfĂŒgbar:
main       = enthĂ€lt freie und open-source Software (Support durch Canonical).
universe   = enthĂ€lt freie und open-source Software (Support durch die Community).
restricted = enthĂ€lt unter anderem proprietĂ€re Treiber fĂŒr Hardware.
multiverse = enthĂ€lt Software die durch ein Copyright geschĂŒtzt ist.

Live-Medien (DVDs) verwenden dabei die Paketquellen 'main' und 'restricted'.
'restricted' wird dabei insbesondere verwendet, um verschiedene Hardware Treiber wie Netzwerk- oder Hardware-RAID Treiber im Live-System zu aktivieren. So das man im Live-System auf alle Daten/Systeme/Netzwerke zugreifen kann.
Zu beachten ist das 'restricted' nur wÀhrend der Live-Instanz aktiv ist. Nach einer Installation aus einem Live-System heraus wird 'restricted' nicht wieder automatisch aktiviert.

Paketquellen fĂŒgt man wie folgt zu:
add-apt-repository main universe restricted multiverse
Wichtig: Man sollte hier möglichst nur die Paketquelle/n hinzufĂŒgen die man tatsĂ€chlich benötigt.
Fremde/fehlerhafte Paketquellen können ggf. das System beschÀdigen.
Daher gilt: Je weniger Paketquellen man verwendet, umso stabiler lĂ€uft ein System (weniger AbhĂ€ngigkeiten/weniger Fehler).

Meist dĂŒrfte die 'universe' Paketquelle fehlen (fĂŒr Copy & Paste):
add-apt-repository universe

In Àlteren Ubuntu Versionen muss man hier noch den kompletten Pfad zur Paketquelle mit angeben:
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) main universe restricted multiverse"

Fremde/Partner Paketlisten werden wie folgt hinzugefĂŒgt:
sudo add-apt-repository "deb http://archive.canonical.com/ubuntu $(lsb_release -sc) partner"
Bei fremden/eignen Adressen muss der Link entsprechend angepasst werden.

Beachtet auch folgendes: [lsb_release -sc] ermittelt wĂ€hrend der Laufzeit den zum aktuellen Release vergebenen Namen (z. B. 'bionic' bei Ubuntu 18.04).
Statt '$(lsb_release -sc)' kann man also auch den aktuellen Release-Namen verwenden, in dem Beispiel 'bionic'.

Nachdem man die Paketquellen aktualisiert hat, muss man diese ggf. noch einmal aktualisieren (teilweise geschieht das auch automatisch - dies ist VersionsabhÀngig):
apt-get update
Erst dann kann man Pakete aus den neu hinzugefĂŒgten Paketquellen installieren.

Man kann die Paketliste wie folgt editieren:
nano /etc/apt/sources.list
Nicht mehr benötigte Paketquellen kann man durch auskommentieren der Zeilen mit einem Rautezeichen '#' deaktivieren.
Oder man entfernt nur die nicht mehr benötigten Paketquellen Namen wie z. B. main, universe, restricted, multiverse aus den vorhandenen Zeilen.
Wichtig: Beachtet dabei, das man Programme die man ĂŒber eine deaktivierte Paketquelle installiert hat nicht mehr aktualisieren kann!
Das kann dann auch schnell zu einem Sicherheitsproblem fĂŒhren. Man sollte daher vom Anfang an, nur die Paketquellen aktivieren, welche man wirklich benötigt.
Paketquellen im Nachhinein zu deaktivieren bringt meiner Meinung nach auf lange Sicht hin eher nur Fehler. Ich persönlich rate jedem von einer Deaktivierung ab.

WeiterfĂŒhrende Informationen findet man hier: help.ubuntu.com/community/Repositories/Ubuntu/

32.

FSlint (filesystem lint):


FSlint [GitHub] dient zum AufrÀumen der Festplatte.
FSlint bietet hierzu viele Funktionen an. Hier soll es jedoch hauptsĂ€chlich darum gehen grĂ¶ĂŸere Datenarchiv-Sammlungen (Fotos/Musik/ISOs usw.) zu bereinigen.
Vermutlich kennt jeder das Problem: Oft legt man schnell mal eine lokale Sicherheitskopie einer Datei an oder man sucht man ein paar Bilder zum Ausdrucken heraus. Oft vergisst man dann diese doppelten Kopien wieder zu löschen.
Diese doppelten Dateien kann man nun mittels FSlint suchen und löschen.

Eine bessere Alternative Variante ist duff (meine Empfehlung).

wichtige Hinweise vorab:
Allgemein gilt fĂŒr FSlint immer: Hardlinks werden wie normale Dateien behandelt, also mit gelöscht wenn sie doppelt vorkommen (bis auf eine). Softlinks bleiben alle erhalten.
FSlint legt im Ordner '/usr/share/fslint/fslint/' mehrere Scripte (Python) ab, daher ist zum Aufruf immer der komplette Pfad zum Programm/Script nötig.
Insbesondere wenn man schon Phython einsetzt sollte man sich FSlint ansehen.
Bis Version 2.44 werden leere Dateien nicht mit berĂŒcksichtig.
Ab der Version 2.46 werden leere Dateien (mit der DateigrĂ¶ĂŸe 0) wieder mit berĂŒcksichtig, das Verhalten ist ab der Version 2.46 mit dem Parameter: [-size +0c] anpassbar.

FSlint installieren:
apt install fslint

FSlint hat auch eine GUI (grafische OberflĂ€che). Diese startet man entweder ĂŒber das entsprechende Icon im StartmenĂŒ oder mittels:
fslint-gui
Wichtig: Das Terminal Fenster erst schließen wenn alles erledigt ist.
Vorsicht: Man kann hier auch alle Dateien löschen, so dass kein Original ĂŒbrig bleibt! Ich wĂŒrde daher von der grafischen OberflĂ€che eher abraten.
Insbesondere wenn man viele doppelte Dateien bereinigen will sollte man die folgenden Aufrufe verwenden.

/usr/share/fslint/fslint/findup -h
= Die Hilfe anzeigen.
/usr/share/fslint/fslint/findup -v
= Die installierte Version anzeigen (unter Ubuntu 18.10 wird derzeit FSlint 2.44 installiert). Eine neuere Version ist ggf. hier verfĂŒgbar.

nur scannen (hier wird nichts verÀndert):
/usr/share/fslint/fslint/findup /Pfad /Pfad2
= Scannt die angegebenen ordner, auch rekursiv, nach doppelten Dateien (beliebig viele Pfade sind möglich, ohne Pfadangabe wird das aktuelle Verzeichnis gescannt).
/usr/share/fslint/fslint/findup -r /Pfad = Scannt nur im angegebenen Ordner nach doppelten Dateien, die rekursive Suche wird verhindert (-r = no subdirectory).
/usr/share/fslint/fslint/findup --summary /Pfad
= Scannt den angegebenen ordner, auch rekursiv nach doppelten Dateien und ermittelt grob den möglicherweise eingesparten Speicherplatz (summary). Der Parameter -summary kann nicht mit -d oder -m kombiniert werden.
/usr/share/fslint/fslint/findup -d -t /Pfad
= Scannt den angegebenen ordner, auch rekursiv und zeigt an was gelöscht werden wĂŒrde (delete test).

doppelte Dateien löschen:
/usr/share/fslint/fslint/findup -d /Pfad
= Sucht alle doppelten Dateien im angegebenen Ordner, auch rekursiv und löscht diese ohne jegliche RĂŒckfrage (delete).
WÀhrend des löschens erhÀlt man keine Statusanzeige.

doppelte Dateien als Hardlink verlinken (nur innerhalb derselben Partition möglich/weniger empfohlen):
/usr/share/fslint/fslint/findup -m -t /Pfad
= Scannt den angegebenen ordner, auch rekursiv und zeigt an welche Dateien mit einem Hardlink verlinkt versehen wĂŒrde (merge hardlink test).
/usr/share/fslint/fslint/findup -m /Pfad
= Scannt den angegebenen ordner, auch rekursiv und erzeugt zu doppelten Dateien Hardlinks (merge hardlink).
WÀhrend des verlinkens erhÀlt man keine Statusanzeige.

fehlerhafte symbolische Links finden (z. B. Links die ins Leere laufen):
/usr/share/fslint/fslint/findbl /Pfad
= Listet fehlerhafte Softlinks auf (bad links). Zum Beispiel Links die auf gelöschte Dateien/nicht mehr existierende Dateien verweisen.

optionaler Parameter:
[-f] = Zu den gefundenen Dateien wird der relative Pfad (ab dem Suchpfad) mit ausgegeben.

33.

duff (DUplicate File Finder):


duff [GitHub] sucht doppelte Dateien.

Auf Grund des anpassbaren Hash-Algorithmus und der vielseitigen Parameter ist duff derzeit mein Favorit zum Bereinigen doppelter Dateien. Die Version 0.5.2 ist seit dem 29. Januar 2012 stable (fehlerfrei).

Allgemein gilt fĂŒr duff immer:
Hardlinks werden StandardmĂ€ĂŸig wie normale Dateien behandelt, also mit gelöscht (bis auf eine Datei) wenn sie doppelt vorkommen (zum Ändern des Verhaltens siehe Parameter '-p' unten).
Symbolischen Links (Softlinks) wird grundsÀtzlich niemals gefolgt, diese bleiben immer alle erhalten.
WĂ€hrend eines Suchlaufes nach doppelten Dateien sollte man keine Dateien verĂ€ndern oder öffnen (vorab möglichst alle Programme schließen).

duff installieren:
apt install duff

schnelle Variante mit SHA256 PrĂŒfsumme zum Auflisten und löschen von doppelten Dateien:
duff -arzdsha256 '/Pfad' '/Pfad2'
= Alle doppelten Dateien mit der SHA256 PrĂŒfsumme gruppiert ausgeben (gekĂŒrzte Version). Mehrere Pfade sind immer möglich.
duff -0arzd  sha256 '/Pfad' | xargs -0r -n1 echo
= Alle doppelten Dateien mit der SHA256 PrĂŒfsumme gruppiert ausgeben.
duff -0arzed sha256 '/Pfad' | xargs -0r -n1 echo
= Nur die zu löschenden doppelten Dateien ausgeben (dies ist kein löschen).
duff -0arzed sha256 '/Pfad' | xargs -0r rm -fv
= Löscht alle doppelten Dateien (bis auf eine).

Vorsicht: Man darf niemals zweimal denselben Pfad angeben, denn es werden sonst ggf. auch einzelne Dateien gelöscht (da diese dann zweimal gefunden werden).
Wichtig: Die Hockkomma (') um die Pfadangaben sind notwendig wenn der Pfadname Leerzeichen enthÀlt, man sollte diese daher immer mit angeben.

wichtiger Hinweis:
Beim Löschen mit der schnellen Variante von doppelten Dateien wird die Datei die zuerst gefunden wird behalten. Die Reihenfolge des Namens, des Directorys oder die Zeit der letzten Änderung usw. wird hier nicht berĂŒcksichtigt.
Besser ist es daher eine der folgenden Varianten zu verwenden, da hier alle Dateien vor der Weiterverarbeitung erst sortiert werden.

Man kann duff auch mit einem Datenstrom ĂŒber die Standardeingabe/Standardausgabe verwenden und so vorab verschiedene Filter definieren - mit Sortierung:
find '/Pfad' -type f -print0 | sort -z |
duff -0 -a -r -z -d sha256    | xargs -0r -n1 echo
| tee doppelte_Dateien.txt
= Zeigt alle doppelte Dateien gruppiert an.
find '/Pfad' -type f -print0 | sort -z |
duff -0 -a -r -z -d sha256 -e | xargs -0r -n1 echo

= Nur die zu löschenden doppelten Dateien ausgeben (dies ist kein löschen).
find '/Pfad' -type f -print0 | sort -z |
duff -0 -a -r -z -d sha256 -e | xargs -0r rm -fv

= Löscht alle doppelten Dateien (bis auf eine).

ParametererklÀrungen:
[find] = Sucht im angegebenen Pfad (mehrere sind möglich) rekursiv alle Dateien.
[-type f] = Filtert nur nach Dateien (unter anderem werden hier Verzeichnisse ĂŒbersprungen).
[-print0] = HĂ€ngt am Ende immer ein Nullbyte an den gefundenen Dateinamen an, dies ist notwendig, um Dateinamen mit Leerzeichen oder Sonderzeichen korrekt voneinander zu trennen.
[sort -z] = Sortiert die gefundenen Dateinamen von 0-9 und von a-Z (aufsteigend), bevor sie weiter verarbeitet werden. Am Ende wird wieder ein Nullbyte (-z = zero) angehÀngt.
[|] ĂŒber die Pipe werden die gefundenen Dateinamen erst an duff ĂŒbergeben, duff Filtert die doppelten Dateien entsprechend und ĂŒbergibt die gefilterten Dateinamen erneut ĂŒber die Pipe [|] an den nachfolgenden Befehl.
[duff] = Sucht die doppelten Dateien unter BerĂŒcksichtigung der nachfolgenden Parameter heraus.
[-0] = Trennt den Datenstrom von der Standardeingabe immer am Nullbyte.
[-a] = Dabei werden alle versteckte Dateien und alle versteckten Verzeichnisse mit berĂŒcksichtigt, ohne dem Parameter werden versteckte ĂŒbersprungen.
[-r] = Sucht auch rekusiv in allen Unterverzeichnissen, ohne dem Parameter wird nur das aktuelle Verzeichnis ĂŒberprĂŒft.
[-z] = Leere Dateien (mit der DateigrĂ¶ĂŸe 0) ignorieren, ohne diesem Parameter bleibt eine leere Datei bestehen.
Mehrere leere Dateien löscht man mit find.
[-d sha256] = Bestimmt den Hash-Algorithmus. Möglich ist: sha1, sha256, sha384 oder sha512, ohne dem Parameter wird StandardmĂ€ĂŸig sha1 verwendet.
Da SHA1 bereits seit 2005 nicht mehr 100% sicher ist sollte man hier mindestens SHA256 einsetzen.

Um den Hash-Algorithmus zu testen, kann man die folgenden 2 Dateien verwenden: Link1, Link2 (empfohlen).
Beachtet hier vor allem, die 2 Dateien haben einen unterschiedlichen Inhalt, aber die gleiche SHA-1 PrĂŒfsumme.
Weitere Informaionen dazu sind hier zu finden: shattered.it, Secure Hash Algorithm, Kollisionsangriff.

[-e] = (excess mode) Löscht alle doppelten Dateien (bis auf eine).
[xargs -0r -n1] = Trennt den Datenstrom von der Standardeingabe am Nullbyte (-0) und fĂŒgt einen Zeilenumbruch (-n1) ein.
Der nachfolgende Befehl wird nur dann ausgefĂŒhrt, wenn Daten von der Standardeingabe
kommen (-r = --no-run-on-empty). Die ermittelten Dateinamen werden dann an den nachfolgenden Befehl ĂŒbergeben.
[echo] = Gibt dann den entsprechenden Datenstrom (die Namen und Pfade zu den doppelten Dateien) aus.
[rm -fv] = Löscht die Dateien ohne RĂŒckfrage
(-f = force) ggf. nicht löschbare Dateien ĂŒberspringen (z. B. bei Dateien mit unzureichender Berechtigung) und
(-v = verbose) anzeigen was gelöscht wird.
[tee doppelte_Dateien.txt] = Gibt die Namen und Pfade der doppelten Dateien auf dem Bildschirm (der Standardausgabe) aus. ZusĂ€tzlich wird die Ausgabe in die Datei: 'doppelte_Dateien.txt' umgeleitet. Diese Datei kann man dann zum PrĂŒfen verwenden ob alles richtig ist.
Beachtet dabei folgendes, die erste Datei einer Gruppe bleibt bei einem spĂ€teren löschen immer ĂŒbrig (tee ist optional).

Die eben beschriebenen Befehle kann man noch einkĂŒrzen (beachtet dazu die folgenden Beispiele).

fĂŒr die praktische Nutzung empfohlene Variante -
ĂŒbergeordnete Ordner 📁
fĂŒr Downloads und Kopien 💿 und Ă€hnliches:

#!/bin/bash = Bei Bedarf als bash Script kennzeichnen.
find '/Pfad' -type f -print0|sort -z|
duff -0arzdsha256 |xargs -0rn1 echo
|tee doppelte_Dateien.txt
= Zeigt alle doppelte Dateien gruppiert an (die erste Datei bleibt erhalten).
find '/Pfad' -type f -print0|sort -z|
duff -0arzedsha256|xargs -0rn1 echo

= Nur die zu löschenden doppelten Dateien ausgeben (dies ist kein löschen).
find '/Pfad' -type f -print0|sort -z|
duff -0arzedsha256|xargs -0r rm -fv

= Löscht alle doppelten Dateien (bis auf eine).

Bei dieser Variante wird die Dateien die am höchsten liegt behalten (im ĂŒbergeordneten Verzeichnis).
Diese Variante wird empfohlen wenn man z. B. doppelte Downloads oder Kopien bereinigen will, z. B. wĂŒrde von 'Bild.jpg' und 'Bild (1).jpg' - 'Bild.jpg' ĂŒbrig bleiben.

Hier noch ein Beispiel fĂŒr 'sort -z' (aufsteigend sortiert):
...
/Downloads/Bild.jpg                       <- Diese ĂŒbergeordnete Datei wird behalten.
/Downloads/Bild (1).jpg                   <- Diese Kopie der Datei wird gelöscht.
/Downloads/ausgesuchte-Bilder/Bild.jpg    <- Diese untergeordnete Kopie der Datei wird gelöscht.
...
/Dokumente/Rechnung.pdf                   <- Diese ĂŒbergeordnete Datei wird behalten.
/Dokumente/Rechnung.pdf.KOPIE             <- Diese Kopie der Datei wird gelöscht.
/Dokumente/Telefonrechnungen/Rechnung.pdf <- Diese untergeordnete Kopie der Datei wird gelöscht.
...


fĂŒr die praktische Nutzung empfohlene Variante -
untergeordnete Ordner 📁
fĂŒr sortierte Fotos, MP3s đŸŽč und vergleichbare Mediensammlungen:

#!/bin/bash = Bei Bedarf als bash Script kennzeichnen.
find '/Pfad' -type f -print0|sort -zr|
duff -0arzdsha256 |xargs -0rn1 echo
|tee doppelte_Dateien.txt
= Zeigt alle doppelte Dateien gruppiert an (die erste Datei bleibt erhalten).
find '/Pfad' -type f -print0|sort -zr|
duff -0arzedsha256|xargs -0rn1 echo

= Nur die zu löschenden doppelten Dateien ausgeben (dies ist kein löschen).
find '/Pfad' -type f -print0|sort -zr|
duff -0arzedsha256|xargs -0r rm -fv

= Löscht alle doppelten Dateien (bis auf eine).

Bei dieser Variante wird die Dateien die am tiefsten liegt behalten (im untergeordneten Verzeichnis).
'sort -zr' sortiert die gefundenen Dateien absteigend (-r = rekursiv) von Z-a und von 9-0, bevor sie weiter verarbeitet werden. Am Ende wird wieder ein Nullbyte (-z = zero) angehÀngt.
Diese Variante wird empfohlen wenn man z. B. ein Bilderarchiv hat und ausgesuchte Bilder in einem Unterordner gespeichert hat.
Hat man z. B. die Dateien '/ausgesuchte_Bilder/Bild.jpg' und '/Bild.jpg', dann wĂŒrde das Bild im Unterordner '/ausgesuchte_Bilder/Bild.jpg' ĂŒbrig bleiben.

Hier noch ein Beispiel fĂŒr 'sort -zr' (rekursiv = absteigend sortiert):
...
/Downloads/Bild.jpg                       <- Diese Kopie der Datei wird gelöscht.
/Downloads/Bild (1).jpg                   <- Diese Kopie der Datei wird gelöscht.
/Downloads/ausgesuchte-Bilder/Bild.jpg    <- Diese untergeordnete Kopie der Datei wird behalten.
...
/Dokumente/Rechnung.pdf                   <- Diese Kopie der Datei wird gelöscht.
/Dokumente/Rechnung.pdf.KOPIE             <- Diese Kopie der Datei wird gelöscht.
/Dokumente/Telefonrechnungen/Rechnung.pdf <- Diese untergeordnete Kopie der Datei wird behalten.
...


die Suche mittels 'find' kann man noch beliebig erweitern hier noch ein paar Beispiele:
find '/Pfad' -type f -name ".mp3"      -print0|sort -zr|duff -0arzdsha256|xargs -0rn1 echo
= Sucht nur nach Dateien die exakt auf '.mp3' enden.
find '/Pfad' -type f -iname ".jp?g"    -print0|sort -zr|duff -0arzdsha256|xargs -0rn1 echo
= Sucht nur nach Dateien die auf '.jp?g' enden. Die die Groß- und Kleinschreibung wird dabei nicht berĂŒcksichtigt (findet also auch '.JPG', '.jpeg', '.Jpg').
find '/Pfad' -type d -name "Bilder"    -print0|sort -zr|duff -0arzdsha256|xargs -0rn1 echo
= Sucht nur in Verzeichnissen die exakt den Namen 'Bilder' tragen.
find '/Pfad' -type d -iname "*Bilder*" -print0|sort -zr|duff -0arzdsha256|xargs -0rn1 echo
= Sucht nur in Verzeichnissen die den Namen 'Bilder' enthalten. Die Groß- und Kleinschreibung wird dabei nicht berĂŒcksichtigt (findet also auch 'Urlaubsbilder').

Das alles waren nur Anregungen.
Auch eine Suche nach: DateigrĂ¶ĂŸe, Benutzernamen, Benutzerrechten, Dateialter, letzten Zugriffen bzw. Änderungen usw. kann man realisieren, mehr dazu findet man unter find.

ergĂ€nzende Parameter insbesondere fĂŒr Verlinkungen:
[-H] = Folgt nur symbolischen Links die man auch als Parameter mit ĂŒbergeben hat (nicht empfohlen).
[-L] = Folgt allen symbolischen Links - auf beliebige andere Verzeichnisse (nicht empfohlen).
Vorsicht: Die Verfolgung von symbolischen Links kann dazu fĂŒhren, dass eine einzelne Datei ggf. doppelt gefunden und gelöscht wird (wenn innerhalb des Suchpfades auf ein und dasselbe Verzeichnis verlinkt wurde).
[-P] = Symbolischen Links auf andere Verzeichnisse nicht folgen (hebt den Parameter '-H' und '-P' wieder auf). Die Angabe ist nicht notwendig, da dies die Standardeinstellung ist.
[-p] = Hardlinks auf Dateien innerhalb eines physischen Laufwerks (physical mode) werden nicht als doppelt erkannt. Alle Hardlinks dann bleiben bestehen (dies ist ggf. erwĂŒnscht).
[-t] = Dateien Byte-weise vergleichen, falls man kein Vertrauen in den Hash-Algorithmus hat (nicht empfohlen).

ergÀnzendes Beispiel zur Anpassung der Ausgabe beim Suchen von doppelten Dateien (optional):
duff /Pfad -a -r -d sha256 -f $'\nAnzahl der doppelten Dateien: %n\nDateigrĂ¶ĂŸe: %s\nHash: %d\nbelegte Cluster: %i'
Zusammenfassend anzeigen:
Wie oft kommen die einzelnen Dateien doppelt vor (%n = number),
wie groß ist eine einzelne Datei (%s = size),
die PrĂŒfsumme (%d = digest) der Datei (hier SHA256) und
wie viele Cluster belegt eine Datei (%i = cluster index).

34.

rdfind (redundant data find):


rdfind [GitHub] sucht doppelte Dateien.

rdfind installieren:
apt install rdfind

nach doppelten Dateien suchen:
rdfind /Pfad /Pfad2 -checksum sha1 -ignoreempty true = Scannt die angegebenen Ordner, auch rekursiv, nach doppelten Dateien.

doppelte Dateien Löschen:
rdfind -deleteduplicates true /Pfad = Alle doppelten Dateien löschen, Hardlinks bleiben bestehen (auch rekursiv).
rdfind -deleteduplicates true -removeidentinode false /Pfad = Alle doppelten Dateien und Hardlinks rekursiv löschen (auch rekursiv, empfohlen).

doppelte Dateien verlinken:
rdfind -makehardlinks true /Pfad = Alle doppelten Dateien als Hardlink anlegen (weniger empfohlen).
rdfind -makesymlinks true /Pfad = Alle doppelten Dateien als symbolischen Link verlinken (weniger empfohlen).
Hat man mehrere identische Dateien in ein und demselben Unterverzeichnis, so werden diese nur nach mehreren durchlÀufen mit verlinkt (hier ist ein Fehler/Bug).

ParametererklÀrungen:
[/Pfad /Pfad2] = beliebig viele Pfade sind möglich.
[-checksum sha1] = Verwendet zum ÜberprĂŒfen der Dateien den angegeben Hash-Algorithmus.
Folgende Standards sind möglich: md5 (Standard bis Version 1.3.5 - nicht mehr 100% sicher), sha1 (Standard ab Version 1.4, bedingt geeignet), sha256 (erst ab der Version 1.4 möglich/empfohlen).
[-ignoreempty true] = Leere Dateien (mit der DateigrĂ¶ĂŸe 0) werden weg gelassen.
[-followsymlinks true] = Folgt beim scannen symbolischen Links (nicht empfohlen).
Vorsicht: Dies kann dazu fĂŒhren das einzelne Dateien doppelt gefunden werden, wenn innerhalb des Suchpfades auf das selbe Verzeichnis nochmal verlinkt wurde.
[-deterministic false] = Sortierung ausschalten (unspezifiziert). Die zuletzt gefundene Datei bleibt bestehen (weniger empfohlen).
[-removeidentinode false] = Löscht Dateien mit dem selben inode Verweis (also Hardlinks). Es werden dann alle doppelten Dateien definitiv gelöscht.
Ohne dem Parameter bleiben Dateien mit Hardlinks bestehen.
Ohne dem Parameter werden also nur doppelte Dateien (Kopien) gelöscht, die nicht verlinkt sind.
Weitere Informationen zu Links findet ihr unter ln.
[-makeresultsfile false] = Keine Ergebnisdatei ausgeben. StandardmĂ€ĂŸig wird im ausfĂŒhrenden Verzeichnis die Datei 'results.txt' erstellt. Eine bereits bestehende Datei wird ĂŒberschrieben.
[-outputname /Pfad/Ergebnis.txt] = Hiermit kann man den Pfad und den Name zur Ergebnisdatei (Standard 'results.txt') verÀndern.
[-dryrun true] = Alle Änderungen werden nicht vorgenommen. Mögliche VerĂ€nderungen werden nur am Bildschirm angezeigt.
[-sleep 100ms] = Nach jeder Datei eine Pause von (0,1-5,10,25,50,100) Millisekunden, einlegen um die Systemlast zu minimieren (weniger empfohlen).

der folgende Parameter funktioniert erst ab der Version 1.4 (ab Ubuntu 19.04 Disco Dingo):
[-minsize X] = Scannt den angegebenen Ordner, auch rekursiv, nach doppelten Dateien, Dateien die kleiner als X Bytes sind werden ignoriert/ĂŒbersprungen. Der Standardwert 1, entspricht einer leeren Datei, den Wert kann man beliebig verĂ€ndern.

Man kann rdfind auch mit einem Datenstrom ĂŒber die Standardeingabe bzw. Standardausgabe verwenden und so verschiedene Filter definieren:
find /Pfad -type d -name  "Bilder"   -print0|xargs -0r rdfind = Sucht nur in Verzeichnissen die exakt den Namen 'Bilder' tragen.
find /Pfad -type d -iname "*Bilder*" -print0|xargs -0r rdfind = Sucht nur in Verzeichnissen die den Namen 'Bilder' enthalten, die Groß- und Kleinschreibung wird hier nicht berĂŒcksichtigt (findet also z. B. auch 'Urlaubsbilder').

Hinweis: Dieser Punkt befindet sich gerade im Aufbau!

Kurzreferenz:

Wichtige Linux Shell-Befehle und Programme von A-Z:


Hinweise vorab:
Linux unterscheidet bei Befehlen und Parametern die Groß- und Kleinschreibung.
Eine ausfĂŒhrliche Hilfe zu jedem Befehl erhĂ€lt man durch den Aufruf:
man Befehl
 addgroup:

Mit Hilfe von addgroup kann man neue Gruppen erstellen und Benutzer einer Gruppe hinzufĂŒgen.
addgroup neuer_Gruppenamen = Erzeugt eine neue Gruppe.
addgroup Benutzername Gruppenname = FĂŒgt den bestehenden Benutzer der Gruppe als neues Mitglied hinzu.
 adduser:

Mit Hilfe von adduser kann man neue User hinzufĂŒgen:
adduser neuer_Username = erstellt einen neuen Benutzer - dieser wird seiner eigenen Gruppe hinzugefĂŒgt.
adduser neuer_Username root = erstellt einen neuen Benutzer und fĂŒgt diesen der Gruppe root hinzu.
 alias:

Hiermit kann man sich fĂŒr hĂ€ufig verwendete Befehle einen eigenen kĂŒrzeren 'alias' definieren.
Aliase sind flĂŒchtig, werden also nach dem Verlassen der Shell automatisch gelöscht.
Möchte man diese dauerhaft festlegen, so speichert man diese einfach in der Datei [~/.bashrc] oder [~/.bash_aliases] ab.
alias ll='ls -laF' = einen neuen alias definieren. Hier z. B. fĂŒr ein ausfĂŒhrliches 'ls'.
alias cls='clear' = AbkĂŒrzung zum Bildschirm löschen wie bei Microsoft.
unalias ll = den alias wieder löschen.
 blkid (block device attributes):

Mit Hilfe von blkid kann man z. B. herausfinden welches Dateisystem (ext3, ext4, ntfs, ...) verwendet wird.
blkid versucht immer die aktuellen Daten abzufragen, die so ermittelten Daten werden in einem Cache abgespeichert.
blkid benötigt root-Rechte um aktuelle Daten anzuzeigen, ohne root-Reche erhÀlt man nur alte Daten aus dem Cache sofern diese vorliegen.
blkid = Anzeige von verschiedenen Dateisystemattributen (wie z. B. UUID, Dateisystemtyp, Festplattenlabel).
blkid -g = (garbage) Einen vorhandenen UUID-Informations-Cache löschen (dies ist bei Laufwerkswechsel empfohlen).
blkid -c /dev/null = Aktuelle Zuordnung der Laufwerke & UUIDs (universally unique identifier) anzeigen, ein ggf. vorhandener Cache wird ignoriert.
blkid -o list = Anzeige der Attribute in Listenform.
 cat (concatenate):

Mit dem Befehl kann man Dateien, u. À. anzeigen und Inhalte umleiten:
cat Datei1 = Den Inhalt der Datei1 in der Standardausgabe ausgeben, d.h. in der Regel auf dem Bildschirm anzeigen.
cat Datei1 > Datei2 = Kopiert den Inhalt der Datei1 in die Datei2, die Datei2 wird ggf. erstellt falls sie nicht vorhanden war.
cat Datei1 >> Datei2 = Der Inhalt der Datei1 wird an die Datei2 angehÀngt, die Datei2 wird ggf. erstellt falls sie nicht vorhanden war.

weitere Beispiele (Systeminfos ausgeben):
cat /proc/meminfo = Speicherverbrauch anzeigen.
cat /proc/version = Die installierte Kernelversion anzeigen.
cat /proc/cpuinfo = Zeigt Informationen zum verwendeten Prozessor an.
cat /etc/os-release = Zeigt sehr ausfĂŒhrlich an welche Ubuntu/Debian Version installiert ist.
cat /etc/issue = Zeigt an welche Linux Version installiert ist.
cat /etc/lsb-release = Zeigt unter Ubuntu genaue Versionsdaten an.
cat /etc/debian-version = Zeigt Release Nummer der installierten Debian Version an.
cat /dev/zero >Muelldatei = fĂŒllt den ganzen freien Plattenspeicher mit Nullen auf (fĂŒr sicheres löschen).
cat /dev/urandom >Muelldatei = fĂŒllt den ganzen freien Plattenspeicher mit zufĂ€lligen Zeichen auf (sicheres löschen bei Flash-Medien wie z. B. SSD's).
 cd (change directory):

Dieser Befehl ermöglicht den Wechsel in ĂŒber- und untergeordnete Verzeichnisse/Ordner.
cd XYZ = Wechselt in das ĂŒbergeordnete Verzeichnis XYZ.
cd .. = Wechselt in das untergeordnete Verzeichnis.
cd / = Wechselt direkt in das root Verzeichnis.
cd ~ = Wechselt direkt ins eigene Home-Verzeichnis ('~/' ist der Pfad zum Homverzeichnis).
 chmod (change file mode bits):

Mit chmod Àndert man Zugriffsrechte von Dateien und Verzeichnissen (nur auf Unix-Dateisystemen möglich).
chmod 777 Datei = Vollzugriff fĂŒr alle also fĂŒr [den Besitzer], fĂŒr [Gruppen], sowie [alle anderen User] (Verzeichnisse werden analog behandelt).
chmod -R 644 /home/Projekt = Setzt die folgenden Berechtigungen rekursiv - also auch fĂŒr alle Dateien und Verzeichnisse im angegebenen Unterordner - der EigentĂŒmer darf [lesen & schreiben], alle anderen dĂŒrfen [nur lesen].
chmod +x Datei = Macht die Datei ausfĂŒhrbar (wird z. B. benötigt wenn man ein Shell-Script ausfĂŒhrbar zu machen möchte).

Die Berechtigungen werden unter anderem so dargestellt:
[-r--r--r--] = steht am Anfang nur ein [-] so kennzeichnet dies eine Datei.
[dr--r--r--] = (directory) ein kleines [d] an erster Stelle kennzeichnet ein Directory.
[lr--r--r--] = (directory) ein kleines [l] an erster Stelle kennzeichnet einen symbolischen Link (siehe Befehl ln).

Im anschließenden Block werden zuerst: EigentĂŒmerrechte des Besitzers (user), dann die Gruppenberechtigungen (group) und zuletzt die Berechtigungen fĂŒr alle anderen (world) vergeben.
[-rwxrw-r--] = User darf alles (4+2+1=7), Gruppe nur lesen & schreiben (4+2=6), alle anderen dĂŒrfen nur lesen (4).

chmod Berechnungen (die Werte jeweils addieren):
4 = lesen.
2 = schreiben
1 = ausfĂŒhren.
 chown (change owner):

Mit chown kann man [den EigentĂŒmer also den Besitzer] sowie [den EigentĂŒmer einer Gruppe] von Dateien und Verzeichnissen festlegen.
Die Berechtigungen kann man nur auf UNIX-Dateisystemen vergeben.
chown User1 Datei = Der User1 wird Besitzer der Datei (Verzeichnisse werden analog behandelt). Der User1 kann danach auf die Datei zugreifen (chmod beachten).

chown :Gruppe1 Datei = Ändert die Gruppenberechtigungen fĂŒr die Datei,
es können danach alle User die Mitglieder der Gruppe1 sind auf die Datei zugreifen (chmod beachten) (Verzeichnisse werden analog behandelt).

chown -R User1:Gruppe1 /home/User1/Projekt = Ändert die Besitzrechte wie folgt:
Besitzer aller Daten im angegeben Verzeichnis ist danach User1.
Die Gruppenberechtigung erhalten alle User die zu der Gruppe1 gehören. Die Berechtigungen werden dabei rekursiv ĂŒber alle Dateien und alle Verzeichnisse ab dem angegebenen Pfad [/home/User1/Projekt] vergeben.
 cp (copy):

Kopiert Dateien und Verzeichnisse.
cp -v ABC.txt XYZ.txt = (verbose) kopiert den Inhalt der Datei ABC.txt in die Datei XYZ.txt und zeigt dies ausfĂŒhrlich an.
cp -u Quelle Ziel = (update) kopiert nur neuere Dateien und noch nicht vorhandene Daten aus der Quelle ins Ziel.
cp -r /Quellverzeichnis/. /Zielverzeichnis/ = (rekursiv) kopiert das Quell-Verzeichnis ins angegebene Ziel-Verzeichnis, dabei werden alle Dateien & Unterordner mit kopiert.
cp -a /Quelle/. /Ziel/ = (archive rekursiv) kopiert das Quell-Verzeichnis ins angegebene Ziel-Verzeichnis, dabei werden alle Dateien & Unterordner mit kopiert. Hierbei werden Zeitstempel, Besitzrechte, Links usw. mit ĂŒbernommen. Wichtig: Auch den Punkt nach dem shlash so mit angeben (empfohlene Varainte).
 cut (ausschneiden):

cut extrahiert spaltenweise Ausschnitte aus Textzeilen. Die Ausgabe erfolgt ĂŒber die Standardausgabe, eine Umleitung ist möglich.
cut -d# -f2 Datei.txt
[-d#] Beschreibt das Trennzeichen hier [#]. Die Zeilen werden am Trennzeichen in Spalten zerlegt.
[-f2] Bestimmt welcher Spaltenteil ausgegeben werden soll hier im Beispiel die [2]. Spalte.
 date/hwclock/cal/ntpdate (Zeitangaben ausgeben und setzen):

date = Zeigt den Wochentag, das aktuelle Datum und die Uhrzeit (Systemzeit) an.
date +%Y-%m-%d = Gibt nur das aktuelle Datum aus.
date 042311302015 = Stellt Datum und Uhrzeit (11:30 Uhr, 23.04.2015).

cal = Gibt eine Kalenderanzeige aus - der aktuelle Tag wird hierbei hervorgehoben.

hwclock = Zum anzeigen und stellen der Hardware Uhr.

ntpdate de.pool.ntp.org # Benötigt das Paket [ntpdate] - dient zum Stellen der Uhr ĂŒber einen Zeitserver aus dem Internet.

Formatierungungsmöglichkeiten:
%M Minuten (00 bis 59)
%H Stunden im 24-Stunden-Format
%I Stunden im 12-Stunden-Format
%a Wochentag in Kurzform
%A Wochentag in Langform
%d Tag als zweistellige Ziffer
%b Monatsnamen in Kurzform
%B Monatsnamen in Langform
%m Monat als zweistellige Ziffer
%y Jahr als zweistellige Ziffer
%Y Jahr als vierstellige Ziffer
%D Datum vierstellig (mm/dd/yy)
%T Zeit im 24-Stunden-Format aus (hh:mm:ss)
%r Zeit im 12-Stunden-Format aus (hh:mm:ss)
%t Tabulator
%n Zeilenumbruch
%% %-Zeichen

Verwendungsmöglichkeiten:
tar -cvjf backup_$(date +%Y-%m-%d).tar.bz2 *
 dd (disk dump):

dd dient zum bit-genauen Kopieren von DatentrĂ€gern wie z. B. Festplatten oder Partitionen. Die DatentrĂ€ger werden dabei Bitweise (Byteweise) 1:1 ausgelesen und beschrieben.
Daher funktioniert dd grundsĂ€tzlich mit allen Dateisystemen auf die man zugreifen kann z. B. ext3, ext4, fat32, ntfs.
Wichtige Hinweise:
dd wird ohne RĂŒckfragen ausgefĂŒhrt, bei falschen Aufruf können Daten gelöscht werden.
Will man einen kompletten DatentrÀger sichern, so sollte dieser daher nicht gemountet sein.

Ein CD/DVD-Image erstellen (nur Daten-Medien):
dd if=/dev/cdrom of=/tmp/ImageName.iso = ein CD/DVD-Image erstellen.

Festplatten clonen:
dd if=/dev/sda of=/dev/sdb = kopiert den Inhalt der 1. Festplatte (sda) auf die 2. Festplatte (sdb).

Festplatten sicher löschen:
dd if=/dev/zero of=/dev/sda bs=65535 = Überschreibt die komplette 1. Festplatte mit '0' Nullen mit einem Schreibpuffer von 64kb.
dd if=/dev/urandom of=/dev/sda bs=32M = Überschreibt die 1. Festplatte mit zufĂ€lligen Zahlen mit einem Schreibpuffer von 32MB (fĂŒr SSD's).
ErklĂ€rung: urandom liefert Pseudozufallszahlen, random liefert echte Zufallszahlen, urandom ist schneller und fĂŒr den Zweck ausreichend.

Linux sichern (Komplettsicherung):
swapoff -a = (swapping deaktivieren) es kann sonst passieren das, das Live-System die swap-Partition verwendet und so ein Sichern/RĂŒcksichern verhindert.
dd if=/dev/sdb1 of=/temp/sdb1.img = Sichert die 1. Partition der 2. Festplatte in die Imagedatei sdb1.img im Temp Ordner (weniger empfohlen).
Die so erzeugte Image-Datei kann ĂŒber mount eingebunden & durchsucht werden (siehe mount unten).
Hinweis: Die Sicherung wird 1:1 so groß wie die zu sichernde Festplatte.

Komprimierte Sicherung & RĂŒcksicherung (empfohlen).
Hinweis: Beachten sollte man das gzip bzw. gunzip Berechtigungen auf die Sicherungspfade benötigt.
Hat man z. B. eine Netzwerk-Freigabe nur fĂŒr den User root ermöglicht, so muss die AusfĂŒhrung als root-User erfolgen!
Man sollte hier also kein sudo verwenden.
sudo passwd root = Das root-User-Passwort setzen (optional).
su = zum root-User wechseln.

Die 1. Partition der 1. Festplatte sichern und wiederherstellen:
Das Sicherungsimage kann man erst nach einem Entpackvorgang mounten & durchsuchen (falls man einzelne Dateien aus der Sicherung benötigt).
dd if=/dev/sda1 | gzip -9 > /Pfad/Sicherung_sda1.img.gz = Datensicherung der 1. Partition der 1. Festplatte.
gunzip -c /Pfad/Sicherung_sda1.img.gz | sudo dd of=/dev/sda1 = RĂŒcksicherung der Sicherung auf die 1. Partition der 1. Festplatte.

Die komplette 1. Festplatte sichern und wiederherstellen:
Das Sicherungsimage kann man erst nach einem Entpackvorgang mounten & durchsuchen.
Um die Partitionen einzeln zu Mounten ist es notwendig ein Offset mit zu ĂŒbergeben (falls man einzelne Dateien aus der Sicherung benötigt).
dd if=/dev/sda | gzip -9 > /Pfad/Sicherung_sda1.img.gz = Datensicherung der ganzen ersten Festplatte.
gunzip -c /Pfad/Sicherung_sda1.img.gz | sudo dd of=/dev/sda = RĂŒcksicherung der Sicherung auf die erste Festplatte.

Linux Live-DVD-Image auf USB-Stick kopieren (nur Hybrid-ISOs):
umount /dev/sdx = zuerst den UBS-Stick aushÀngen.
dd if=hybrid_iso_image.iso of=/dev/sdx bs=1M && sync = danach kann man das Kopieren wie folgt starten.
 delgroup:

Mit Hilfe von delgroup kann man eine Gruppe löschen und Benutzer aus einer Gruppe entfernen.
delgroup Gruppenname = Entfernt die angegebene Gruppe vom System. Hinweis: Die PrimÀre Gruppe eines Users kann nicht entfernt werden.
delgroup Benutzername Gruppenname = Entfernt den bestehenden Benutzer aus der angegeben Gruppe (er ist dann kein Mitglied mehr in dieser Gruppe).
 deluser:

Einen Benutzer löschen.
deluser Benutzername = Löscht nur den Benutzer. Daten im Homeverzeichnis bleiben erhalten.
deluser --remove-home Benutzername = Löscht den Benutzer einschließlich der Daten im Homeverzeichnis.
 df (disk free):

Zeigt dem belegten Speicherplatz von Speicherlaufwerken wie Festplatten, SSD, USB-Sticks usw. an.
df = Zeigt den belegten Speicherplatz in Bytes an.
df -h = (human readable) bedeutet das die Byteangaben in leichter lesbare Angaben wie in Kilobyte, Megabyte und ggf. Gigabyte umgerechnet werden.
 diff (difference):

Dieser Befehl ermöglicht den Vergleich zweier Dateien. diff gibt dabei diejenigen Zeilen aus, die in beiden Dateien unterschiedlich sind.
diff Datei1 Datei2
 dosfsck:

dosfsck [apt-get install dosfstools] prĂŒft und repariert MS-DOS Dateisysteme. Keine gemounteten Laufwerke prĂŒfen.
dosfsck -ar /dev/sdb1 = prĂŒfen und reparieren mit RĂŒckfragen.
 du (disk usage):

Gibt den auf der Festplatte tatsÀchlich verwendeten Platzverbrauch von Dateien an. Ausgehend von Böcken zu je 512 Byte/Sektor.
Ausgegangen wird immer vom entsprechenden Verzeichnis. Angezeigt werden immer rekursiv alle Verzeichnisse.
du -s = nur die gesamte Summe anzeigen.
du -a = (all) Die GrĂ¶ĂŸenangabe fĂŒr jede Datei einzeln ausgeben.
du -h = (human readable) bedeutet das die Byteangaben in leichter lesbare Angaben wie in Kilobyte, Megabyte und ggf. Gigabyte umgerechnet werden.
 e2fsck (ext filesystem check, chkdsk):

e2fsck ĂŒberprĂŒft die Konsistenz von Linux Dateisystemen (ext2, ext3, ext4) und ggf. auftretende Fehler reparieren.
e2fsck /dev/sda1 = ĂŒberprĂŒft den DatentrĂ€ger.
e2fsck /dev/sda1 -n = (no all answer) ĂŒberprĂŒft den DatentrĂ€ger (nur lese Modus).
 env (environment):

Dieser Befehl gibt die Umgebungsvariablen aus. Also zum Beispiel die Zeitzone, die gerade aktive Shell, den Loginnamen, Spracheinstellungen oder das verwendete Betriebssystem. Diese Infos benötigt man zum Teil fĂŒr CGI-Scripte.
env
 exit & logout:

Der Befehl dient zum Abmelden von Usern und zum Beenden von verschiedensten Diensten.
Die Befehle sind historisch gewachsen und erledigen in der Regel dasselbe.
exit
logout
Meist kann man hier auch die Tastenkombination Strg + D verwenden.
 fdisk:

fdisk -l = listet alle DatentrĂ€ger (wie z. B. Festplatten) und Partitionen auf.
 file:

file ermittelt den den Dateityp zu einer Datei (wenn dieser bekannt ist).
Bei Archiven wird ermittelt womit sie gepackt wurden.
Bei ausfĂŒhrbaren .exe Dateien wird angezeigt womit diese ggf. komprimiert bzw. erstellt wurden (z. B. UPX compressed, Nullsoft Installer).
Bei Text-Dateien wird das genaue Format bestimmt (z. B. ASCII, UTF-16 Unicode).
Bei Images wird der exakte Typ, die Auflösung, Farbtiefe usw. ausgegeben.
file erkennt noch mehr Dateitypen und Eigenschaften, die hier vorgestellten sind nur Beispielhaft.
file unbekannte_Datei = Den Dateityp der ĂŒbergebenen Datei abfragen und ausgeben.
file * = alle Dateien in einem Ordner abfragen.
 find:

find sucht standardmĂ€ĂŸig rekursiv in einer Verzeichnishierarchie nach Dateien (also auch in allen Unterordnern).
Wichtig: Die Angabe der AnfĂŒhrungszeichen ist notwendig um alle Dateien zu erhalten (Namen mit Leerzeichen und rekursive EintrĂ€ge werden sonst ggf. nicht mit erfasst).
find / -name "Datei" = Sucht ab dem Wurzelverzeichnis / alle Dateien mit dem Namen Datei.
find . -name "*.jpg" = Sucht ab dem aktuellen Verzeichnis markiert durch den . alle Bild Dateien mit der Endung Namen *.jpg.
find . -name "*.jpg" -exec file '{}' \; = Sucht im aktuellen Pfad alle .jpg Bild Dateien. Alle gefundenen Bilder werden hier nacheinander dem Programm file (ersetzbar durch beliebigen Befehl) ĂŒbergeben.
find /var/ -name "*.log" = Sucht ab dem angegebenen Pfad nach Logfiles (.log-Dateien). Man kann also die gewöhnlichen Joker verwenden.
find $HOME -type d "Verzeichnis" = Sucht ab dem Home-Verzeichnis des Users nur nach Verzeichnissen mit dem Namen Verzeichnis.
find ~/ -size +20M = Sucht alle Dateien ab dem Home-Verzeichnis die mindestens 20 MB groß sind.

find /Pfad -type f -empty -print = Sucht alle leeren Dateien (mit der DateigrĂ¶ĂŸe 0) ab dem angegebenen Pfad und gibt diese auf der Standardausgabe aus (file/print).
find /Pfad -type f -empty -delete = Sucht und löscht alle leeren Dateien (mit der DateigrĂ¶ĂŸe 0) ab dem angegebenen Pfad (file/delete).
Alternative Varainten: [find /Pfad -type f -size 0 -delete] oder [find /Pfad -type f -size 0 -print0 | xargs -0r rm].

find /Pfad -type d -empty -print = Sucht alle leeren Verzeichnisse ab dem angegebenen Pfad und gibt diese auf der Standardausgabe aus (directory/print).
find /Pfad -type d -empty -delete = Sucht und löscht alle leeren Verzeichnisse ab dem angegebenen Pfad (directory/delete).

komplexe find Varianten:
alle Dateien mit Hardlinks anzeigen:
find . -type f -links +1 -print0 | xargs -0r ls -i | sort -n = Alle Dateien mit Hardlinks sortiert ausgeben (auch rekursiv).
find . -maxdepth 1 -type f -links +1 -print0 | xargs -0r ls -i | sort -n = Alle Dateien mit Hardlinks sortiert ausgeben nur im aktuellen Verzeichnis).

ParametererklÀrungen:
[.] = ist der aktuelle Pfad, hier kann auch ein beliebiger anderer Pfad angegeben werden.
[-type f] = nur nach Dateien suchen. Man könnte hier auch [! -type d] (Negation) keine Verzeichnisse suchen einsetzen.
[-links +1] = sucht nach Dateien mit mehr als einem Hardlink (inode).
[-print0] = hÀngt an jeden gefundenen Eintrag ein Nullbyte, zur sauberen Trennung von Dateinamen mit Sonderzeichen ist dies wichtig.
[xargs -0r] = Trennt den Datenstrom von der Standardeingabe am Nullbyte (-0) und ĂŒbergibt diese EintrĂ€ge dem nachfolgenden Befehl. Sollten keine Hardlinks gefunden werden (-r = --no-run-on-empty), dann die nachfolgenden Befehle nicht ausfĂŒhren.
[ls -i] = Zeitgt die eindeutige inode Nummer zu der jeweiligen Datei an.
[sort -n] = Sortiert den Datenstrom nach den inode Zahlen (am Anfang) aufsteigend.
Alle Dateien die auf den selben inode Verweisen sind indentisch.

alle Dateien mit Hardlinks löschen:
find . -type f -links +1 -exec rm -rfv '{}' \; = Löscht alle Hardlinks im aktuellen Verzeichnis und in allen Unterverzeichnissen. Eine Datei bleibt bestehen.
find . -maxdepth 1 -type f -links +1 -exec rm -rfv '{}' \; = Löscht alle Hardlinks nur im aktuellen Verzeichnis. Eine Datei bleibt bestehen.
Beachtet hierbei aber, die bestehende Datei kann sich in einem beliebigen Pfad auf Partition befinden.
Es wird hier so lange gelöscht, solange noch ein weitereren Hardlink auf die entsprechende Datei vorhanden ist.

Im angegebenen Pfad alle .bmp Dateien in .png Dateien konvertieren (auch rekursiv). Benötigt ein installiertes ImageMagick:
apt update; apt install imagemagick
find /Pfad -type f -name "*.bmp" | while read img;
do echo "$img";
convert "$img" "${img%.bmp}.png";

rm "$img"; done

alle .bmp Dateien in .png Dateien konvertieren (Variante 2):
find "/Pfad" -type f -iname "*.bmp" | sed 's/\.[^.]*$/\L&/' | while read img;
do echo "$img";
convert "$img" "${img%.bmp}.png";

rm "$img"; done
[-iname "*.bmp"] = Sucht hier nicht nur nach *.bmp Dateien, sondern auch nach Dateien mit groß geschriebener Dateiendung (*.BMP, *.Bmp usw.).
[sed 's/\.[^.]*$/\L&/'] = Konvertiert hier die Endung in Kleinbuchstaben (\L = lower case).

Im angegebenen Pfad alle .png Dateien in .webp Dateien konvertieren (auch rekursiv). Benötigt ein installiertes cwebp. WebP ist das neue Bildformat, das besonders fĂŒr Webserver empfohlen wird:
apt update; apt install cwebp
find /Pfad -type f -name "*.png" | while read img;
do echo "$img";
cwebp "$img" -o "${img%.png}.webp -lossless";

rm "$img"; done
ParametererklÀrung:
[-lossless] = verlustfreie Komprimierung, empfohlen insbesondere fĂŒr .png Dateien, insbesondere fĂŒr flĂ€chige Logos.
[-near_lossless 100] = alternative verlustbehaftete Komprimierung (QualitÀtsangabe von 0-100/sehr empfehlenswert).
[-q 100] = alternative verlustbehaftete Komprimierung (QualitÀtsangabe von 0-100/weniger empfohlen).
[rm "$img"] = Vorsicht dieses löscht das Originalbild (optional).
Hinweis: Das Script kann auch verwendet werden um .jpg in .webp Dateien umzuwandeln (einfach .png durch .jpg ersetzen).

 for do done (for Schleife):

for ermöglicht das ausfĂŒhren von Befehlen innerhalb eines Schleifendurchlaufs.
In der Regel wird die Schleife so lange wiederholt bis alle Elemente/Objekte durchlaufen sind.
Mit dem Befehl break beendet man man eine SchleifenausfĂŒhrung.
Mit dem Befehl continue bricht man den aktuellen Durchlauf ab, die SchleifenausfĂŒhrung startet nochmal neu von Anfang an.
for Variable in Parameterliste; do Befehl; done = Beispielhafter Grundaufbau.
for img in *.png; do file "$img"; done = Alle .png Dateien im aktuellen Ordner suchen und in der Variable img speichern, do file (ein beliebiger Befehl) gibt hier Beispielsweise Details zur den gefundenen Bilddateien aus.
Wichtig: Die AnfĂŒhrungszeichen sind notwendig um Dateinamen mit Leerzeichen mit zu erfassen.
 free:

free -h = (human readable) Zeigt den Arbeitsspeicher/Ram-Verbrauch in einer leicht lesbaren Variante an.
 fsarchiver (filesystem archiver):

fsarchiver kann den Inhalt eines Dateisystems (also alle Programme, Daten, usw...) in einem Archiv sichern.
Ein solches Archiv kann man auch auf kleineren Festplatten und alternativen Dateisystemen wieder herstellen.
fsarchiver kann im Gegensatz zu tar/dar beim Restore auch das Dateisystem auf der Partition erstellen.
In dem Archiv sind alle Daten durch Checksummen geschĂŒtzt. Sollte ein Archiv beschĂ€digt sein, so gehen nur die Dateien verloren die beschĂ€digt wurden (es geht also nicht das komplette Archiv verloren).
fsarchiver unterstĂŒtzt derzeit nur Linux Dateisysteme unter anderem ext2, ext3, ext4, xfs, btrfs.
Optional kann man Multivolume-Archive erstellen, diese lassen sich dann einfach auf DVD sichern.

fsarchiver installieren:
apt-get install fsarchiver

Daten sichern:
fsarchiver savefs /mnt/backup/sda1_archiv.fsa /dev/sda1 = ein Dateisystem in ein Archiv sichern.
fsarchiver savefs /mnt/backup/sda-archiv.fsa /dev/sda1 /dev/sda2 = mehrere Dateisysteme in ein Archiv sichern.
fsarchiver savefs -j2 -s 4300 -v -z7 /mnt/backup/sda1_archiv.fsa /dev/sda1 = Empfehlung ♄ fĂŒr DVD-Backup (die Parameter sind alles Kleinbuchstaben).

Daten wiederherstellen:
fsarchiver restfs -v /mnt/backup/sda-archiv.fsa id=0,dest=/dev/sda1 = erstes Dateisystem (id=0) vom Archiv auf /dev/sda1 wieder herstellen.
id = bestimmt die Nummer vom Dateisystem falls man mehrere Dateisysteme in einem Archiv gesichert hat (begonnen wird bei 0).

Daten wiederherstellen und das Dateisystem konvertieren:
fsarchiver restfs -v /mnt/backup/sda-archive.fsa id=0,dest=/dev/sda1,mkfs=ext3 = Das Dateisystem ins ext3-Format konvertieren und das Archiv wieder herstellen ♄.

Daten temporÀr entpacken:
fsarchiver restdir /mnt/backup/archive.fsa /tmp/extract = entpackt die Daten ins angegebene Verzeichnis.

Archiv-Infos anzeigen:
fsarchiver archinfo /mnt/backup/archive.fsa = Zeigt verschiedene Infos zum Archiv an, unter anderem: Erstellungsdatum, Dateisystemformat, Label, UUID, SpeichergrĂ¶ĂŸen...

VerfĂŒgbare Dateisysteme anzeigen:
fsarchiver probe simple = Alle Speichermedien (wie z. B. Festplatten) und die darauf enthaltenen Partitionen anzeigen.

Optionale Parameter:
fsarchiver unterstĂŒtzt multi-thread-Prozessoren.
-j2 = (jobs count) Anzahl der Threads festlegen (Dual-Core = 2, Quad-Core = 4,...). Gibt man einen Core weniger an als man zur VerfĂŒgung hat, so wird das System nicht zu 100% ausgelastet.
-o = (overwrite) ein bereits bestehendes Archiv wird ĂŒberschrieben.
-s 4300 = (split) Teilt das Archiv in mehrere Teile (Multivolume-Archive) beginnend mit .fsa danach fortlaufend .f01, f.02, f03, ... die GrĂ¶ĂŸe wird in MB angegeben (4300 MB sind perfekt fĂŒr DVD-Sicherungen).
Beim Restore eines Multivolume-Archivs werden die fortlaufenden Archive automatisch verwendet, wenn sie im selben Verzeichnis liegen. Sollte dies nicht möglich sein, so wird an der Eingabeaufforderung nach dem Speicherort fĂŒr das nĂ€chste Archiv gefragt.
-c P@s5wörd = (crypt) VerschlĂŒsselt das Archiv mit dem angegebenen Passwort (verwendet man -c - so wird das Passwort an der Eingabeaufforderung abgefragt).
-v = (verbose) ausfĂŒhrliche Infos ausgeben.
-z7 = Kompression festlegen (1 = schell bis 9 = sehr gut, Standard = 3).
-e 'temp' = (exclude) Dateien & Verzeichnisse die dem Muster entsprechen auslassen (auch absolute Pfadangaben und Joker sind möglich).
-h = (help) Zeigt eine kurze Hilfe mit Beispielen an.

Alternative Weblinks:
qt4-fsarchiver (deb-Pakete & Live-DVD) = Backup ĂŒber eine GUI-OberflĂ€che.
sysresccd.org/SystemRescueCd_Homepage - SystemRescueCD mit verschiedenen Tools unter anderem mit fsarchiver.
 fsck (file system check):

fsck prĂŒft und repariert Linux Dateisysteme.
fsck darf nicht auf gemountete DatentrÀger angewendet werden.
fsck /dev/sda1 = PrĂŒft den angegebenen DatentrĂ€ger.
 grep:

grep ist ein Programm, das zur Suche und zur Filterung von definierter Zeichenketten in Dateien dient.
Die so gefilterten Dateien kann man zum einen ĂŒber die Standardausgabe (auf den Bildschirm) ausgeben,
des Weiteren kann man diese gefilterten Daten in eine neue Dateien umleiten (also speichern als eine neue Datei).
grep -v "^#" Datei.conf > Datei.conf.ohne_Kommentare = Löscht alle Kommentarzeilen in der Ausgabedatei.
grep -vE "(^#|^$)" Datei.conf > Datei.conf.Kompakt = Löscht alle Kommentare & Leerzeilen in der Ausgabedatei.
ifconfig eth0 | grep inet = Filtert in der Ausgabe von ifconfig alle Zeilen die 'inet' enthalten heraus.
 groups (Gruppen):

groups Benutzername = Zeigt an zu welchen Gruppen der Benutzer Mitglied ist.
 gzip:

Ermöglicht die Komprimierung und Dekomprimierung von einzelnen Dateien.
gzip [-Befehlsparameter] Datei = Daten komprimieren - es wird eine Datei.gz erzeugt.
gzip -k9f Datei = keep - Originaldatei behalten, 9 - beste Komprimierung, force - eventuell vorhandene Zieldatei ĂŒberschreiben.
gzip -h = (help) die Hilfe anzeigen
gzip -d Datei = (deflate) Datei entpacken.
 hdparm:

Mittels hdparm kann man verschiedenste Festplattenparameter abfragen und setzen.
hdparm -W /dev/sdX = gesetzte Parameter nur anzeigen (ohne Wertangabe).
hdparm -W1 /dev/sdX = '1' Festplatten Schreibcache auf dem entsprechenden Laufwerk einschalten (Standard), abschalten mit '0'.
hdparm -a512 /dev/sdX = read-ahead auf 512 vergrĂ¶ĂŸern, dies kann bei großen Dateien die Geschwindigkeit erhöhen (Standard = 256).
hdparm -H /dev/sdX = Laufwerkstemperatur ausgeben, sofern unterstĂŒtzt.
hdparm -tT /dev/sdX = bufferd und cached Disk Benchmark.
hdparm -Bxxx /dev/sdX = Advanced Power Management anpassen, sofern das Laufwerk dies unterstĂŒtzt (0-254, 127 meist Standard, 255 total abschalten, kleinere Werte = bessere Energieersparnis, höhere Werte = höhere Geschwindigkeit).
hdparm -R /dev/sdX = write-read-verify festlegen, die Laufwerksfirmware stellt hiermit durch nochmaliges einlesen der geschriebenen Daten sicher, dass alle Daten korrekt geschrieben wurden. Nur möglich wenn dies das Laufwerk unterstĂŒtzt. Ein aktiviertes verify kann die Schreibgeschwindigkeit deutlich verlangsamen ('-R1' einschalten, '-R0' ausschalten).
hdparm -fF /dev/sdX = System Cache (softwareseitig) und Laufwerks Cache (hardwareseitig) leeren. Sinnvoll wenn man sichergehen will das alle Daten zu einem Zeitpunkt korrekt geschrieben werden.
 hostnamectl:

hostnamectl = zeigt unter anderem den Hostnamen an, kann eine eventuelle Virtualisierung erkennen, listet das Operating System und den verwendeten Kernel auf uvm.
 id (identification):

id = Die Identifikationsnummer (ID) des Benutzers und der Gruppe anzeigen.
id -u = Ausgabe der EUID (effective user id).
id -u -r = Ausgabe der UID (real user id).
Der root User hat immer die UID/EUID mit der Nummer 0.

Benötigt man mehr Infos zu den Usern dann kann man auch folgendes versuchen:
cat /etc/passwd = listet alle angelegten User auf.
cat /etc/group = zeigt alle bereits angelegten Gruppen.
 if:

Wichtig: Zwischen den eckigen Klammern [ Bedingung ] muss zwingend ein Leerzeichen stehen.
if [ -f '/Pfad/Datei' ];
then echo 'Datei existiert.';
else echo 'Fehler: Datei nicht gefunden.'; exit 13; fi;

Wenn die Datei (file) existiert, dann Ausgabe des Textes,
wenn die Datei nicht existiert, dann Ausgabe des Fehler Textes und den Aufruf mit dem Fehlercode 13 beenden.
Hinweis: exit, sollte man nur im Script verwenden, da ein Aufruf im Terminal, dieses direkt wieder schließt.

if [ -d '/Verzeichnis' ];
then echo 'Verzeichnis/Pfad/Ordner existiert.'; fi;

Nur wenn das Verzeichnis (directory) existiert, wird der Text ausgegeben.

if [ $EUID -ne 0 ];
then echo 'keine root Rechte'; exit 13;
else echo 'root: OK'; fi;

PrĂŒfen ob root Rechte vorhanden sind. Wenn nein, dann die weitere AusfĂŒhrung beenden und exit mit Errorlevel 13.
Wichtig: Die Variable $EUID (effective user id) muss groß geschrieben werden.

if   [ -f 'Datei1' ];
then echo 'Datei1 existiert.';
elif [ -f 'Datei2' ];
then echo 'Datei2 existiert.';
else echo 'keine passende Datei gefunden'; fi;

PrĂŒft ob Datei1 oder Datei2 existiert, elif ist also eine 'ODER' Abfrage.
Man kann beliebig viele weitere elif Anweisungen ergÀnzen.
Wichtig: Es wird nur die erste zutreffende Bedingung abgearbeitet, alle weiteren nachfolgenden Bedingungen werden nicht mehr berĂŒcksichtigt.

if [ -f 'Datei1' ] || [ -f 'Datei2' ];
then echo 'Datei1 oder Datei2 existiert.';
else echo 'Fehler: Datei nicht gefunden.'; exit 13; fi;

PrĂŒfen ob Datei1 oder Datei2 existiert.

Mit Negation (wahr ist, wenn die entsprechende Bedingung nicht zutrifft):
if ! [ -d '/Pfad/Backup' ];
then echo 'Backup Ordner existiert nicht. Erstelle neues Verzeichnis'; mkdir /Pfad/Backup;
else echo 'Backup Ordner bereits vorhanden: OK'; fi;

Nur wenn kein Backup Verzeichnis existiert (beachtet das Negations-Ausrufzeichen '!'), wird ein neues Verzeichnis angelegt.

weitere Varianten:
if [ $Variable = 'Vergleichtext' ]; then ...; fi;
= ist wahr, wenn die Variable den gleichen String-Text enthÀlt.
if [ $Variable != 'Vergleichtext' ]; then ...; fi;
= ist wahr, wenn die Variable nicht den gleichen String-Text enthÀlt.
if [[ -f Datei1 && -f Datei2 ]]; then ...; fi;
= ist wahr, wenn die Datei1 und die Datei2 existiert.
if [ -r Datei ]; then ...; fi;
= ist wahr, wenn die Datei existiert und lesbar ist (readable).
if [ -s Datei ]; then ...; fi;
= ist wahr, wenn die Datei existiert und diese nicht leer ist (die Datei muss grĂ¶ĂŸer 0 sein).
if [ -w Datei ]; then ...; fi;
= ist wahr, wenn die Datei existiert und beschreibbar ist (writeable).
 iotop:

iotop zeigt Lesezugriffe- und Schreibzugriffe fĂŒr das ganze System, zu einzelne Prozessen und Threads an (benötigt root Rechte).

iotop installieren:
apt install iotop

iotop = alles Anzeigen.
iotop -o = (only) nur Prozesse und Threads anzeigen die gerade lesen oder schreiben. Auch jederzeit umschaltbar mit der Taste o.
iotop -a = (accumulated) ab dem Start von iotop werden alle alle Lese- und Schreibzugriffe angesammelt/aufsummiert. Auch jederzeit umschaltbar mit der Taste a.
 ip:

Dient zum Anzeigen und Àndern von Netzwerkeinstellungen (ggf. auch Routing- und Tunneleinstellungen).
ip addr = zeigt IP-Adressen an.
ip -c a = zeigt IP-Adressen farbig hervorgehoben an.
 kill:

Beendet einzelne Tasks.
kill -9 PID # PID = ist hierbei die Prozess-ID (Prozessnummer) die beendet werden soll. Die entsprechende PID kann man z. B. ĂŒber den Befehl [top] ermitteln.
 ln (link):

ln erstellt Verlinkungen (VerknĂŒpfungen) zu einer Datei oder zu einem Verzeichnis.
Man kann auf verlinkte Dateien/Verzeichnisse, sowohl ĂŒber ihren physischen Speicherplatz, als auch ĂŒber die Verlinkung zugreifen.

Der [Symbolischer Link] (Softlink) Ă€hnelt der Verlinkung von Webseiten. FĂŒr die Verlinkung auf die Originaldatei wird eine neue kleine Datei im derzeit verwendeten Directory angelegt. Diese kleine Datei enthĂ€lt dann nur den Pfad zur Originaldatei.
Symbolische VerknĂŒpfungen (symbolische links) sind daher ĂŒber beliebige Dateisystemgrenzen hinweg möglich. Löscht man einen Symbolischen Link, so wird nur dieser einzelne Link gelöscht, das Original bleibt bestehen.

Ein [Hardlink] ist ein weiterer direkter Verweis auf einen Verzeichniseintrag im Directory. Hardlinks sind daher nicht ĂŒber Dateisystemgrenzen möglich, da der physische Zugriff auf das Directory benötigt wird.
Eine Hardlink verlinkte Datei wird erst endgĂŒltig gelöscht, wenn alle weiteren Verlinkungen (inklusive des Originals) gelöscht wurden. Löscht man also nur einzelne Hard-Links und nicht das Original, so bleibt die Originaldatei bestehen.

ParametererklÀrungen:
[-s] = erstellt einen symbolischen Link, ohne den Parameter wird ein harter Link erstellt.

Beispiele:
ln -s /Pfad_zur/Originaldatei /Pfad_zur/Verlinkung = Legt eine Symbolische VerknĂŒpfung (Symbolischen Link) an, Verzeichnisse werden analog behandelt.
ln /Pfad_zur/Originaldatei /Pfad_zur/Verlinkung = Erzeugt einen Hardlink auf die entsprechende Datei, Verzeichnisse werden analog behandelt.

Gelöscht werden die VerknĂŒpfungen/Links einfach mit (rm siehe unten) oder einem beliebigen Dateimanager.
 ls (list):

Der Befehl listet den Inhalt eines Verzeichnisses auf.
ls -a = (all) zeigt alle Dateien, d. h. auch die versteckten Dateien an. Versteckte Dateien/Verzeichnisse haben immer einen Punkt [.] am Anfang im Namen.
ls -l = (long format), listet den Inhalt eines Verzeichnisses in ausfĂŒhrlicher Form auf.
ls -F = kennzeichnet Verzeichnisse mit [/] und ausfĂŒhrbare Dateien mit [*].
ls -laF = Zeigt alles - im langen Format - mit Kennzeichnungen an (empfohlen).
 lsb_release (Linux Standard Base Specification):

Gibt distributionsspezifische Informationen (wie z. B. die Anzeige der installierten Version, Codenamen usw.) aus.
lsb_release -a = Zeigt alle Infos ĂŒber die derzeit aktive/installierte Version an.
lsb_release -sc = Gibt nur den Release-Namen aus (z. B. 'bionic' bei Ubuntu 18.04).
 lshw (list hardware):

Zeigt eine Übersicht der verwendeten Hardware an. Beachtet dabei, nur als root User/Administrator erhĂ€lt man alle Informationen.
lshw -short = Gibt eine kurze HardwareĂŒbersicht aus.
lshw | more = Gibt die komplette HardwareĂŒbersicht seitenweise aus.
lshw -numeric -html > hw.htm && firefox hw.htm = Erzeugt eine komplette HardwareĂŒbersicht als html Webseite, diese wird dann im Anschluss an den Firefox Webbrowser ĂŒbergeben.
 mail:

Mit diesem Befehl rufen sie das E-Mail-Programm [mail] auf.
mail
 more:

Der Befehl zeigt eine Datei oder einen Datenstrom seitenweise am Bildschirm an.
more Datei
Zur nÀchsten Seite blÀttern = Leertaste.
Zeilenweise BlÀttern = Eingabetaste.
Seitenweise zurĂŒckgehen = b (back).
Anzeige beenden = q (quit).
 mount:

mount dient zum EinhÀngen von verschiedenen fremdartigen Dateisystemen.
Hinweis: Windows Partitionen werden standardmĂ€ĂŸig so eingebunden, das alle Dateien als ausfĂŒhrbar erscheinen (selbst wenn es diese nicht sind).
Hat man wine (den Windows Emulator) installiert so lassen sich .exe-Dateien sofort ausfĂŒhren.

Zuerst sollte man ein Verzeichnis anlegen, wo das zu mountende Dateisystem eingebunden werden soll:
mkdir /mnt/mountpunkt

 vorhandene Netzwerkfreigaben in Linux mounten:
mount benötigt ggf. das cifs-utils Paket [apt-get install cifs-utils].
mount -t cifs //IP-Adresse/Freigabe /mnt/mountpunkt/ -orw,user=Benutzername,password=Passwort,domain=DomÀne_oder_Hostname,vers=2.1
wichtige ParametererklÀrungen:
Die angegebenen Parameter dĂŒrfen nicht durch Leerzeichen getrennt werden, sonst werden diese nicht geparst.
mount fĂŒhrt keine Namensauflösung durch, daher muss man zwingend IP-Adressen verwenden.
rw - (read-write) schreibender Zugriff auf die Netzwerkfreigabe.
ro - (read-only) nur lesender Zugriff auf die Netzwerkfreigabe.
user=Benutzername - ist der Benutzername der fĂŒr die Freigabe benötigt wird.
password=Passwort - ist das Passwort welches fĂŒr die Freigabe benötigt wird. Hier also kein Linuxpasswort verwenden.
LĂ€sst man den Parameter weg, so wird das Passwort in der Kommandozeile ĂŒber die Frage 'Password:' abgefragt.
domain=Domainname - ist der Domainname falls eine DomÀne verwendet wird, bzw. falls keine Domain verwendet wird gibt man hier den Hostnamen (Computernamen) an.

# Mit [vers=...] legt man die zu verwendende SMB-Protokoll Version fĂŒr den Netzwerk Server fest (1, 2, 3).
# vers=1.0   = fĂŒr Windows XP, Windows Server 2003 (R2), FritzBox.
# vers=2.0   = fĂŒr Windows Vista ab SP1, Windows Server 2008 (bzw. vers=2.0.2).
# vers=2.1   = fĂŒr Windows 7, Windows Server 2008 R2.
# vers=3.0   = fĂŒr Windows 8, Windows Server 2012.
# vers=3.02  = fĂŒr Windows 8.1, Windows Server 2012 R2.
# vers=3.1.1 = fĂŒr Windows 10, Windows Server 2016.
# Hat man eine falsche Version angegeben, so erhÀlt man ggf. den Fehler: [mount error(112): Host is down] und das mounten der Netzwerkfreigabe schlÀgt fehl.

optionale Parameter (diese kann man in der Regel meist weg lassen):
iocharset=utf8 - bestimmt die Zeichensatzeinstellungen (Standard=utf8).
uid=999 - ist die UserID und bestimmt welcher User der Zugriff auf die Freigabe haben soll.
dir_mode=0777 - Setzt die Schreibrechte fĂŒr Ordner (0777 = Zugriff fĂŒr alle User - Standardwert ist 0755, so das nur root Zugriff hat).
dir_mode=0777 - Setzt die Schreibrechte fĂŒr Dateien (0777 = Zugriff fĂŒr alle User - Standardwert ist 0644, so das nur root Zugriff hat).
Die festgelegten System-Rechte (Besitz & Zugriff) werden nur lokal simuliert und nicht auf die Freigabe ĂŒbertragen.

FĂŒr Ă€ltere Versionen wird ggf. das Paket smbfs benötigt [apt-get install smbfs].
mount -t smbfs -o username=Benutzer/DomÀne,password=Passwort,uid=1000,gid=1000 //IP-Adresse/Freigabe /mnt/mountpunkt

 Festplatten Partitionen von einer Live-DVD aus mounten:
Der Dateisystemtyp (-t) wird bei neueren Linux Versionen in der Regel automatisch erkannt.
So das folgende vereinfachte mount-Varianten meist ausreichen sollten:
mount /dev/sda2 /mnt/mountpunkt -o utf8 = (read write) Festplatte mit Schreibzugriff (Standard=rw) mounten.
mount /dev/sda2 /mnt/mountpunkt -o ro,utf8 = (read only) Festplatte nur lesbar mounten.
Hinweis: StandardmĂ€ĂŸig werden Schreibzugriffe gepuffert (Parameter: async) - man sollte daher WechseldatentrĂ€ger vor dem entfernen abmelden (umount).

alternative Parameter:
iso8859-1 = alternativer Zeichensatz falls utf8 nicht passt (VFAT nur alte Systeme).
umask=0222 = alternative Zugriffsberechtigungen.
exec/noexec = AusfĂŒhrrechte fĂŒr BinĂ€rdateien festlegen.
sync = Schreibzugriffe werden immer sofort ausgefĂŒhrt (evtl. langsamer) - sinnvoll bei WechseldatentrĂ€gern wie UBS-Sticks.

 CD/DVD-Images und dd-Images in Linux mounten:
mount -o loop /Pfad/Imagedatei.iso /mnt/mountpunkt

 Permanentes mounten beim Systemstart:
blkid = zeigt unter anderem die UUID und den Typen von Partitionen an.

Die mount-EintrÀge werden in folgender Datei festgelegt:
nano /etc/fstab = mount EintrÀge festlegen.

Der typische Aufbau fĂŒr eine Festplatte ist wie folgt:
# <UUID> <mount-Punkt> <Dateisystem-Typ> <Optionen> <dump> <pass>
UUID=666a555b-4c33-...  /mnt/hd  ext4  errors=remount-ro  0  1

Optionale Parameter:
,ro (unter Optionen) = bewirkt das die Freigabe nur lesend eingebunden wird (Parametertrennzeichen=,).
0 (unter pass) = regelmĂ€ĂŸige DateisystemprĂŒfung beim Systemstart abschalten.

 Freigaben abmelden/aushĂ€ngen:
umount /mnt/mountpunkt

mount -l = Anzeige aller gemounteten DatentrÀger.
 mkdir (make dir):

Mit dem Befehl können sie neue Verzeichnisse anlegen.
mkdir neuer_Ordner
 mkfs (make filesystem):

Mit dem Befehl kann man DatentrÀger mit einem Dateisystem versehen (entsprechend Formatieren).
Vorsicht: Beim Formatieren werden alle Daten auf dem entsprechenden DatentrÀger gelöscht.
mkfs -t exfat -n "exfat" -s 2048 /dev/sda1 = Formatiert den angegebenen DatentrÀger mit dem exFAT-Dateisystem.
mkfs.xfs /dev/sda1 = Formatiert den angegebenen DatentrÀger mit dem XFS-Dateisystem.
mkfs.ext4 /dev/sda1 = Formatiert den angegebenen DatentrÀger mit dem XFS-Dateisystem.
mkfs.vfat -F 32 /dev/sda1 = Formatiert den angegebenen DatentrÀger mit dem FAT32-Dateisystem.
 mv (move):

Mit dem Befehl kann man eine Datei bzw. einen Ordner - verschieben und/oder umbenennen - auch ĂŒber Verzeichnisebenen hinweg.
mv alter_Dateiname neuer_Dateiname = Nennt die Datei um - Verzeichnisse behandelt man analog.
mv /home/User1/Datei /home/User2/ = Verschiebt die Datei vom User1-Verzeichnis in das User2-Verzeichnis ohne den Namen zu Àndern.
mv Datei /home/User2/neuer_Dateiname = Verschiebt die Datei in das User2-Verzeichnis mit einem neuen Dateinamen.
 nmap:

nmap ist ein Netzwerk-Analysewerkzeug und Sicherheits-/Portscanner.
nmap -sP 192.168.1.0/24 = lokaler Ping-Scan - gibt alle verfĂŒgbaren Hosts aus.
nmap 192.168.1.100 = Portscan auf der angegebenen IP-Adresse. Welche Ports sind offen?
 partclone:

partclone dient zum Sichern von Partitionen.
Partclone kann verschiedene Formate sichern wie z. B. ext3, ext4, hfs+, btrfs, xfs, ntfs, fat(12/16/32).
Partclone verwendet je nach Dateisystem verschiedene Unterprogramme.
Der Aufruf ist also fĂŒr jedes Dateisystem etwas unterschiedlich [partclone.Dateisystem-Typ Parameter].
Hier ein Beispiel fĂŒr die meist verwendeten ext4-Dateisysteme:

partclone installieren:
apt-get install partclone

ext4-Partitionen sichern (als root starten):
partclone.ext4 -c -R -s /dev/sda1 -o /Pfad/bkup_sda1_partclone.ext4.img = sichern der Partition ohne Komprimierung.
partclone.ext4 -c -R -s /dev/sda1 | gzip -c9 > /Pfad/bckup_sda1_partclone.ext4.img.gz = Sicherung der Partition mit gzip-Komprimierung.
partclone.ext4 -cRs /dev/sda1 | bzi2 -cz9 > /Pfad/bkup_sda1_partclone.ext4.img.bz2 = Sicherung der Partition mit bzip2 Komprimierung (beste Komprimierung/empfohlen).

ext4-Partitionen zurĂŒcksichern (als root starten):
partclone.ext4 -r -s bkup_sda1_partclone.ext4.img -o /dev/sda1 = RĂŒcksicherung der Partition ohne Komprimierung.
zcat /Pfad/bkup_sda1_partclone.ext4.img.gz | partclone.ext4 -r -o /dev/sda1 = RĂŒcksicherung der Partition mit gzip-Komprimierung.
bzip2 -cd /Pfad/bkup_sda1_partclone.ext4.img.bz2 | partclone.ext4 -ro /dev/sda1 = RĂŒcksicherung der Partition mit bzip2 Komprimierung (empfohlen).

Alternative Weblinks:
clonezilla.org (de.wikipedia.org/wiki/Clonezilla) - enthÀlt unter anderem partclone.
 passwd (password):

Dient zum Setzen von Passwörtern fĂŒr Benutzer.
Der Standarduser kann nur sein eigenes Passwort Àndern.
Der Superuser (root) kann Passwörter aller User Àndern.

passwd Benutzername = setzt fĂŒr den Benutzer ein neues Passwort. Das neue Passwort wird dabei auf der Kommandozeile abgefragt.
Standarduser mĂŒssen zuvor ihr altes Passwort eingeben um das Passwort Ă€ndern zu können.

sudo passwd root = setzt das root Passwort.

Wenn die PasswortkomplexitÀt aktiviert ist, so muss das Passwort aus Buchstaben, Zahlen und Sonderzeichen bestehen und mindestens 6-8 Zeichen lang sein. Passt die KomplexitÀt nicht, so wird das neue Passwort nicht angenommen.

Hinweis bei Live-Systemen:
Startet man von einer Live-DVD, so wird man in der Regel automatisch angemeldet.
Unter Ubuntu-basierenden-Systemen heißt der Benutzername meist wie die gestartete Umgebung (also ubuntu, xubuntu, lubuntu, ubuntu-mate) usw.
Bei Ubuntu-basierenden-Systemen wird dabei fĂŒr den Benutzer in der Regel kein Passwort vergeben.
passwd xubuntu = Setzt unter einem Xubuntu-Live-System das xubuntu-Passwort.

Bei debian-basierenden-Systemen heißt der Benutzername meist user und das Passwort live.
sudo passwd user = Ändert das user-Passwort bei Verwendung einer debian-Live-DVD.

Man kann auch bei Live-Systemen das Passwort wie oben angegeben Àndern und so das Live-System vor Zugriffen sperren.
Beachten muss man ggf. die TTY Consolen Strg + Alt und F1 - F7 diese können ggf. ungesperrt bleiben.

 ps (processes):

Zeigt eine Momentaufnahme von laufenden Prozessen an.
ps aux = Alle Prozesse in einer ausfĂŒhrlichen Ansicht anzeigen (BSD-Syntax).
ps -eF = Alle Prozesse in einer ausfĂŒhrlichen Ansicht anzeigen.

ps aux | grep XYZ = Die Ausgabe filtern z. B. zum PrĂŒfen ob Programm XYZ lĂ€uft.
 pv (monitor the progress of a data throuh a pipe):

Zeigt bei Streams unter anderem die Laufzeit, den Datendurchsatz, den erreichten Prozentsatz mit Balken und die verbleibende Restzeit an.
apt-get install pv = pv installieren.

Festplattenbackup mit Statusanzeige:
vor dem Sichern/RĂŒcksichern swapping deaktivieren:
swapoff -a = (swapping deaktivieren) es kann sonst passieren das, das Live-System die swap-Partition verwendet und so ein RĂŒcksichern verhindert.

Sicherung komplette Festplatte:
pv -EE /dev/sda > /mnt/Pfad/sda_pv.img = Sicherung (bei evtl. auftretenden Lesefehlern weitermachen).
pv -EE /dev/sda | bzip2 -cz9 > /mnt/Pfad/sda_pv.img.bz2 = Sicherung (bei Lesefehlern weiter machen & Komprimierung).

Restore komplette Festplatte:
pv /mnt/Pfad/sda_pv.img > /dev/sda = RĂŒcksicherung.
bzip2 -cd sda_pv.img.bz2 | pv > /dev/sda = RĂŒcksicherung eines komprimierten Images.
 pwd (print working directory):

Dieser Befehl gibt das Verzeichnis aus, in dem man sich gerade befindet.
pwd
 reboot:

Startet das System neu.
reboot
 rm (remove):

Mit diesem Befehl kann man Dateien löschen.
rm zu_löschende_Datei = Löscht die angegebene Datei.
rm -rf Verzeichnis = Löscht auch nicht leere Verzeichnisse (rekursiv), nicht vorhandene werden ignoriert (force).
rm -rf ~/.local/share/Trash/* = Leert den Papierkorb (MĂŒlleimer) vom angemeldeten User.
 rmdir (remove directory):

Mit dem Befehl kann man ein Verzeichnis nur löschen wenn es leer ist.
rmdir zu_löschender_Ordner = Löscht das angegebene Verzeichnis.

Volle Verzeichnisse löscht man mit rm.
Mehrere leere Verzeichnisse löscht man am besten mit find.
 sed (stream editor):

Dieser Befehl ruft den Stream Editor auf. Der Stream Editor erlaubt es, Dateien durch Mustervergleich (pattern matching) und Ersetzungen zu verÀndern.
Die Ausgabe erfolgt ĂŒber die Standardausgabe, eine Umleitung ist möglich.
sed -e '/^#/d' -e '/^ /d' Dateiname.txt # entfernt alle Zeilen die mit einem fĂŒhrende Leerzeichen [ ] beginnen und alle Kommentarzeilen die mit einem [#] (Kommentar) beginnen.
 setterm:

setterm passt Terminal Einstellungen an.
setterm -blank 0 -powerdown 0 = verhindert das Abschalten des Terminals/Consolen-Bildschirms (Bildschirmschoner/Energiesparmodus ausschalten).
echo setterm -blank 0 -powerdown 0 >> ~/.bash_profile = Immer nach dem Systemneustart das power management abschalten (Eintrag im Autostart).
Bei Àlteren Versionen muss man [-powersave off] verwenden.

FĂŒr Systeme mit X-Window verwendet man:
xset s off -dpms
Der Start ist nur im grafischen Terminal möglich.

Um den xscreensaver (Bildschirmschoner) zu deaktivieren verwendet man:
xscreensaver-command -exit
 shred:

shred dient zum "sicheren" löschen von einzelnen Dateien und ganzen Festplatten.

Hinweise:
Will man ganze Speichermedien wie z. B. Festplatten Shreddern, so sollte man diese vom System abmelden (umount), denn nur so wird sichergestellt das alle Daten gelöscht werden.
Bei einigen Journalbasierenden Dateisystemen sowie bei Flash-Speichermedien wie z. B. SSD's, USB-Sticks, Kamera-Chips usw. können Datenreste erhalten bleiben. Da der Controller im Speichermedium, bzw. der Treiber vom Dateisystem - Schreibzugriffe möglicherweise auf andere Bereiche umlenkt. Die zu löschenden Daten können daher trotz Shreddern noch vorhanden sein.
Will man also Speichermedien sicher löschen, so sollte man diese komplett mit anderen Daten beschreiben bis die Speichermedien vollgeschrieben sind (siehe cat oben). Denn dann sind definitiv alle vorhandenen Daten ĂŒberschrieben und nicht wieder herstellbar (sicheres SSD löschen). Beachten sollte man dabei aber, das einige Flash-Medien wie z. B. SSD's eine Hardware-Komprimierung im Controller vornehmen, daher sollte man insbesondere SSD's nicht nur mit Nullen '0' ĂŒberschreiben.

shred -v -n 2 /Pfad/Dateiname = Überschreibt den Inhalt der angegebene Datei 2 mal mit zufĂ€lligen Zeichen (die Datei wird nicht gelöscht).
shred -v -u -n 2 /Pfad/Dateiname = Überschreibt den Inhalt der angegebene Datei 2 mal mit zufĂ€lligen Zeichen und löscht diese danach.
shred -v -n 2 /dev/sdx = Die angegebene Festplatte wird 2 mal komplett mit zufĂ€lligen Daten gefĂŒllt (gelöscht).
Will man ganze Ordner sicher löschen, so sollte man wipe verwenden.

Tipp: Will man ein Android GerĂ€t (Smartphone/Tablett) sicher löschen, so sollte man dieses erst zurĂŒcksetzen und anschließend so lange ein Video aufnehmen, bis der Interne Speicher komplett ĂŒberschrieben ist.
Alle alten Dateien werden damit ĂŒberschrieben und sind somit nicht mehr wieder herstellbar.
 shutdown:

shutdown -hP now = den PC ausschalten.
ParametererklÀrung:
[-h] = (halt) den PC anhalten oder ausschalten.
[-P] = (power off) also komplett ausschalten.
[now] = (nun) also sofort, und ohne Verzögerung.
 sleep:

HĂ€lt das gerade laufende Programm/Script fĂŒr die angegebene Zeit in Sekunden an.
sleep 10 = Wartet 10 Sekunden.
 stat (display file system status):

stat Datei_oder_Verzeichnis = Zeigt ausfĂŒhrliche Details zu einer Datei oder zu einem Verzeichnis an.
Neben den normalen Zugriffsrechten wird auch der Zeitstempel der letzten Zugriffszeit, der Zeitstempel letzten Modifizierung und der Zeitstempel der letzten ZugriffsrechteÀnderung angezeigt.
Hiermit kann man also erkennen wann zuletzt auf eine Datei zugegriffen wurde, bzw. wann diese zuletzt verÀndert wurde.

Zugriff: gibt an, wann die Datei das letzte mal gelesen wurde.
Modifiziert: gibt an, wann die Datei das letzte mal geÀndert wurde (wenn sich der Inhalt geÀndert hat).
GeÀndert: gibt an, wann das letzte mal die Zugriffsrechte geÀndert wurden.

Ändern kann man die Zugriffszeiten/Zeitspempel mit touch.
 su (superuser):

su verwendet man, wenn man in einer Sitzung zu anderen BenutzeridentitÀt (ID) wechseln möchte.
su ist auch geeignet um als root zu arbeiten ohne das man sudo eingerichtet hat.
Wichtig: Man benötigt dabei aber das Kennwort des Users unter dem man arbeiten möchte (ausgenommen root).
su = Gibt man keinen Benutzernamen an wechselt su standardmĂ€ĂŸig zu root. Der aktuelle Pfad wird dabei nicht gewechselt. Es werden auch keine automatischen Startskripte verarbeitet.
su - = Anmelden als Superuser (root), dabei wird die Standardumgebung von root bereitgestellt, dabei wird automatisch in das Home-Verzeichnis [/root] von root gewechselt und es werden eventuell hinterlegte Startskripte des Users root [/root/.bash_profile] ausgefĂŒhrt.
su root = Anmelden als Superuser (root), dabei wird der aktuelle Pfad nicht gewechselt. Es werden auch keine automatischen Startskripte verarbeitet.
su Benutzer = Anmelden als User Benutzer. Der aktuelle Pfad wird dabei nicht gewechselt. Es werden auch keine automatischen Startskripte verarbeitet.
su root -c Befehl = Startet nur diesen einen Befehl unter dem Benutzer root.
su Benutzer -c Befehl = Startet den Befehl mit den Berechtigungen des Users Benutzer.
 sudo (superuser do):

sudo verwendet man, wenn man Befehle mit Rechten eines Superusers (root) ausfĂŒhren will.
Des Weiteren ist auch ein dauerhafter Wechsel der IdentitÀt möglich.
Will man Aktionen als Superuser (root) ausfĂŒhren, so benötigt man auch nicht das Kennwort des Superusers - man muss nur in der Gruppe [sudo] Mitglied sein (siehe auch Punkt 3b oben).
sudo Befehl = Startet den angegebenen Befehl mit den Superuser (roo) Rechten.
sudo -i = Wechselt die IdentitĂ€t zum Superuser (root), dabei werden eventuell hinterlegte Startskripte des Users root [/root/.bash_profile] ausgefĂŒhrt und in der Regel wird automatisch in das Home-Verzeichnis [/root] von root gewechselt.
sudo -s = Wechselt die IdentitĂ€t zum Superuser (root), dabei werden eventuell hinterlegte Startskripte nicht ausgefĂŒhrt. Der Pfad in dem man sich befindet bleibt in der Regel gleich. sudo -s wird daher eher empfohlen.
sudo su = Wechselt die IdentitĂ€t zum Superuser (root), dabei werden eventuell hinterlegte Startskripte nicht ausgefĂŒhrt. Der Pfad in dem man sich befindet bleibt in der Regel gleich. sudo -s wird daher eher empfohlen.
 tail:

tail zeigt immer die letzten Zeilen einer Datei an. Daher ist es gut geeignet Logfiles in einer Console zu ĂŒberwachen.
tail -f /var/log/logfilename.log = (follow) Änderungen an der Logdatei werden sofort mit angezeigt. Achtung wenn das Logfile rotiert hĂ€lt die Anzeige an (die letzten Daten vor dem rotieren bleiben dann immer stehen).
tail -f --retry /var/log/logfilename.log = (follow & retry) Änderungen an der Logdatei werden sofort mit angezeigt, nach dem Rotieren des Logfiles wird dieses erneut geöffnet. So das dies fĂŒr eine dauerhafte Überwachung geeignet ist.
tail -F logfile.log = Ist die Kurzform von [-f --retry logfile.log] (ist also leichter einzugeben). Änderungen vom angegeben Logfile werden ausgegeben und das rotieren des Logfiles wird berĂŒcksichtigt.
 tar:

Dieser Befehl ermöglicht die Archivierung von Dateien bzw. Verzeichnissen. Das bedeutet, man kann mehrere Dateien und Verzeichnisse zu einer einzigen Datei zusammenfassen. Insbesondere ist hervorzuheben, dass hier die Benutzerrechte mitgesichert werden.
tar -cvJf archiv.tar.xz  /pfad/Daten_oder_Ordner/ = Die angegebenen Daten werden im angegebenen tar-Archiv mit xz komprimiert gespeichert.
tar -cvjf archiv.tar.bz2 /pfad/Daten_oder_Ordner/ = Die angegebenen Daten werden im angegebenen tar-Archiv mit bzip2 komprimiert gespeichert.
tar -cvzf archiv.tar.gz  /pfad/Daten_oder_Ordner/ = Die angegebenen Daten werden im angegebenen tar-Archiv mit gzip komprimiert gespeichert.
tar -xvJf archiv.tar.xz  -C /optionaler_Zielpfad/ = entpackt das xz-tar-Archiv in das ggf. angegebenen Verzeichnis. 
tar -xvjf archiv.tar.bz2 = entpackt das bzip2-tar-Archiv.
tar -xvzf archiv.tar.gz  = entpackt das gzip-tar-Archiv.
tar -tzf  archiv.tar.gz  = Archiv Inhalt nur anzeigen (nicht entpacken).
tar --help | more = Zeigt die Hilfe an.

ParametererklÀrungen:
[-c] = (compress) ein Archiv erstellen.
[-C] = (Change directory) ein anderes Zielverzeichnis angeben.
[-v] = (verbose) ausfĂŒhrlich Anzeige beim packen bzw. entpacken.
[-z] = (zip) die Daten mit gzip packen bzw. entpacken.
[-j] = die Daten mit bzip2 packen bzw. entpacken.
[-J] = die Daten mit xz packen bzw. entpacken.
[-f] = (file) umleiten an eine Datei, bzw. aus einer Datei lesen. Muss immer am Ende der Parameterkette stehen (also direkt vor dem Archivnamen).
[-x] = (expand) das Archiv entpacken.
[-t] = (list) den Inhalt des Archivs ausgeben.
 tee:

tee liest von der Standardeingabe. Die gelesenen Daten werden dann direkt an die Standardausgabe und an eine Datei ĂŒbergeben.
Ausgaben kann man so optisch am Bildschirm verfolgen und zusÀtzlich in einer Datei protokollieren.

echo 'Hallo Welt' | tee Datei.txt = der Text 'Hallo Welt' wird ĂŒber echo ĂŒber die Standardausgabe ĂŒber die Pipe [|] an tee ĂŒbergeben. tee gibt die Daten auf dem Bildschirm aus und speichert den Text 'Hallo Welt' in der 'Datei.txt'.
Eine ggf. bereits bestehende Datei wird ĂŒberschrieben.
Hallo Welt

cat Datei.txt = zeigt dann den gespeicherten Inhalt nochmals an:
Hallo Welt

echo 'ich bin da!' | tee -a Datei.txt = (append) die Daten der Standardeingabe werden ausgegeben und an eine bereits bestehende Datei angehÀngt.
ich bin da!

cat Datei.txt = zeigt dann den gespeicherten Inhalt nochmals an. Hier dann Beispielsweise (beachtet dabei den Zeilenumbruch):
Hallo Welt
ich bin da!
 top:

Zeigt verschiedenste CPU-Prozesse an.
top -s = Im sicheren Modus starten, alle potentiell gefĂ€hrlichen interaktiven Kommandos werden ignoriert. Besonders fĂŒr Überwachungsterminals geeignet.
top -i = (inaktive) untÀtige Prozesse werden ausgeblendet.
top -c = Statt dem Namen wird der komplette Kommandozeilenaufruf dargestellt.

Einige wichtige Tastaturkommandos wenn top lÀuft:
c = (command) Wechselt zwischen der Darstellung von Kommandonamen und vollen Kommandozeilen.
h = Hilfe anzeigen.
i = (inaktive) untÀtige Prozesse werden ausgeblendet.
k = (kill) Es wird nach dem zu killenden Prozess gefragt (geht nicht im sicheren Modus).
l = Die Anzeige der Durchschnittsauslastung und uptime an- oder ausschalten.
m = (memory) Speicherverbrauch ein-/ausblenden.
q = (quit) Beendet das Programm.
t = (tasks) TaskĂŒbersicht ein-/ausblenden.
N = Sortiert die Tasks nach PID.
P = Sortiert die Tasks nach CPU-Benutzung (Voreingestellt).
M = (memory) Sortiert die Tasks nach Speichernutzung.
T = (tasks) Sortiert die Tasks nach Zeit/kumulativer Zeit.
Leertaste = sofort alles aktualisieren.

Eine empfehlenswerte Alternative ist htop [apt-get install htop].
 touch (change file timestamps):

touch Datei_oder_Verzeichnis
Mit touch kann man Zugriffs- und Änderungszeiten von Dateien und Verzeichnissen Ă€ndern.

touch -t 1912311200 Datei_oder_Verzeichnis = Ändert das Zugriffs und Änderungsdatum (Inhaltsmodifizierung) auf den 31.12.2019, 12:00 Uhr.

Anzeigen lassen sich die Zeitstempel mittels stat.
 tune2fs:

tune2fs Festlegen der automatischen DateisystemĂŒberprĂŒfung.
tune2fs -c 15 /dev/sda1 = festlegen nach wie vielen Systemstarts die Festplatte automatisch auf Fehler geprĂŒft wird.
tune2fs -U random /dev/sdb1 = einen neuen UUID (Universally Unique Identifier) Code setzen (ggf. nötig nach Festplattencloning).
tune2fs -l /dev/sda1 = (list) zeigt verschiedene DatentrÀgerparameter an, unter anderem die Reserve-Blöcke (einfacher SSD/HD Test).
 uname:

uname zeigt verschiedene Hardwareinformationen an.
Ausgaben sind Systembedingt und können je nach Hardware und Betriebssystem zum Teil sehr verschieden sein.
uname -a = (all) Zeigt alle Informationen an.
uname -r = (release) Nur die genaue Versionsnummer vom Kernel Release ausgeben.
uname -m = (machine typ) Gibt verwendete Architektur aus: 32-Bit oder 64-Bit? Man kann hier auch den Befehl [arch] verwenden.

Hierbei bedeutet eine Ausgabe von:
[x86_64] = es wird ein 64-Bit Kernel verwendet.
[i686] = es wird nur ein 32-Bit Kernel verwendet, auch wenn die CPU ggf. 64-Bit fÀhig ist. Es ist also nur eine 32-Bit Version installiert.

!.

Abschließende Hinweise:


IP-Adressen, E-Mailadressen, Namen u. Ă€. wurden fĂŒr die Dokumentation geĂ€ndert, hacken ist also zwecklos.
Die Nutzung der Anleitung erfolgt auf eigene Gefahr, fĂŒr jegliche SchĂ€den wird keine Garantie/Haftung ĂŒbernommen!
Die Dokumentation entstand aus verschiedenen Tests, sowie produktiven Installationen und stellt eine Zusammenfassung wichtiger und empfohlener Schritte dar.
Bevor sie eventuell Fragen stellen bitte ich sie die Dokumentation komplett zu lesen.
Hinweise auf Fehler, Anregungen, Danksagungen oder Àhnliches sind immer willkommen.
Die Bildschirm-Screenshots sind in OriginalgrĂ¶ĂŸe, diese werden aber verkleinert dargestellt.
Die Anzeige kann man z. B. mit der Tastatur ĂŒber Strg und + vergrĂ¶ĂŸern und ĂŒber Strg und - wieder verkleinern,
Strg + 0 stellt die OriginalgrĂ¶ĂŸe wieder her.

Design:
2019 © Computertechnik Schröder, Arno Schröder, Kahla (Impressum)