blog.bartlweb - a technologist's external brain

Thema: Linux

Cronjobs für unterschiedliche Nutzer einrichten

Cronjobs dienen unter Linux zum Ausführen wiederkehrender Aufgaben. Für den aktuell angemeldeten Nutzer kann man diese mittels crontab -e editieren. Aber wie funktioniert das für andere Nutzer bzw. Nutzer wie www-data die zum Ausführen von Diensten genutzt werden aber über keinen Shell-Login verfügen?

Dazu kann man crontab als root-Nutzer ausführen und den Zielnutzer mitgeben:

crontab -u user1 -e crontab -u www-data -e

Allgemeine Infos zu Cronjobs: https://blog.bartlweb.net/2011/02/cronjobs-wiederkehrende-aufgaben-unter-linux-managen/

SSL-Verbindung zwischen Postfix und einem externen SMTP-Server mithilfe von stunnel

Wer Postfix für den Versand seiner E-Mails so konfiguriert hat, dass dieser einen externen Server (Relayhost) zum Versand der Mails benutzt und diese Verbindung mittels SSL schützen möchte, muss zu einem Trick greifen. Postfix selbst unterstützt zwar TLS- aber keine SSL-Verbindungen. Abhilfe schafft stunnel, ein kleiner Zwischenserver der die verschlüsselte Kommunikation zwischen lokalem Postfix und externem SMTP-Server übernimmt.

Postfix konfigurierien

Passen Sie die Konfiguration von Postfix so an, dass der Relayhost auf die lokale Loopback-IP-Adresse und einen freien Port über 1024 (muss danach in stunnel konfiguriert werden) zeigt.

Linux-Server mit logwatch überwachen

logwatch parsed die Logdateien des Systems bzw. der prominentesten Dienste wie SSH oder Apache und erstellt daraus Reports. Die Zeitfenster für die Erstellung des Reports lassen sich dabei beliebig adaptieren. Sie können Sie sich entweder tägliche oder so wie in dieser Anleitung beschrieben wöchentliche Reports zu einem definierten Zeitpunkt per E-Mail zusenden lassen.

logwatch benötigt für den Versand von E-Mails eine für den externen Versand konfigurierte Installation von sendmail. Sobald diese Voraussetzung gegeben ist, können Sie logwatch mit dem unten stehenden Befehl installieren.

apt-get install logwatch

logwatch konfigurieren

Logwatch wird über die Konfigurationsdatei /usr/share/logwatch/default.conf/logwatch.conf konfiguriert. Die folgenden Parameter sollten Sie an Ihre Bedürfnisse anpassen:

Perl-Warnung “Setting locale failed” beheben

Einige Ubuntu-Systeme zeigen direkt nach der Installation z.B. beim Aktualisieren via apt-get folgende Warnmeldung in Bezug auf perl bzw. der Spracheinstellungen des Systems an:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "de_AT.UTF-8",
LC_ADDRESS = "de_AT.UTF-8",
LC_MONETARY = "de_AT.UTF-8",
LC_NUMERIC = "de_AT.UTF-8",
LC_TELEPHONE = "de_AT.UTF-8",
LC_MEASUREMENT = "de_AT.UTF-8",
LC_TIME = "de_AT.UTF-8",
LC_NAME = "de_AT.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_ALL to default locale: No such file or directory

Lösung

Um die Fehlermeldung zu beheben, muss die Lokalisierungsinformation für die nicht erkannten Sprachen neu erzeugt werden und die Spracheinstellungen des System aktualisiert werden. Nutzen Sie zur Erzeugung der Lokalisierungsdateien den Befehl locale-gen und Listen sie durch Leerzeichen getrennt alle in der Warnmeldung angezeigten Sprachen auf.

Postfix – SALS authentication failed – no mechanism available

Ich richte Postfix auf meinen Servern generell immer so ein, dass dieser seine E-Mails über einen externen SMTP-Server versendet. Die Anmeldung an diesem Server erfolgt mittels Benutzername und Passwort (siehe dazu auch: SMTP Relay Host mit Authentifizierung in Postfix konfigurieren). Bei der Neuinstallation meines Servers bin ich dabei wieder einmal über einen Fehler gestolpert, bei dem Postfix das Fehlen eines geeigneten Mechanismus bekrittelt:

(SASL authentication failed; cannot authenticate to server example.com[0.0.0.0]: no mechanism available)

Die Lösung ist simpel. Postfix fehlt die Cyrus Simple Authentication Service Layer (SASL) Library. Unter Ubuntu installieren Sie diese mit dem folgenden Befehl nach und schon klappt die Authentifizierung.

Der Texteditor vi

Der Standardtexteditor unter Linux nennt sich vi und lässt sich vollständig mit der Tastatur bedienen. Aufgerufen wird der Editor über den Befehl vi <Dateiname>. Durch drücken der Taste i wechselt man in den Bearbeiten-Modus und kann den Text nun verändern. Alle Befehle zum Steuern des Editors lassen sich nach dem Drücken der Taste Esc eingeben. Die am häufigsten benötigten Befehle sind:

  • dd - löscht die aktuelle Zeile
  • 0 - springt zum Anfang der aktuellen Zeile
  • $ - springt zum Ende der aktuellen Zeile
  • yy - kopiert die aktuelle Zeile in den Zwischenspeicher

Inhalt von Textdateien über die Linux Konsole durchsuchen

Es gibt wenig, dass sich über die Konsole von Linux nicht bewerkstelligen lässt. Der folgende Befehl durchsucht alle Dateien des aktuellen Verzeichnisses nach einem Schlüsselwort und listet die Dateinamen, jener Dateien in denen das Schlüsselwort gefunden wurde, auf.

grep -li "suchwort" *

Time Capsule mit Ubuntu 12.04 simulieren

Die in Apples OS X integrierte Backupsoftware TimeMachine erlaubt standardmäßig nur Backups auf externe Festplatten oder teuer zugekaufte Time Capsules, sowie OS X Serverumgebungen. Gerade wer allerdings schon einen Heimserver betreibt, ist oft auf der Suche nach einer Alternative. Mit OS X Mountain Lion hat Apple das Workaround über Samba Shares unterbunden und verlangt nun nach einer AFP-Freigabe. Mit Hilfe von Ubuntu 12.04 und Netatalk 2.2 lässt sich eine Time Capsule simulieren und sogar für den Mehrbenutzerbetrieb optimieren. So ist es möglich, für jeden vorhanden Mac, eine eigene virtuelle Freigabe zu erstellen und pro Freigabe den zu Verfügung gestellten Speicherplatz zu begrenzen. Somit kann das Volllaufen des Backupvolumes unterbunden werden bzw. allen Macs gleich viel Speicherplatz zu Verfügung gestellt werden.

remote Befehle per SSH ausführen

SSH erlaubt es direkt Befehle an den entfernten Rechner als Parameter mit zu übergeben.

ssh <servername> -p <port> -l <username> -t "<remote-command>"

Das folgende Beispiel startet den Remote-Rechner neu.

ssh 10.0.0.1 -p 22 -l root -t "shutdown -r now"

Wer den SSH-Zugriff über Zertifikate steuert kann somit auch innerhalb von seinen Skripten Befehle per SSH an entfernte Rechner senden.

SSH Zugang für Benutzer auf IP-Basis beschränken

Gerade wer auf seine Server (aus welchen Gründen auch immer) den Zugriff von root per SSH erlaubt sollte diesen auf das lokale Netzwerk einschränken. Der SSH-Server bietet dafür den Konfigurationsparamerter AllowUsers mit dessen Hilfe sich der Zugriff auf einzelne Nutzer und Netzwerke einschränken lässt. Die entsprechende Konfigurationsdatei finden Sie unter /etc/ssh/sshd_config.

Konfigurationsbeispiele

SSH-Zugriff nur für die Benutzer user1 und user 2 zulassen.

AllowUsers user1 user2

SSH-Zugriff für die Benutzer user1 und user2 zulassen und zustätzlich für den Benutzer root insofern sich der Client im lokalen Netzwerk (10.0.0.*) befindet.

AllowUsers root@10.0.0.* user1 user2