Linux

Allgemein

Allgemein

Zugriffsrechte für Dateien und Ordner

Einleitung

In Linux herrscht ein striktes Berechtigungssystem. Wir können für jeden Ordner festlegen, wer welche Datei schreiben, lesen oder ausführen darf. Diese Konfiguration machen wir über das Terminal. Ansonsten können wir die Berechtigungen auch über die GUI setzen. 

Zur Verwaltung der Berechtigungen verwenden wir den Befehl chmod. Mit diesen können wir Berechtigungen festlegen, verändern oder ganz entfernen. 

Syntax von chmod

Wenn wir den Befehl chmod verwenden möchten, müssen wir erstmal die Syntax des Befehls nachvollziehen. 

chmod [optionen] <maske> <datei>

Unter maske verstehen wir die Berechtigungsmaske. Die Zuteilung kann Symbolisch oder Numerisch umgesetzt werden.

Symbolische Zuteilung

Wenn wir die Berechtigungen über Symbole und Buchstaben ändern möchten, wird die Maske in 3 Teilbereiche aufgeteilt.

Die Rechte werden von der Benutzerkategorie immer durch einen Operator getrennt. Der Operator gibt an, ob die Rechte jeweils hinzugefügt, entfernt oder gesetzt werden.

Syntax Beispiele:

chmod a+rwx datei.txt

chmod +x script.sh

chmod u=rw,g=rw,o=r datei.txt
Numerische Zuteilung

Im Gegenteil zu der Symbolischen Zuordnung, können Berechtigungen auch über die Numerische Zuteilung gesetzt werden. Dort wird eine dreistelle Zahl angegeben. Diese teilt mit, welche Berechtigungen, welche Ebene bekommt.

Die Rechte werden dann mit einer Nummer identifiziert. Die Zahl 751 gibt z.B. die Berechtigung für den Besitzer Vollzugriff, für die Gruppe Lesen, Ausführen und für andere auf Nur Ausführen

Syntaxbeispiele:

chmod 777 datei.txt

chmod -R 700 /footer/topbar

Optionen

Um den Befehl jetzt noch intelligenter zu gestalten, gibt es die Optionen. Mit den Optionen können wir dem Befehl noch etwas mitgeben wie er sich verhalten soll. Die Option geben wir mit einem Bindestrich vorne dran an, und wir schreiben dann die entsprechenden Buchstaben dahinter. 

Allgemein

Debian Spiegel-Server ändern

Einleitung

In diesem Beitrag erkläre ich kurz, wie wir schnell unter Debian den Spiegelserver auf einen anderen Spiegelserver ändern können. Dazu geben wir noch einen Parameter mit, mit dem sich das Programm automatisch den besten Spiegelserver automatisch heraussucht. 

Spiegelserver ändern

Um den Spiegelserver zu ändern, müssen wir im ersten Schritt das Programm installieren. Dazu benötigen wir erstmal die Python Paket Installer PIP. 

sudo apt install pip -y

 Im Anschluss installieren wir das benötigte, Programm, um schnell den Spiegelserver zu ändern.

sudo pip3 install apt-mirror-updater
Spiegelserver schnell ändern (Automatische Suche)

Damit das Programm den Spiegelserver selbst heraussucht, geben wir den Parameter -b mit. Dann liest das Programm die Spiegelserver selbst ein, und probiert alle durch. Den besten installiert er für sich selbst. 

sudo apt-mirror-updater -b
sudo apt-mirror-updater --find-best-mirror

sudo apt-mirror-updater -a
sudo apt-mirror-updater --auto-change-mirror
Mögliche Spiegelserver anzeigen

Um die möglichen Spiegelserver anzuzeigen, verwenden wir den Parameter -L. Dann liest das Programm die Spiegelserver-Listen ein, und zeigt uns die möglichen Spiegelserver. 

sudo apt-mirror-updater -c=<URL>
sudo apt-mirror-updater --change-mirror=<URL>
 

Fun

Fun

Asciiquarium installieren

Einleitung

Mit Asciiquarium haben wir unser eigenes Aquarium in unserem Terminal. Dieses Projekt hat keinen sinnhaften Grund, aber ist ganz witzig es sich mal anzuschauen. Es sollte daher nicht in Produktiv System verwendet werden, da dort auf eine Minimale Installation gesetzt werden sollte um wenig bis keine Einfalltore zu haben.

Installation

Zuerst müssen wir uns mit dem Terminal unseres Linux Server / Clients verbinden. Wir melden uns dort als root an damit wir nachher die Befehle ohne sudo absetzen können.

Im ersten Abschnitt müssen wir Term-Animation installieren. Dazu müssen wir ein paar Befehle absetzen. Zuerst installieren wir das Paket X.

apt install libcurses-perl -y

Dann navigieren wir in das Verzeichnis /tmp, laden die benötigten Dateien herunter und entpacken diese. Im Anschluss navigieren wir in das Verzeichnis.

cd /tmp
wget http://search.cpan.org/CPAN/authors/id/K/KB/KBAUCOM/Term-Animation-2.6.tar.gz
tar -zxvf Term-Animation-2.6.tar.gz
cd Term-Animation-2.6

Als nächsten Schritt führen wir das Makefile Perl Skript aus und schließen dann im Abschluss die Installation ab.

perl Makefile.PL && make && make test
make install

 Jetzt kümmern wir uns darum das wir Asciiquarium installieren. Dazu wechseln wir wieder in das /tmp Verzeichnis und laden das Perl Skript herunter und entpacken dieses wieder, kopieren es in das /usr/local/bin Verzeichnis und passen die Berechtigungen an, damit das Skript ausführbar ist.

cd /tmp
wget --no-check-certificate http://www.robobunny.com/projects/asciiquarium/asciiquarium.tar.gz
tar -zxvf asciiquarium.tar.gz
cp asciiquarium /usr/local/bin/
chmod 0755 /usr/local/bin/asciiquarium

Wenn wir jetzt unser Aquarium begutachten wollen, starten wir es mit dem Befehl asciiquarium.

asciiquarium1.JPG


Server Installation

Server Installation

LAMP Installation (MySQL, Apache, PHP)

Einleitung

In dieser Anleitung beschreibe ich kurz wie wir einen LAMP Webserver installieren.
Ein LAMP Webserver ist eine Installationskombination von Apache, MySQL / MariaDB und PHP.


Voraussetzungen

Um diese Installation durchführen zu können sind folgende Voraussetzungen gegeben:


Apache Webserver Installation

Um den Apache Webserver zu installieren, aktualisierst du zuerst die Paketquellen und installierst ggf. Updates und entfernst nicht mehr benötigte Pakete.

sudo apt-get update && apt-get upgrade -y && apt-get autoremove -y

Als nächstes installierst du den Apache2 Webserver.

sudo apt install apache2 -y

Du kannst jetzt die Installation mit dem Befehl überprüfen.

Wenn du eine UFW Firewall mit installiert und aktiviert hast, musst du die Ports auf der Firewall freigeben!

sudo ufw allow 80/tcp && \
sudo ufw allow 443/tcp && \
sudo ufw reload

MariaDB Datenbank Installation

Um jetzt die MariaDB Datenbank zu installieren aktualisierst du zuerst wieder die Paket Quellen, installierst Updates und entfernst nicht mehr benötigte Pakete. 

sudo apt-get update && apt-get upgrade -y && apt-get autoremove -y

Als nächstes installierst du jetzt die MariaDB Datenbank.

sudo apt install mariadb-server -y

Und jetzt führen wir ein Skript aus. Dieses lässt uns Sicherheitseinstellungen für unseren Datenbank Server einstellen. Dieses öffnen wir mit folgendem Befehl

mysql_secure_installation

Hier werden einige Dinge abgefragt. Diese Einstellungen werden wir jetzt gemeinsam setzen.

Nun kannst du dich mit folgendem Befehl auf dem SQL Server einloggen. Du wirst nach der Eingabe nach dem Kennwort des Root Benutzers gefragt. Sobald du dieses eingegeben hast, kannst du SQL Befehle absetzen.

mysql -u root -p

Wenn kein Passwort für Root angegeben wurde, loggt sich der Benutzer automatisch auf dem Server ein.


Installation von PHP 7.4

Um unsere Installation abzuschließen, installieren wir jetzt PHP7.4

PHP ist eine Serverseitige Programmiersprache. Damit können Befehle direkt auf dem Server ausgeführt werden, z.B. werden Datenbank Abfragen häufig über PHP durchgeführt.

sudo apt install php7.4 php7.4-cli php7.4-common php7.4-curl php7.4-gd php7.4-intl php7.4-json php7.4-mbstring php7.4-mysql php7.4-opcache php7.4-readline php7.4-xml php7.4-xsl php7.4-zip php7.4-bz2 libapache2-mod-php7.4 -y

Du hast jetzt erfolgreich PHP 7.4 mit Modulen installiert!


Installation von PHP 8.0

Um unsere Installation abzuschließen, installieren wir jetzt PHP7.4

PHP ist eine Serverseitige Programmiersprache. Damit können Befehle direkt auf dem Server ausgeführt werden, z.B. werden Datenbank Abfragen häufig über PHP durchgeführt.

sudo apt install php8.0 php8.0-cli php8.0-common php8.0-curl php8.0-gd php8.0-intl php8.0-mbstring php8.0-mysql php8.0-opcache php8.0-readline php8.0-xml php8.0-xsl php8.0-zip php8.0-bz2 libapache2-mod-php8.0 -y

Du hast jetzt erfolgreich PHP 8.0 mit Modulen installiert!


Optional: Installation von phpMyAdmin

Du kannst Optional auch phpMyAdmin installieren um deine Datenbank über eine Weboberfläche zu verwalten.

Als erstes wechselst du in das Verzeichnis in dem du phpMyAdmin ablegen möchtest.

cd /var/www

Nun lädst du das Verpackte Archiv mit den Dateien für phpMyAdmin herunter. 

wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip -O phpmyadmin.zip

Als nächstes entpackst du das ZIP Archiv und löschst das alte Verzeichnis.

sudo unzip phpmyadmin.zip && sudo rm phpmyadmin.zip

Nun veränderst du den Namen des Ordners in phpMyAdmin.

mv phpMyAdmin-*-all-languages phpmyadmin

Jetzt veränderst du die Berechtigungen auf das Verzeichnis.

sudo chmod -R 0755 phpmyadmin

Und damit wir dann über den Web Browser auf phpMyAdmin zugreifen können, erstellen wir eine Konfigurationsdatei für den Apache2 Webserver.

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Dort fügst du folgende Konfiguration ein.

Alias /phpmyadmin /var/www/phpmyadmin

<Directory /var/www/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
</Directory>

<Directory /var/www/phpmyadmin/templates>
    Require all denied
</Directory>
<Directory /var/www/phpmyadmin/libraries>
    Require all denied
</Directory>
<Directory /var/www/phpmyadmin/setup/lib>
    Require all denied
</Directory>

Sobald du mit der Tastenkombination STRG + X und danach Y die Datei gespeichert hast, aktivieren wir jetzt die Konfigurationsdatei.

sudo a2enconf phpmyadmin && sudo systemctl reload apache2

Um die Installation abzuschließen, erstellen wir temporäres Verzeichnis im phpMyAdmin Verzeichnis und vergeben für dieses die entsprechende Berechtigung.

sudo mkdir /var/www/phpmyadmin/tmp/ && sudo chown -R www-data:www-data /var/www/phpmyadmin/tmp/

Du kannst dich nun mit den entsprechenden Datenbank Benutzern anmelden. Wenn sich phpMyAdmin auf dem selben Server wie die Datenbank befindet, musst du keinen Server angeben und du kannst dich mit einem Benutzer anmelden mit dem Host localhost. Kannst dich also auch als root anmelden. 

Server Installation

Pi-hole installieren

Einleitung

Pi-hole ist ein kleiner Ad Blocker der als DNS Server arbeitet. Alle Anfragen die üblicherweise an einen Google DNS / Cloudflare DNS getätigt werden, werden über das Pi-hole gesteuert. Dieser filtert die Antworten von Google und Co. nach Einträgen die als Werbung markiert sind. So ist es möglich das du im gesamten Netzwerk weniger bis keine Werbung mehr hast.

Installation

Es gibt 4 Wege Pi-hole zu installieren, alle werden hier beschrieben. Du musst dem Pi-hole eine Statische IP-Adresse geben damit dieser arbeiten kann. Du trägst später beim DHCP Server die IP-Adresse des Pi-hole's an. Wenn sich ein Client eine IP-Adresse zieht, erhält er zugleich die IP-Adresse des DNS Servers und alle Anfragen werden dann über das Pi-hole gesteuert. 

Automatische Installation

Wenn du Pi-hole sich automatisch installieren lassen möchtest, musst du nur den unten stehenden Befehl verwenden.

curl -sSL https://install.pi-hole.net | bash

Es wird hier der eigentliche Pi-hole Dienst installiert sowie ein leichtgewichtiger lighttpd Webserver installiert. Bei der Installation wirst du unter anderem auch gefragt ob ein Web Server erwünscht ist. 

Am Ende der Installation wird dir das Administrator Kennwort angezeigt, mit diesem meldest du dich im Web Interface an um Konfigurationen vorzunehmen. 

Repository klonen und Skript ausführen

Als zweiten Weg kannst du das Repository von Github klonen und das entsprechende Installationsskript ausführen.

git clone --depth 1 https://github.com/pi-hole/pi-hole.git Pi-hole
cd "Pi-hole/automated install/"
sudo bash basic-install.sh
Installer herunterladen und ausführen

Wahlweise kannst du auch den dritten Weg wählen und den Installer herunterladen und ausführen um den Installationsprozess zu starten.

wget -O basic-install.sh https://install.pi-hole.net
sudo bash basic-install.sh
Installation über Docker

Als letzte Möglichkeit kannst du auch zu einer Installation über Docker tendieren. Die docker-compose.yml Datei findest du unten stehend. 

version: "3"

services:
  pihole:
    container_name: server_pihole
    image: pihole/pihole:latest
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "67:67/udp"
      - "80:80/tcp"
    environment:
      TZ: 'Europe/Berlin'
      WEBPASSWORD: 'Pa$$w0rd'
    volumes:
      - './etc-pihole:/etc/pihole'
      - './etc-dnsmasq.d:/etc/dnsmasq.d'
    cap_add:
      - NET_ADMIN
    restart: unless-stopped

Pi-hole CLI Befehle

Server Installation

Samba Netzwerkfreigabe erstellen

Einleitung

Du kannst mit Samba einen Server erstellen, auf dem du deine  Dokumente in einem Netzwerkfreigabe Ordner ablegen kannst. Diesen kannst du dann unter Linux, Windows, Mac OS integrieren und so von jedem Gerät Netzwerkweit auf deine Dokumente zugreifen.

Achtung: Samba 1.0 zählt als veraltet und sollte daher nur in lokalen abgesicherten Netzwerken installiert werden. 


Installation

Um die Installation durchführen zu können, gibt es folgende Voraussetzungen:

Zuerst installieren wir das Paket samba

sudo apt-get install samba

Als zweiten Schritt sichern wir die derzeitige Samba Konfiguration. Dieses Backup dient zum eventuellen Zurückspielen auf den Ursprungszustand.

sudo mv /etc/samba/smb.conf /etc/samba/smb.backup

Und nun konfigurieren wir den Samba Server. Du erstellst und öffnest die neue Konfigurationsdatei im nächsten Schritt.

sudo nano /etc/samba/smb.conf

Dort fügst du die Konfiguration ein und speicherst die Datei mit der Tastenkombination STRG + X und danach Y .

[global]
workgroup = smb
security = user
map to guest = Bad Password

[homes]
comment = Home Directories
browsable = no
read only = no
create mode = 0750

[share]
path = /var/share/
public = yes
writable = yes
comment = smb share
printable = no
guest ok = yes

In der Konfigurationsdatei kannst du dann noch den Pfad zur Dateiablage verändern oder auch den Namen der Freigabe von share auf einen anderen beliebigen setzen.

Info: Du verbindest das Netzlaufwerk dann über den UNC Namen mit dem Freigabe Namen dahinter.
Beispiel: \\192.168.1.13\share

Um dann Daten abzulegen muss der Ordner ggf. erst erstellt werden und dann mit Schreibe und Lese Berechtigungen für Public versehen werden.

Die Berechtigungen für die Benutzer werden dann über die Samba Freigabe gesteuert. 

sudo mkdir /var/share sudo chmod -R 777 /var/share

Und als letztes starten wir den Samba Service neu. Samba liest dann die neue Konfigurationsdatei ein, und die Freigabe ist dann erreichbar. 

sudo systemctl restart smbd.service

Du kannst den Status des Samba Service auch überprüfen. Setze dazu den folgenden Befehl ab:

sudo systemctl status smbd.service
Server Installation

Linux automatisch aktualisieren

Einleitung

In diesem Beitrag gehe ich drauf ein, wie wir mithilfe des Paketes cron-apt unseren Debian Server automatisch aktualisieren. Damit können wir sicherstellen, dass wenn wir im Urlaub oder nicht anwesend sind, unser Server immer auf dem aktuellen Stand ist.


Installation des Paketes

Dazu müssen wir zuerst die Paketquellen aktualisieren und gegebenenfalls Updates installieren, wenn diese vorhanden sind.

sudo apt update && sudo apt upgrade -y

Im nächsten Schritt installieren wir jetzt das Paket cron-apt.

Dazu geben wir folgenden Befehl in die Konsole ein.

sudo apt install cron-apt -y

Konfiguration von cron-apt

Um unsere Updates automatisch installieren zu lassen, müssen wir cron-apt jetzt nur noch konfigurieren. Damit wird dann das Skript jeden Morgen um 4 Uhr Morgens gestartet, und spielt die Updates ein. (Die Uhrzeit kann noch geändert werden).

Wir öffnen zuerst die Standardkonfiguration. Wir öffnen die Datei 3-download mit einem Editor unserer Wahl. Ich verwende hier nano.

sudo nano /etc/cron-apt/action.d/3-download

In dieser Datei befindet sich schon ein Befehl. Dieser Befehl wird automatisch ausgeführt, wenn, cron-apt gestartet wird. Dies geschieht dann automatisch, wenn die festgelegte Uhrzeit erreicht wird, oder wenn wir den Befehl sudo cron-apt -s eingeben.

Die Datei sollte folgenden Inhalt haben:

autoclean -y
dist-upgrade -d -y -o APT::Get::Show-Upgraded=true

Bei diesem Befehl werden die allgemeinen Updates nur heruntergeladen, aber nicht installiert! Wenn wir möchten, dass die Updates automatisch installiert werden, müssen wir nur den Parameter -dentfernen. Dieser gibt an, dass die Updates nur heruntergeladen werden, und wir die Installation selbst in die Hand nehmen müssen.

Wenn die Updates automatisch installiert werden sollen, und man darüber wegsieht, dass es dann zu Problemen kommen kann, durch beispielsweise zurückgezogene Pakete, kann man den nachstehenden Befehl anstelle des vorhandenen verwenden.

autoclean -y
dist-upgrade -y -o APT::Get::Show-Upgraded=true

Wenn wir beispielsweise wollen, dass die normalen Updates nicht automatisch installiert werden, aber Security Updates automatisch installiert werden sollen, können wir die Durchläufe durch eigene Skripte anpassen. Dazu müssen wir nur in demselben Verzeichnis eine Datei mit einer fortlaufenden Nummer und einer Beschreibung erstellen.

sudo nano /etc/cron-apt/action.d/10-securityupdates

In der Datei fügen wir folgenden Inhalt ein:

upgrade -y -o APT::Get::Show-Upgraded=true

Damit jetzt unsere Datei auch verwendet wird, wenn cron-apt startet, müssen wir noch eine Konfigurationsdatei anlegen. Dazu legen wir wieder eine Datei mit dem Namen unser vorherigen angelegten Datei an. Dabei verändert sich nur der Ordner, in dem die Datei angelegt wird.

sudo nano /etc/cron-apt/config.d/10-securityupdates

Dort fügen wir folgenden Code ein. Dabei müssen wir aber die entsprechenden Pfade zu den Paketquellen Listen angeben.

OPTIONS="-q -o Dir::Etc::SourceList=/etc/apt/sources.list.d/security.list -o Dir::Etc::SourceParts=\"/dev/null\""

Ausführungszeit ändern

Möchten wir jetzt zuletzt noch ändern, wann cron-apt ausgeführt wird, müssen wir die entsprechende Konfigurationsdatei öffnen. Dazu verwenden wir den folgenden Befehl:

sudo nano /etc/cron.d/cron-apt

Wir können dort jetzt die Zeit angeben wann cron-apt ausgeführt werden soll. Die Zeit geben wir über Syntax der Crontabs / Cronjobs an.

Wenn wir jetzt überprüfen wollen, ob unser Programm sauber durchläuft, können wir es manuell starten, mit dem folgenden Befehl.

sudo cron-apt -s

Im Weiteren legt das Programm auch Logfiles ab. Diese können wir unter /var/log/cron-apteinsehen.

Server Installation

HTTPS Reverse Proxy mit Nginx konfigurieren

Einleitung

Sobald wir Lokal Webdienste erstellen, möchten wir diese vielleicht auch über ein TLS Zertifikat verschlüsseln. Dazu verwenden wir selbst signierte Zertifikate und einen Nginx Webserver. Dadurch ist es möglich, dass wir unsere Web-Dienste über HTTPS erreichbar machen können. 

Wie wir TLS Zertifikate erstellen können, wird hier genauer erklärt.

Nginx installieren

Im ersten Schritt müssen wir auf unserem Debian Server das Paket Nginx installieren. Dazu verwenden wir folgenden Befehl:

apt update && apt upgrade -y && apt install nginx -y

Nginx Konfiguration anpassen

Jetzt erstellen wir die Nginx Konfigurationsdatei einmal neu. Im Anschluss öffnen wir die Konfigurationsdatei und fügen den nachstehenden Inhalt in die Datei ein.

rm /etc/nginx/sites-enabled/default
nano /etc/nginx/sites-enabled/default
server {
   listen 80;
   server_name host.name;
   return 301 https://die.domain$request_uri;
 }

server {
   listen 443 ssl;
   server_name host.name;
   ssl_certificate  /pfad/zum/zertifikat.csr;
   ssl_certificate_key  /pfad/zum/zertifikat.key; 
   ssl_prefer_server_ciphers on;

   location / {
        proxy_pass http://localhost:<port>;

        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
	}
}

Sobald wir diesen Inhalt in die Datei eingefügt haben, brauchen wir jetzt nur noch einmal den Nginx Dienst neu zu starten. 

systemctl restart nginx

Sobald der Dienst neu gestartet ist, überprüfen wir, ob der Dienst ordnungsgemäß gestartet ist. Dies können wir mit dem nachstehenden Befehl überprüfen. 

systemctl status nginx

nginx_reverse_proxy_1.JPG

Server Installation

Nginx Reverse Proxy - WebSocket verliert die Verbindung

Einleitung

Konfigurieren wir unseren Nginx Webserver so, dass dieser als Reverse Proxy arbeitet, können wir bei einigen Web-Anwendungen das Problem haben, dass unser Client die Verbindung zum WebSocket verliert.

Konfiguration

Um dieses Problem zu beseitigen, müssen wir nur lediglich unsere Nginx-Konfiguration anpassen.

   location / {
        proxy_pass http://localhost:8080;

        proxy_http_version      1.1;
        proxy_set_header 		Upgrade $http_upgrade;
        proxy_set_header 		Connection "upgrade";
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
	}

Im Anschluss starten wir nur noch den Nginx Webserver neu. Danach sollte der WebSocket die Verbindung offen halten.

Server Installation

Apache2 SSL Virtualhost SSL Konfiguration

Einleitung

In diesem Beitrag befindet sich eine Version des Apache2 Virtualhost für die SSL Verbindung.

Konfigurationsdatei

  <VirtualHost *:80>
    ServerName FQDN
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    ErrorLog  /error.log
    LogLevel warn
    CustomLog  /access.log combined
    ServerSignature On
</VirtualHost>

  <VirtualHost *:443>
    ServerName FQDN
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    ErrorLog  /error.log
    LogLevel warn
    CustomLog  /access.log combined
    ServerSignature On
        SSLEngine on
        SSLCertificateFile /cert/cert.crt
        SSLCertificateKeyFile /cert/cert.key
</VirtualHost>

Service Konfiguration

Service Konfiguration

E-Mail bei Linux Updates

Einleitung

In Linux kannst du mit Hilfe von Apticron automatisiert E-Mail Benachrichtigungen versenden wenn Updates verfügbar sind. Du kannst dort auch einstellen das du informiert werden möchtest, selbst wenn keine Updates verfügbar sind. 

Einrichtung

Im ersten Schritt verbindest du dich mit deinem Server damit du Konsolenzugriff hast. Dort aktualisierst du einmal die Paketquellen und installierst mögliche Updates.

sudo apt update && sudo apt upgrade -y

Im nächsten Schritt installierst du Apticron und sendmail auf deinem Rechner. 

sudo apt install apticron sendmail -y

Als nächstes kopierst du die Konfigurationsdatei in das Apticron Verzeichnis damit du diese modifizieren kannst.

sudo cp /usr/lib/apticron/apticron.conf /etc/apticron/apticron.conf

Diese Konfigurationsdatei öffnest du in einem Editor deiner Wahl, ich verwende dazu nano.

nano /etc/apticron/apticron.conf

In dieser Datei gibst du Parameter an wie die E-Mail aussehen soll, welche Absender Adresse er verwenden soll und wer der Empfänger ist.

# apticron.conf
#
# The values set in /etc/apticron/apticron.conf will override the settings
# in this file.

#
# Set EMAIL to a space separated list of addresses which will be notified of
# impending updates. By default the root account will be notified.
#
EMAIL="<empfänger>@<domain>"

#
# Set DIFF_ONLY to "1" to only output the difference of the current run
# compared to the last run (ie. only new upgrades since the last run). If there
# are no differences, no output/email will be generated. By default, apticron
# will output everything that needs to be upgraded.
#
# DIFF_ONLY="1"
#
DIFF_ONLY="0"

#
# Set LISTCHANGES_PROFILE if you would like apticron to invoke apt-listchanges
# with the --profile option. You should add a corresponding profile to
# /etc/apt/listchanges.conf
#
# LISTCHANGES_PROFILE="apticron"
#
# By default apt-listchanges is run with no profile
#
LISTCHANGES_PROFILE=""

#
# From hostname manpage: "Displays  all FQDNs of the machine. This option
# enumerates all configured network addresses on all configured network inter‐
# faces, and translates them to DNS domain names. Addresses that cannot be
# translated (i.e. because they do not have an appropriate  reverse DNS
# entry) are skipped. Note that different addresses may resolve to the same
# name, therefore the output may contain duplicate entries. Do not make any
# assumptions about the order of the output."
#
# By default only the first FQDN is used
#
# ALL_FQDNS="1"
ALL_FQDNS="0"

#
# Set SYSTEM if you would like apticron to use something other than the output
# of "hostname -f" for the system name in the mails it generates. This option
# overrides the ALL_FQDNS above.
#
# SYSTEM="foobar.example.com"
#
SYSTEM="<FQDN>"

#
# Set IPADDRESSNUM if you would like to configure the maximal number of IP
# addresses apticron displays. The default is to display 1 address of each
# family type (inet, inet6), if available.
#
IPADDRESSNUM="1"

#
# Set IPADDRESSES to a whitespace separated list of reachable addresses for
# this system. If unset or empty, apticron will try to work these out using
# the "ip" command.
#
# IPADDRESSES="192.0.2.1 2001:db8:1:2:3::1"
#
IPADDRESSES=""

#
# Set NOTIFY_HOLDS="0" if you don't want to be notified about new versions of
# packages on hold in your system. The default behavior is downloading and
# listing them as any other package.
#
# NOTIFY_HOLDS="0"
#
NOTIFY_HOLDS="1"

#
# Set NOTIFY_NEW="0" if you don't want to be notified about packages which
# are not installed in your system. Yes, it's possible! There are some issues
# related to systems which have mixed stable/unstable sources. In these cases
# apt-get will consider for example that packages with "Priority:
# required"/"Essential: yes" in unstable but not in stable should be installed,
# so they will be listed in dist-upgrade output. Please take a look at
# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=531002#44
#
# NOTIFY_NEW="0"
#
NOTIFY_NEW="1"

#
# Set NOTIFY_NO_UPDATES="1" if you want to be notified when there are no
# new versions. This is useful to assure you that apticron works well.
# By default notifications will be sent only when new versions are available.
#
# NOTIFY_NO_UPDATES="1"
#
NOTIFY_NO_UPDATES="1"

#
# Set CUSTOM_SUBJECT if you want to replace the default subject used in
# the notification e-mails. This may help filtering/sorting client-side e-mail.
# If you want to use internal vars please use single quotes here. Ex:
CUSTOM_SUBJECT='[apticron] $SYSTEM: $NUM_PACKAGES package update(s)'
#
# CUSTOM_SUBJECT=""

#
# Set CUSTOM_NO_UPDATES_SUBJECT if you want to replace the default subject used
# in the no update notification e-mails. This may help filtering/sorting
# client-side e-mail.
# If you want to use internal vars please use single quotes here. Ex:
CUSTOM_NO_UPDATES_SUBJECT='[apticron] $SYSTEM: no updates'
#
# CUSTOM_NO_UPDATES_SUBJECT=""

#
# Set CUSTOM_FROM if you want to replace the default sender by changing the
# 'From:' field used in the notification e-mails.
#
 CUSTOM_FROM="<sender>@<domain>"

# Set GPG_ENCRYPT="1" if you want to encrypt the mail being send to
# $EMAIL. apticron will use gpg and the public key of the recipient to encrypt
# the mail. Please note that the $EMAIL value above can't be an alias, since
# gpg will trust it to encrypt the message.
#
GPG_ENCRYPT="0"

Apticron verwendet immer die Datei im /etc/apticron Verzeichnis wenn diese existiert. Sonst nutzt er die aus dem /usr/lib/apticron Verzeichnis.

Wenn du überprüfen möchtest ob Apticron funktioniert, setze folgenden Befehl ab.

sudo apticron
Service Konfiguration

E-Mail Benachrichtigung bei SSH Login

Einleitung

Wenn wir einen Linux Server absichern wollen, gehört eine stetige Kontrolle aus Sicherheitsgründen auch dazu. Hier konfigurieren wir eine E-Mail Benachrichtigung die abgesendet wird sobald sich jemand per SSH auf dem Server einloggt.

Durchführung

Zuerst müssen wir das Paket s-nail installieren.

sudo apt install s-nail -y

Im zweiten Schritt erstellen wir ein Skript welches ausgeführt wird sobald sich jemand auf dem Server einloggt.

nano /opt/skripte/ssh-login.sh

Dort fügen wir folgenden Inhalt ein, das Skript kann natürlich auch gerne angepasst werden.

#!/bin/bash
echo "----------------------------------------------------------------"
echo "Login auf $(hostname) am $(date +%Y-%m-%d) um $(date +%H:%M)"
echo "Benutzer: $USER"
echo "----------------------------------------------------------------"
pinky

Jetzt verändern wir die Datei /etc/profile und fügen dort den Aufrufer des Skriptes hinzu

/opt/skripte/ssh-login.sh | mailx -s "SSH Login auf <server>" <empfänger>@<domain>

Als letztes passen wir noch die Berechtigungen des Skriptes an.

sudo chmod 755 /opt/skripte/ssh-login.sh

Die E-Mails werden jetzt bei einer Anmeldung automatisch an die entsprechende E-Mail Adresse versendet.

Service Konfiguration

Port von sendmail ändern

Einleitung

Manchmal stößt man auf folgendes Problem: Auf einem Server läuft ein Mailserver, z.B. in einem Docker Container und dazu möchte man mit sendmail ggf. Mails versenden. Dazu müssen wir den Port von sendmail verändern. 

Anwendung

Zuerst verbinden wir uns mit unseren Server damit wir Konsolenzugriff haben. Dort öffnen wir mit einem Editor unserer Wahl die Konfigurationsdatei.

sudo nano /etc/mail/sendmail.mc

Dort suchen wir nach folgenden Zeilen:

dnl DAEMON_OPTIONS(`Family=inet6, Name=MTA-v6, Port=smtp, Addr=::1')dnl
DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl

Dort ersetzt du smtp durch die Port Nummer deiner Wahl.

dnl DAEMON_OPTIONS(`Family=inet6, Name=MTA-v6, Port=25000, Addr=::1')dnl
DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=25000, Addr=127.0.0.1')dnl

Als nächstes lässt du dir die Konfigurationsdatei neu erstellen.

sudo m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

Und als letztes startest du sendmail neu, dann sollte dein sendmail jetzt den neuen Port verwenden.

sudo systemctl restart sendmail
Service Konfiguration

SSH Root Login verbieten

Einleitung

Damit wir einen sicheren Linux Server haben, können wir den Root Zugang über SSH auf unserem Server deaktivieren. Wenn Server angegriffen werden, wird zuerst immer der root Benutzer verwendet da dieser auf jedem System eingerichtet ist und volle Berechtigungen hat. 

Login deaktivieren

Um den Root Login zu deaktivieren, müssen wir die Konfigurationsdatei des SSH Services editieren. Dazu navigieren wir in das Verzeichnis vom SSH Dienst.

cd /etc/ssh

Dort öffnen wir mit dem Editor unserer Wahl die Konfigurationsdatei.

nano sshd_config

Dort müssen wir nach PermitRootLogin suchen. Wir müssen dort eine Raute vor den Eintrag hinzufügen damit dieser aus kommentiert ist. 

Dann starten wir den SSH Server neu. 

sudo systemctl restart ssh

Jetzt ist kein Login als Root mehr möglich!

Stelle vorher sicher das ein weiterer Benutzer angelegt ist, mit dem man sich weiterhin am Server anmelden kann.

Service Konfiguration

Apache - Error 404 "Objekt nicht gefunden"

Einleitung

In diesem Beitrag erläutere ich kurz, wie wir das Problem mit dem Apache Fehler 404 "Objekt nicht gefunden", beheben können. Das Problem kann mehrere Ursachen habe, aber diese, die mir aktuell untergekommen sind, zähle ich hier auf. 

Apache_Error_404_Object_Not_Found.png

Fehler beheben

1. Berechtigungen falsch gesetzt

Ein Fehler kann es sein, dass es nicht möglich ist aufgrund fehlender Berechtigungen die Webserver Dateien anzuzeigen. Zu Testzwecken können wir ruhig mal die Berechtigung auf 777 setzen. In Produktivumgebungen sollten die Berechtigungen so gesetzt werden, dass nur die Berechtigungen eingeräumt werden, welche benötigt werden. 

Zu den, wie oben angegebenen Testzwecken kann man es mit diesen Berechtigungen mal ausprobieren, ob es dann funktioniert. 

chmod 777 -R /pfad/zum/webroot

Wir können dann auch noch den Besitzer der Dateien / Ordner ändern. Apache verwendet Standard-gemäß den Benutzer www-data. Diesem Benutzer werden wir gleich die Besitzerrechte des Ordners verpassen. Dieser kann dann alles mit dem Verzeichnis anstellen. 

chown -R www-data:www-data /pfad/zum/webroot
2. Fehlende .htaccess Datei

Ein kleiner, aber dennoch tragischer Fehler kann eine fehlende .htaccess Datei sein. Manchmal kann es bei einem Kopiervorgang vorkommen, dass wir vergessen die .htaccess Datei mitzukopieren. Falls diese fehlt, kann der Webserver manchmal Webserver Dateien nicht öffnen oder PHP-Skripte ausführen.

Die .htaccess Datei enthält Anweisungen für den Apache-Webserver. Ohne diese Datei kann ein Apache Webserver z.B. nicht mit Redirects umgehen. 

 

Terminal Befehle

Terminal Befehle

Arbeitsspeicher im Cache freigeben

Einleitung

Wenn du einen Linux Server länger in Betrieb hast, kann es sein das dein Monitoring System anschlägt und meldet das kein Arbeitsspeicher mehr frei ist. Der Arbeitsspeicher befindet sich dennoch nur im Cache. 

Durchführung geschieht auf eigene Gefahr!


Erklärung

Wenn ein Linux System arbeitet, schreibt das System häufig verwendete Dateien und Daten in den Cache. So muss nicht immer die Festplatte verwendet werden. Dieses ermöglicht eine höhere Geschwindigkeit des Servers. 

Der Cache beeinträchtigt das Linux System aber nicht weiter, wenn das Linux System merkt das es mehr Arbeitsspeicher braucht, gibt es automatisch mehr Arbeitsspeicher frei. 


Befehl

Mithilfe des folgenden Befehls wird der Cache wieder freigegeben. Der Server nimmt dann nur den Arbeitsspeicher den er momentan braucht.

sync && echo 3 > /proc/sys/vm/drop_caches

Falls du sehen möchtest wie sich die Auslastung des Arbeitsspeichers verändert, kannst du jeweils ein free ansetzen. Dieses zeigt an wie viel Arbeitsspeicher der Server gesamt, benutzt und frei hat. Dieses wird dann wieder in den Hauptspeicher und SWAP aufgegliedert. 

free && sync && echo 3 > /proc/sys/vm/drop_caches && free

Erklärung Befehl

Der free Befehl sorgt dafür eine Rückmeldung über den freien, verwendeten und gesamten Arbeitsspeicher anzuzeigen.

sync schreibt die Cache Dateien auf die Festplatte.

echo 3 > /proc/sys/vm/drop_caches schreibt die Zahl 3 in die Datei drop_caches was zur Folge hat, das der Cache wieder freigegeben wird.

Terminal Befehle

Linux Version anzeigen lassen

Einleitung

Es gibt mehrere Wege die aktuelle Linux Version anzeigen zu lassen. Alle Wege die vorgestellt werden, werden über das Terminal durchgeführt. So kannst du diese auch ausführen wenn du über SSH / Telnet mit dem Server verbunden bist. 

Linux Version und die Distribution anzeigen

Wenn du die Linux Version und die Distribution anzeigen lassen möchtest, musst du einen entsprechenden Befehl absetzen. Diesen Befehl kannst du so gut wie auf jedem Linux System eingeben.

cat /etc/issue

Linux Installation 32 oder 64-bit?

Wenn du jetzt herausfinden möchtest ob es sich bei der Linux Installation um eine 32 oder 64-bit Version handelt, kannst du den entsprechenden Befehl absetzen. Dieser gibt dir ein paar Grundinformationen über das System aus. Unter anderem die entsprechende Befehlssatz Architektur. 

uname -a

Linux Systeminformation übersichtlich darstellen

Als letztes kannst du die Systeminformationen dir schön darstellen lassen. Dazu verwenden wir das Tool neofetch. Dieses musst du erst nachinstallieren. 

Ubuntu

sudo add-apt-repository ppa:dawidd0811/neofetch
sudo apt-get update
sudo apt-get install neofetch -y

Debian

sudo apt-get install neofetch

Fedora

sudo dnf install neofetch

Wenn du das Tool nun installiert hast, kannst du mit dem Befehl neofetch dir die Systeminformationen anzeigen lassen.

linuxsysteminfo1.JPG

Terminal Befehle

Mit sendmail Mails verschicken

Einleitung

Es ist möglich mit Linux Mails direkt aus der Kommandozeile zu versenden. Administratoren oder Programmierer schicken sich damit häufig Status Meldungen oder andere Nachrichten. Auf vielen Webseiten wird häufig dazu die PHP Funktion sendmail verwendet. Dazu brauchst du einen E-Mail Account bei einem Provider deiner Wahl. Wenn der Mail-Server im gleichen Netz wie der Web Server steht, und keine Kommunikation über das Internet erfolgen muss, kann bei richtiger Kommunikation ohne einen E-Mail Account, eine E-Mail versendet werden.

sendmail gilt als veraltet und sollte dementsprechend mit Bedacht verwendet werden.


Voraussetzungen

Um jetzt E-Mails mit sendmail über das Internet zu versenden benötigst du folgende Informationen zu deinem E-Mail Account:

E-Mail versenden

Wenn du E-Mails versenden möchtest kannst du das über unterschiedliche Möglichkeiten machen. Alle gehen direkt von der Kommandozeile aus. Du musst also keine GUI oder sonstige Web Oberfläche öffnen.

Du benötigst um E-Mails zu versenden das Paket ssmtp. Dieses können wir einfach nachinstallieren.

sudo apt install ssmtp -y
E-Mail nur mit Betreff
echo "Subject: Test E-Mail" | sendmail mail@pc-wiki.de
E-Mail aus Datei lesen

Zuerst legen wir eine Datei an in dem sich der E-Mail Inhalt befindet.

nano email.txt

In dieser Textdatei fügst du den Text ein, den du gerne versenden möchtest. Den Betreff, E-Mail Adressen und den Nachrichten Text kannst du natürlich gerne ändern. Wichtig ist, das die Struktur so bestehen bleibt. 

Cc: mail@phil-un.de
Subject: E-Mail aus Datei
From: server@pc-wiki.de
Content-Type: text/html; charset="utf8"

<html>
<body>
<div style="
	background-color:
	#abcdef; width: 300px;
	height: 300px;
	">
</div>
  <h1>Status Meldung</h1>
  <p>Die E-Mails werden erfolgreich vom Server versendet!</p>
</body>
</html>

Zum Schluss müssen wir nur noch die E-Mail versenden. Dort kannst du den Empfänger natürlich wieder anpassen.

sendmail mail@pc-wiki.de < mail.txt
E-Mail über STMP Server versenden

Wenn du E-Mails über den SMTP Server versenden möchtest, um z.B. E-Mails über einen E-Mail Server zu versenden. Musst du die Login Daten in einer Konfigurationsdatei angeben. Öffne zuerst die Konfigurationsdatei

sudo nano /etc/ssmtp/ssmtp.conf

Dort fügst du folgenden Code ein. Die Login Daten sowie den Mail Server musst du noch anpassen.

UseSTARTTLS=YES
root=server@phil-un.de
mailhub=mail.server.de:587
AuthUser=<server>
AuthPass=<Pa$$w0rd>

Und nun versendest du eine E-Mail mit dem folgenden Befehl

 ssmtp mail@pc-wiki.de < mail.txt

Wenn eine Fehlermeldung erscheint, kannst du diese nutzen um den Fehler zu finden.
Beispiel:  ssmtp: Authorization failed


Terminal Befehle

Skript ausführbar machen

Einleitung

In Linux kannst du grundlegend fremde Skripte nicht starten. Diese musst du dann quasi erst freigeben, dann können die Skripte ausgeführt werden. 

Skript freigeben

Wenn du ein Skript ausführbar machen möchtest, wechselst du in das Verzeichnis in dem sich das Skript befindet und setzt dann den Namen der Datei an das Ende. Dann kannst du das Skript ohne Probleme ausführen.

sudo chmod +x ./<name-des-skripts>
Terminal Befehle

Belegte Ports in Linux ausgeben

Einleitung

In diesem Beitrag beschreibe ich kurz, wie wir unter Linux uns ausgeben lassen können, welche Software oder Dienst einen bestimmten Port belegt. Dies ist wichtig, wenn, wie z. B.Starten einen neuen Dienst installieren möchten und wir beim Starten die Meldung erhalten, dass der Port belegt ist. Damit können wir dann feststellen, was die Ursache dafür ist.

Ursache herausfinden

Um die Ursache herauszufinden, warum ein Port schon verwendet ist, müssen wir nur das Terminal / Konsole öffnen und den folgenden Befehl eingeben. Dabei müssen wir nur <Port> durch die Port Nummer ersetzen. Wir erhalten dann eine Liste aller Anwendungen, die diesen Port nutzen.

ss -tunelp | grep <port>
Terminal Befehle

CPU Informationen und Auslastung im Terminal anzeigen

Einleitung

In diesem Beitrag erkläre ich kurz, wie wir in einem Linux Terminal einsehen können, welche CPU in unserem System verbaut ist, und wie die Auslastung der entsprechenden CPU ist. 

CPU-Informationen anzeigen

Damit wir die CPU Informationen anzeigt bekommen, müssen wir den folgenden Befehl eingeben. 

sudo cat /proc/cpuinfo | less

Wir erhalten jetzt die CPU Informationen pro Kern. Das heißt, entsprechend wie viele Kerne wir haben, bekommen wir so oft die Ausgabe in das Konsolenfenster ausgegeben. Mit der Taste schließen wir die Ansicht. 

Erweiterte CPU-Informationen anzeigen

Wenn wir erweiterte CPU-Informationen angezeigt bekommen möchten, müssen wir den Befehl lscpu verwenden. Dieser gibt in der Konsole eine erweiterte Ansicht über die CPU Informationen dar.

sudo lscpu

CPU Auslastung anzeigen

Um die CPU Auslastung unseres Linux Servers uns anzeigen zu lassen, können wir das Tool htop verwenden. Dieses kann man schnell über den Paketmanager nachinstallieren. 

Installation für Debian / Ubuntu sieht wie folgt aus:

sudo apt install htop -y

Nach der erfolgreichen Installation können wir durch den Befehl sudo htop das Tool öffnen. Wir erhalten dann eine detaillierte Übersicht über die verfügbaren Kerne und deren einzelnen Auslastung. 

sudo htop

htop_cpu_auslastung_information.png

Terminal Befehle

Hostnamen des Rechners / Servers ändern

Einleitung

In diesem Beitrag erläutere ich kurz, wie wir unter Linux den Hostnamen unseres Rechners / Servers ändern können. Dieser ist für DNS Auflösungen z.B. relevant.

Hostnamen ändern

Um den Hostnamen zu ändern, müssen wir lediglich ein Terminal Fenster öffnen und dort mit einem Benutzer anmelden, der sudo Privilegien besitzt.

Sobald wir dies getan haben, geben wir den nachstehenden Befehl ein. Dabei müssen wir nur den gewünschten Hostnamen in den Befehl eingeben.

sudo hostnamectl set-hostname <hostname>

 

Terminal Befehle

DNS auf Linux Rechner deaktivieren

Einleitung

Bei der Installation eines DNS-Servers kannes erforderlich sein, das der vorhandene DNS-Dienst deaktiviert werden muss.

Dienst deaktivieren

Dafür müssen wir nur den nachstehenden Code eingeben:

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
Terminal Befehle

Mit MariaDB-Client auf einen anderen SQL-Server verbinden

Einleitung

Neulich bin ich auf das Thema gestoßen, wie ich mithilfe des MariaDB-Clients, welchen ich unter Debian mit apt-install mariadb-client -y installieren kann, auf einen anderen SQL-Server mich verbinden kann. Hintergrund war die Installation von Zabbix auf einem anderen MariaDB-Server. 

Mit SQL-Server verbinden

Um die Verbindung durchzuführen, muss im Terminal nur der folgende Befehl eingegeben werden:

mysql -h <host> -u <user> -p <datenbank>

Es wird im Anschluss nach dem Kennwort für den Benutzer gefragt. Sobald dieses richtig eingegeben wurde, erscheint die SQL-Shell des entfernten Systems. Jetzt können wir Befehle auf unserer Datenbank absetzen.

Terminal Befehle

Verzeichnis und Dateien in ein ZIP-Archiv verschieben

Einleitung

In dieser Anleitung beschreibe ich kurz, wie wir unter Linux Dateien und Verzeichnisse in ein ZIP-Archiv verpacken können. SO können wir die Dateien schneller zwischen Servern verschieben oder die Datenmengen verkleinern. 

ZIP-Archiv erstellen

Paket installieren

Unter Umständen kann es sein, dass das benötigte Paket zum Erstellen von ZIP-Archiven noch nicht auf dem Betriebssystem installiert ist. Dafür setzen wir den nachstehenden Befehl ab:

apt install zip -y
Dateien verpacken

Um jetzt Dateien zu verpacken, setzen wir den folgenden Befehl ab. Wir müssen dort nur die Dateinamen anpassen. 

zip <ziel.zip> <DATEI1> <DATEI2> <DATEI3>
Ordner verpacken

Um Ordner zu verpacken, müssen wir den Befehl nur um den Parameter -r erweitern.

zip <ziel.zip> -r <pfad-zum-ordner>
Kompressionslevel ändern

Wir können auch die Kompression erhöhen, um die Dateigröße herunterzudrücken. Dabei können wir von Level 1 - 9 wechseln. Je höher das Level, desto kleiner wird die Datei, aber desto länger dauert der Vorgang. 

zip <ziel.zip> -9 -r <pfad-zur-datei>
Archiv mit Kennwort schützen

Es ist auch möglich, das Verzeichnis mit einem Kennwort zu schützen. Dazu ergänzen wir den Befehl um ein -e.

zip -e -r <ziel.zip> <pfad-zum-ordner>

 

Terminal Befehle

Partition von Debian im laufenden Betrieb vergrößern

Einleitung

In dieser Anleitung vergrößern wir die vorhandene Debian Partition auf das Maximum. So können wir die Daten-Partition unseres Servers vergrößern, um mehr Daten auf der Festplatte abzulegen. Dies ist besonders vorteilhaft in Virtualisierungsumgebungen. 

WICHTIG! Es sollte vorher in jedem Fall ein Backup vom Server gemacht werden! Unter Umständen kann die Veränderung der Partition zu Datenverlust führen!

Partition vergrößern

Im ersten Schritt müssen wir mit fdisk die Festplatte "öffnen":

sudo fdisk /dev/sda

Im nächsten Schritt arbeiten wir die Abfragen ab. Bei mir sieht das wie folgt aus:

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): d
Selected partition 1

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-83220, default 1): 64
Last cylinder, +cylinders or +size{K,M,G} (63-83220, default 83220): 83220

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Sobald das abgeschlossen ist, können wir mit dem Befehl lsblk überprüfen, ob die Erweiterung erfolgreich durchgeführt wurde. 

GRUB Bootloader

GRUB Bootloader

Standard Boot Partition ändern

Einleitung

In diesem Beitrag gehe ich drauf ein, wie wir beim GRUB Bootloader die Standard-Partition, die zum Booten verwendet wird, ändern können. Durch die Änderung würde das System, wenn es keine andere Eingabe erhält, automatisch das entsprechende Betriebssystem starten. 

Boot Reihenfolge ändern

Backup erstellen

Im ersten Schritt erstellen wir ein Backup unserer derzeitigen GRUB Konfiguration. Dies empfiehlt sich, da Änderungen am Bootloader auch zu Problemen führen kann. Und so können wir jederzeit wieder zurück auf die vorherige Konfiguration. 

Um ein Backup zu erstellen, führe den folgenden Befehl aus:

sudo cp /etc/default/grub /etc/default/grub.bak

Ps: Wir können natürlich auch einen anderen Zielnamen überlegen, falls wir z.B. schon eine Datei mit dem Namen haben, welche nicht überschrieben werden soll.

Backup kontrollieren

Um sicherzustellen, dass der Backup-Vorgang erfolgreich durchgeführt wurde, führen wir den folgenden Befehl aus, um uns den Dateiinhalt der Datei anzeigen zu lassen. 

cat /etc/default/grub.bak
Änderungen speichern

Um einmal die Änderungen zu registrieren, führen wir den folgenden Befehl aus:

sudo update-grub

Damit wird noch einmal die aktuelle GRUB Konfiguration in den Bootloader geschrieben. Jetzt werden wir aber die Änderungen durchführen und werden dementsprechend den Befehl nachher nochmal ausführen. 

Änderungen vornehmen

Um die Änderungen an der Datei vorzunehmen, müssen wir mit einem Editor unserer Wahl die GRUB Konfigurationsdatei öffnen. Ich verwende dafür den Terminal Editor nano

sudo nano /etc/default/grub

Hier müssen wir nur die Zahl hinter GRUB_DEFAULT= ändern. Hier geben wir die Position des Boot Eintrags ein, welchen wir verwenden möchten. Die Aufzählung beginnt bei 0. Sprich: Die erste Position ist 0, die zweite Position ist 1, und immer so weiter. 

Sobald wir die Änderungen durchgeführt haben, müssen wir wieder den GRUB Bootloader aktualisieren. Dabei wird dann die aktuelle Konfigurationsdatei eingelesen. 

sudo update-grub

GRUB Bootloader

Bootloader Hintergrund ändern

Einleitung

In diesem Beitrag gehe ich kurz drauf ein, wie wir im GRUB Bootloader das Hintergrundbild des Bootloaders ändern können.

Bild ändern

Dazu müssen wir einfach ein Bild, welches wir uns heruntergeladen haben, in ein Verzeichnis kopieren / verschieben. Diesen Pfad müssen wir uns jetzt merken oder aufschreiben. 

sudo cp index.jpeg /boot/grub/

Im Anschluss öffnen wir wieder die GRUB Konfigurationsdatei und fügen folgenden Code mit unserem Pfad hinzu.

GRUB_BACKGROUND="/boot/grub/index.jpeg"

Am Schluss müssen wir jetzt nur die GRUB Konfiguration wieder aktualisieren. 

sudo update-grub

Problembeseitigung

Problembeseitigung

Debian Fehlermeldung: dpkg: warning: 'ldconfig' not found in PATH or not executable.

Einleitung

Letztens bin ich bei der Installation eines Linux Servers auf folgendes Problem gestoßen.
Beim Installieren von Paketen bekam ich die oben angegebenen Fehlermeldung:

dpkg: warning: 'ldconfig' not found in PATH or not executable

In diesem Beitrag will ich kurz zeigen, wie wir das Problem beseitigen können.

Problem beseitigen

Im ersten Schritt müssen wir uns per SSH auf unseren Linux Server schalten, oder anderweitig den Shell-Zugriff erreichen. Im Anschluss geben wir die nachstehende Befehle nacheinander ein:

nano /root/.bashrc

Dort fügen wir in der letzten Zeile der Datei den folgenden Code ein und speichern die Datei:

export PATH=/sbin:/bin:/usr/bin:/usr/sbin:/usr/local/sbin:/usr/local/bin

Als letzten Schritt geben wir den folgenden Befehl ein:

. /root/.bashrc

Jetzt sollte es möglich sein, die Pakete wieder zu installieren!

Wireguard

Wireguard

Wireguard Client auf Debian installieren

Einleitung

In dieser Anleitung beschreibe ich kurz, wie in Debian einen Wireguard Client installieren und konfigurieren. Damit können wir eine VPN-Verbindung herstellen. 

Wireguard Client

Im ersten Schritt installieren wir das benötigte Paket.

sudo apt -y install wireguard-tools

Im zweiten Schritt öffnen wir die Konfigurationsdatei und fügen dort den Inhalt der Konfiguration ein.

[Interface]
# specify private key for client generated on WireGuard server
PrivateKey = 0PSYJtK2MtCx3GA0MEvEiuq3AiRLH8qqwRCupcO4A2M=
# IP address for VPN interface
Address = 172.16.1.5

[Peer]
# specify public key for server generated on WireGuard server
PublicKey = Q55BcMribgGGRJo4e1jDhEbXZyLPnLeMnMLAcRVsHVg=
# IP addresses you allow to connect
# on the example below, set WireGuard server's VPN IP address and real local network
AllowedIPs = 172.16.1.1, 10.0.0.0/24
# specify server's global IP address:port
# (acutually, example of IP below is for private range, replace to your own global IP)
EndPoint = 172.16.1.100:51820

Zum Schluss starten wir jetzt die Netzwerkkarte mit der Wireguard Konfiguration.

wg-quick up wg0