Linux
- Allgemein
- Fun
- Server Installation
- LAMP Installation (MySQL, Apache, PHP)
- Pi-hole installieren
- Samba Netzwerkfreigabe erstellen
- Linux automatisch aktualisieren
- HTTPS Reverse Proxy mit Nginx konfigurieren
- Nginx Reverse Proxy - WebSocket verliert die Verbindung
- Apache2 SSL Virtualhost SSL Konfiguration
- Service Konfiguration
- E-Mail bei Linux Updates
- E-Mail Benachrichtigung bei SSH Login
- Port von sendmail ändern
- SSH Root Login verbieten
- Apache - Error 404 "Objekt nicht gefunden"
- Terminal Befehle
- Arbeitsspeicher im Cache freigeben
- Linux Version anzeigen lassen
- Mit sendmail Mails verschicken
- Skript ausführbar machen
- Belegte Ports in Linux ausgeben
- CPU Informationen und Auslastung im Terminal anzeigen
- Hostnamen des Rechners / Servers ändern
- DNS auf Linux Rechner deaktivieren
- Mit MariaDB-Client auf einen anderen SQL-Server verbinden
- Verzeichnis und Dateien in ein ZIP-Archiv verschieben
- Partition von Debian im laufenden Betrieb vergrößern
- GRUB Bootloader
- Problembeseitigung
- Wireguard
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.
- Benutzerkategorie
- Operator
- Rechte
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.
- 1. Zahl = Besitzer
- 2. Zahl = Gruppe
- 3. Zahl = Andere
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.
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
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
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.
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:
- Zugriff auf die Konsole über SSH / Telnet / Lokal
- Root Rechte / sudo Rechte
- Debian 11
- Internet Anbindung des Servers
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.
- Zuerst Enter drücken (Wir haben bisher kein root Kennwort gesetzt für den Datenbank Benutzer)
- Debian 11: Die Unix Authentifizierung lehnen wir mit n ab.
- Jetzt Y eingeben. Wir setzen nun ein Kennwort für den Root Datenbank Benutzer.
- Als nächstes Y eingeben. Wir wollen alle unbekannten Benutzer löschen.
- Dann geben wir wieder Y ein. Wir unterbinden damit eine Anmeldung des Root Benutzers außerhalb unseres Servers.
- Und wieder geben wir Y ein. Damit wird die Test Datenbank und die Rechte dorthin gelöscht.
- Als letztes geben wir wieder ein Y ein. Damit werden die Berechtigungen einmal neu geladen.
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.
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
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:
- Debian 10 / 11
- root oder sudo Rechte
- Konsolenzugriff per SSH / Telnet / Lokal
- Internetanbindung des Servers
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
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-apt
einsehen.
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 - 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.
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
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
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.
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
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.
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.
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
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.
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.
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:
- SMTP-Adresse
- SMTP-Port
- Login Daten (Benutzername und Kennwort)
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
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>
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>
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 Q 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
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>
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
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.
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>
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
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
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
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 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