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. 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. Wenn Sie diese Seite weiterhin besuchen, erklären Sie sich damit einverstanden.

 Howto:                      
 Linux optimal installieren. 
 © www.ctaas.de # 2017-03-14 

Linux optimal installieren - wie man ein kleines, stabiles & sicheres System aufsetzt. [Debian/Ubuntu] [German Howto]:

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
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 eine MySQL-Datenbank einrichten (einschließlich Anbindung an PHP5 und Apache)
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
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
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.
Die Debian Images werden insbesondere für VirtualBox VMs empfohlen, da hier standardmäßig Auflösungen bis 1024x768 möglich sind - ohne das man zusätzliche Gasterweiterungen installieren muss.

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.

4.

Paketquellen einlesen/aktualisieren & Updates installieren (empfohlen):


Bevor man ans weitere installieren geht, sollte man die Paketquellen neu einlesen (auf Update's 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 nicht Empfohlen 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.
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.
Folgendes installiert nur den Basis MATE-Desktop ohne jegliche extra Features:
apt-get install xorg mate-desktop-environment-core

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

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.
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.
Folgendes installiert den LXDE Desktop (empfohlen):
apt-get install xorg lxde-core

Folgendes installiert LXDE mit Ubuntu Skin (weniger empfohlen):
apt-get install xorg lubuntu-core

Das Aussehen/Thema lässt sich anpassen über:
apt-get install lxappearance
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.
Installationsanleitung für Ubuntu:
1. folgende Paketquelle hinzufügen:
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.
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.
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.
  • 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.
Folgendes installiert die KDE Plasma Desktopumgebung:
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) bzw.
unter Ubuntu (ab Ubuntu 15.04, 15.10, 16.04, 16.10)
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):
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.
Eine andere Möglichkeit der Netzwerkanpassung besteht durch direktes anpassen der Konfigurationsdateien.
Statische IP-Adesse vergeben:

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

Hier dann:
# 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
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 eine 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.

Tipps zum Netzwerk:
Änderungen am Netzwerk werden erst übernommen wenn man das Netzwerk neu startet.
ifup eth0 - startet das Netzwerk eth0.
ifdown eth0 - beendet das Netzwerk eth0.
ifconfig - Zeigt die derzeitige eingestellte Konfiguration an.
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 immmer 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 zur Zeit 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) müssen ebenfalls gesetzt werden!
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 in's 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:
Zugiff 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 zusätlichen SFTP-Server installiert und so den Zugriff erhält habe ich unter Punkt 14 weiter unten 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: Die genaue Paramertererklärung finden Sie 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ürssh-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 bearbeit 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 mann 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|___|___|___|___|___|___|___|___|___|___|___|___|__|
|_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|____|
|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|_2016@cts_|
________________________________________________________________________________

oder z. B. so (kurze Version):
                                            _           _           _   
      .:(:( _|_ ):):.                    __(=)__     __|=|__    ___|=|___
     ________|_                         (___R.__)   [___I.__]   \__ P.__/ 
    /._.\ =  = \                           (=)         |=|         |=|   
___/_/_\_\______\____________________\|/___(=)___\|/___|=|___\|/___|=|___\|/____
|___|__#Hacker__|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__|
|_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|____|
|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|_2016@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. eingerichter 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 angabe der Port-Nummer ist nur nötig wenn diese geändert wurde.
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 jedesmal 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] > [Dateiatribute ä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 maus 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(Port-Nummer ist nur nötig wenn geändert.)
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
# Folgende Dateien nicht im Papierkorb sichern.
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.

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 = .~*, *.tmp # Vom Papierkorb ausgeschlossene Dateien z. B. Office-Temp-Dateien. 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 PHP5 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 Anonymmous-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. Dieser User kann auch dazu verwendet werden das root-MySQL Passwort zu reseten. 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ötig 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 http://www.adminer.org/#download):
wget -O adminer.php https://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 vergesssen 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 das 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 Mainboard-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 auf Ubuntu basierenden Distributionen gültig (sowohl Server- als auch Desktop-Systeme).

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 = (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 = Paketquellen aktualisieren.
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 = Paketquellen neu einlesen/aktualisieren.

apt-get upgrade = Programm-Pakete auf neue Version aktualisieren.
apt-get dist-upgrade = Programm-Pakete auf neue Version aktualisieren (installiert und entfernt ggf. zusätzliche neue Pakete) (dies ist noch kein System-Upgrade auf die neue Version).
apt-get autoremove = nicht mehr benötigte Pakete löschen (Platz schaffen fürs Upgrade).
apt-get clean = leert den kompletten Paket-Cache (entfernt alle Pakete die zur Installation herunter geladen wurden/Platz schaffen).

Als nächstes sollte man prüfen ob der Update-Manager installiert ist (meistens bereits 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.
lts = nur LTS-Versionen werden angezeigt (aktualisiert: 10.04 direkt auf 12.04, 12.04 direkt auf 14.04, usw.).

Dann kann man die Aktualisierung starten:
do-release-upgrade = auf die nächste Version aktualisieren.
do-release-upgrade -d = (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.

23.

BitDefender Virenscanner von einem Live-System aus nutzen:


BitDefender kann für den privaten Gebrauch frei verwendet werden.
Hier zeige ich wie man diesen von einer Live-CD 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:
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:
bdscan --help
Oder besser man erzeugt schnell ein kleines Scan-Shell-Script zum scannen (Beispiel):
#!/bin/sh
# Als Shell-Script kennzeichnen.

# Virenscanner aktualisieren:
bdscan --update

# Einen Virenscan durchführen & gefundene versuchen zu bereinigen, Archive (wie z. B. .zip, .gz, ...) und E-Maildatenbanken auslassen, mit Logfile:
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):
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 sollte 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).

Für aktuelle Systeme und VMs kann man das folgende Sicherungsscript verwenden (das System wird hierbei über ein Live-System in einer Netzwerkfreigabe gesichert).
 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 = Hexanzeige 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. Raidsysteme):
GRUB (Version1), GRUB 2 (ab 1.99 und neuer), Super Grub Disk

26.

Problemlösung: horizontal doppelt/gespiegelt/gesplittete Dastellung 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

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'.
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 = wechseln in das übergeordnete Verzeichnis XYZ.
cd .. = wechseln in das untergeordnete Verzeichnis
cd / = wechseln direkt in das root Verzeichnis.
cd ~/ = wechseln direkt ins eigene Home-Verzeichnis.
 chmod:

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 -r Quell-Verzeichnis Ziel-Verzeichnis = (rekursiv) kopiert das Quell-Verzeichnis ins angegebene Ziel-Verzeichnis, dabei werden alle Dateien & Unterordner mit kopiert.
cp -u Quelle Ziel = (update) kopiert nur neuere Dateien und noch nicht vorhandene Daten aus der Quelle ins Ziel.
 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 gemounten 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 Homeverzechnis 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.
 find:

find sucht in einer Verzeichnishierarchie nach Dateien.
find / -name Datei = Sucht ab dem Wurzelverzeichnis [/] die Datei mit dem Namen [Datei].
find /var/ -name "*.log" = Sucht ab dem angegebenen Pfad nach Logfiles ([.log]-Dateien). Man kann also die gewöhnlichen Joker verwenden.
find / -type d Verzeichnis = Sucht ab dem Wurzelverzeichnis [/] nur nach Verzeichnissen mit dem Namen [Verzeichnis].
find / -size +20M = Sucht alle Dateien ab dem Wurzelverzeichnis [/] die mindestens [20 MB] groß sind.
 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.
 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.

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:

if [ -d /Verzeichnis ]; then echo 'Verzeichnis existiert.'; fi; = wenn das Verzeichnis existiert ausgabe des Textes.
 ip:

Dient zum Anzeigen und ändern von Netzwerkeinstellungen (ggf. auch Routing- und Tunneleinstellungen).
ip addr = zeigt IP-Adressen 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.

Ein [Hardlink] (weniger empfohlen) ist ein weiterer direkter Verweis auf einen Verzeichniseintrag im Directory. Hardlinks sind daher nicht über Dateisystemgrenzen weg 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.

Der [Symbolischer Link] (Softlink) (empfohlen) ähnelt der Verlinkung von Webseiten. Für die Verlinkung auf die Zieldatei wird eine neue kleine Datei im derzeit verwendeten Directory angelegt und diese kleine Datei enthält nur den Pfad zum gewünschten Ziel (zum Original).
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.

Parametererklärungen:
[-s] = erstellt einen symbolischen Link (empfohlen), ohne den Parameter werden harte Links erstellt (nicht empfohlen).

Beispiele:
ln -s /home/Benutzer/Dokumente/Zieldatei.txt /home/Benutzer/Schreibtisch/Verknüfungsname.txt = Legt eine Symbolische Verknüpfung auf dem Desktop für die Zieldatei.txt an.
ln -s /Pfad_zum_Original/Originaldatei /Pfad_zum_Link/Link-zur-Originaldatei = Die Variante sollte in den meisten Fällen ausreichen (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.
 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
Wichtiges und 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 sollte man am besten nur 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 - der Domainname falls eine Domäne vorhandene ist, bzw. falls keine Domain verwendet werden soll gibt man hier den Hostnamen (Computernamen) an.
Optionale Parameter (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
 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 löschen, wenn es leer ist.
rmdir zu_löschender_Ordner = Löscht das angegebene Verzeichnis.
 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.
 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 --help | more = Zeigt die Hilfe an.
 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].
 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 wurde 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:
2017 © Computertechnik Schröder, Arno Schröder, Kahla (Impressum)