Tausende zufällige Bilder mit fortlaufenden Namen

Um automatische Bildverarbeitungen zu testen, Um Bilduploads oder die Anzeige von Bildern in Netzlaufwerken zu testen brauche ich manchmal „unmengen“ von Bildern. Schön ist es wenn sich die Bilder auch noch unterscheiden.

Ich habe mir ein kleines Linux Shellscript hinterlegt das zufällig erzeugte Bilder im aktuellen Ordner ablegt. Dieses Script habe ich hier im Blog abgelegt um es bei späteren gelegenheiten wieder zur verfügung zu haben.

Das Script nutzt den Befehl convert von ImageMagic um aus den Zufallsdaten ein Bild zu erzeugen.

Die Konfiguration erfolgt in den Zeilen zwei, drei und vier.
Die Variable j enthält die Anzahl der angelegten Dateien, die Variablen X und Y die Bildgröße.
Das die Dateinamen der Bilder 8 Stellig sind und mit führenden Nullen aufgefüllt werden ist in der Zeile 8 über den Befehl printf definiert worden.

Das Beitragsbild dieses Artikels ist mit diesem Script erzeugt worden.

Wenn die generierten Bilder mit ffmpeg zu einem Video zusammengefügt werden ergibt es ein vergleichsweise unansehnliches Rauschendes, schlecht komprimierbares Video. Das Video erinnert an den ersten Satz der Neuromancer Trilogie, „Der Himmes über dem Hafen hatte die Farbe eines Fernsehers, der auf einen toten Kanal geschaltet war.“.

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

Postfix Konfiguration main.cf aufräumen

Leider wird die Postfix konfiguration /etc/postfix/main.cf häufig mit vielen Daten der Defaultkonfiguration „vermüllt“ und wird damit unübersichtlich.

Vorüberlegung: Wir müssen die main.cf also irgendwie Filtern, eine Feste Reihenfolge zu erhalten wäre ein positiver Nebeneffekt da sich die Regeln so besser einpägen.

Mit dem Befehl postconf können wir die aktuell verwendete Postfix Konfiguration ausgeben lassen. In dieser Ausgabe sind alle Konfigurationsparameter enthalten, ob manuell gesetzt oder der Defaultwert, in dieser Ausgabe ist er enthalten.

Mit der Option „-d“ kann man von postconf auch die Defaultkonfiguration verlangen. Das an den Beiden Ausgaben ist, das postconf die Konfiguration Optionen immer in der gleichen Reihenfolge Ausgibt und somit mittels diff die beiden Konfigurationen verglichen werden können.

Nach dem diff der beiden konfigurationen müssen alle Zeilen die sich verändert haben, diese Beginnen mit einem Größer als Zeichen „>“ beibehalten werden und die beiden ersten Zeichen, Das Größer als Zeichen und das Leerzeichen, verworfen werden um eine vollständige und Funktionierende main.cf als Ausgabe zu erhalten.

Die aus der Ausführung dieses Einzeilers entstandene main.cf Datei kann die alte Konfigurationsdatei bedenkenlos ersetzen.

Nachtrag:

Bei mir wurde der Hostname überraschend nicht mit in die Konfiguration übernommen, es muss nach dem Ersetzen der Konfiguration noch mittels postconf der Hostname in die Konfiguration eingetragen werden.:

 

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

Benutzerverzeichnis beim Löschen des Benutzers sichern

Es ist mir bereits passiert das, nachdem ein Mitarbeiter das Unternehmen verlassen hat, und der Unix-Benutzer des Mitarbeiters nach 14 Tagen aus dem Testsystem entfernt wurde, er sich bei mir meldete da er noch Dateien aus seinem Benutzerverzeichnis benötigte.

Unter Linux kann ich die Benutzer entfernen und direkt vom deluser ein Backup des Benutzerverzeichnisses anlegen lassen.

In der Datei /etc/deluser.conf bit es 3 Optionen, die dafür sorgen das das Benutzerverzeichnis gelöscht wird (REMOVE_HOME), ein Backup angelegt wird (BACKUP). Es kann auch ein Verzeichnis BACKUP_TO angegeben werden, in dem Festgelegt wird wo die Sicherung abgelegt werden soll.

In der Manpage zum deuser.conf wird folgendes für die Optionen REMOVE_HOME, BACKUP und BACKUP_TO angegeben.:

REMOVE_HOME
Löscht das Home-Verzeichnis und den E-Mail-Puffer des zu entfernenden Benutzers. Mögliche Werte sind 0 (nicht löschen) oder 1 (löschen).

BACKUP
Wenn eine der Optionen REMOVE_HOME oder REMOVE_ALL_FILES aktiviert ist, wird von allen Dateien eine Sicherungskopie angelegt, bevor sie entfernt werden. Die Backup-Datei trägt standardmäßig den Namen »username.tar(gz|Bz2)« und wird in dem durch BACKUP_TO vorgegebenen Verzeichnis gespeichert. Als Kompressionsmethode wird die beste verfügbare gewählt. Mögliche Werte sind 0 oder 1.

BACKUP_TO
Wenn BACKUP aktiviert ist, legt BACKUP_TO das Verzeichnis fest, in das der Backup geschrieben wird. Der Standardwert hierfür ist das aktuelle Verzeichnis.

Der Inhalt der Datei /etc/deluser.conf sollte wie folgt angegeben werden:

Die Option REMOVE_ALL_FILES enfernt alle Dateien des Benutzers aus dem Dateisystem. Diese Option zu aktivieren kann etwas gefährlich sein, grade wenn es sich um ein Entwicklungssystem mit gemeinsam bearbeiteten Projekten handelt.

Die Option ONLY_IF_EMPTY entfernt die Benutzergruppe des Benutzers und die Option EXCLUDE_FSTYPES macht für die Dateien das Benutzers eine Ausnahme wenn sie auf Datenträgern mit einem der genannten Dateisysteme abgelegt wurde.

Beilspiel für das löschen eines Benutzers Namens „blub“ unter Ubuntu 16.04 mit der oben angegebenen /etc/deluser.conf

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

aufs – zusammenfügen was zusammen gehört

AuFS – Another Union File System (Ein anderes vereinigendes Dateisystem).

Ein solches „Union Dateisystem“ nimmt Existierende Dateisysteme und zeigt ein anderes Dateisystem „darüber“ an. Es ermöglicht das Dateien und Verzeichnisse von verschiedenen Dateisystemen im gleichen Mountpfad angezeigt zu werden. Bei dieses Verfahren landen neue und neuere Dateien im „darüber“ eingebundenen Dateisystem. Dateien gleichen Namens im „darüber“ liegenden Dateisystem versperren den Zugriff auf die Dateien gleichen Namens im „darunter“ liegenden Dateisystem.

Das Dateisystem AuFS wird auch von vielen Open Source Projekten wie Knoppix und Slax sowie vielen anderen Linux LiveCDs und USB Distributionen.

In meinem Beispiel verwende ich Debian, auf allen Debian basierten Linux Distributionen wie Ubuntu und Linux Mint kannst Du genauso vorgehen.

Wie AuFS funktioniert

Das erste Beispiel zeigt wie zwei Verzeichnisse, /tmp/dir1 und /tmp/dir2  in gleichen Verzeichnis Pfad /tmp/aufs gemounted, also eingebunden werden.

Der erste der beiden Befehle, mkdir,  erstellt die beiden Verzeichnisse im Verzeichnis tmp. Der zweite Befehl legt je eine Testdatei in die beiden im Dritten, dem Befehl mount -t aufs eingebundenen beiden Verzeichnisse, die zu dem Verzeichnis /tmp/aufs eingebunden werden.

Dieser mount-Befehl spezifiziert die beiden Verzeichnisse “/tmp/dir1″ und „/tmp/dir2” welche in das Verzeichnis “/tmp/aufs” eingebunden wird. Das Zielverzeichnis “/tmp/aufs” wird nach dem erfolgreichen mount-Befehl den Inhalt der beiden Verzeichnisse “/tmp/dir1” und “/tmp/dir2” enthalten.

In dem oben angegebenen mount-Befehl werden die folgenden Optionen verwendet.:

  • -t aufs Der typ des Dateisystems ist aufs
  • -o gibt an, das die Optionen für das zuvor angegebene Dateisystem folgen
  • br= steht für „branch“, was am besten mit Verzweigung übersetzt werden kann. Die einzelnen Zweige werden mit einem Semikolon getrennt. Eine beim Befehl mount angegebene verzweigung bezeichnet ein Verzeichnis im Dateisystem.
  • none bezieht sich darauf das kein Dateisystem sondern Verzeichnisse eingebunden werden sollen

Da wir vor dem Einbinden der Verzeichnisse mittels touch zwei Dateien angelegt haben können wir mittels ls -l nachschauen was genau passiert ist.

Die beiden Dateien namens eins und zwei erscheinen auch im Verzeichnis /tmp/aufs.

Wenn wie in diesem ersten Beispiel keine anderen Rechte festgelegt wurden ist das erste angegebene Verzeichnis beschreibbar und das zweite Verzeichnis nur zum lesen eingebunden.

Beim anlegen zweier Dateien im Ordner /tmp/aufs werden diese im Verzeichnis /tmp/dir1 abgelegt.

Beim löschen einer Datei vom Laufwerk /tmp/aufs erscheint diese nicht mehr im Verzeichnis /tmp/aufs ist jedoch noch immer im Verzeichnis /tmp/dir2 vorhanden. Bei dem Löschen einer Datei welche im Verzeichnis /tmp/dir1 abgelegt wurde wird diese auch im Verzeichnis /tmp/dir1 gelöscht.:

Vereinheitlichte Heimatverzeichnisse

Nach einiger Zeit in Betrieb enden die meisten Systemeadministratoren mit Systemen mit vienen Festplatten über die die Daten der Benutzer verteilt liegen. Manchmal ist es jedoch sinnvoll sich einen einfachen Überblick zu verschaffen und die Administration auf diese weise zu vereinfachen.

In diesem Heispiel gibt es die beiden Datenträger /home und /home1 mit den Heimatverzeichnissen der Benutzer:

  • /home das Heimatverzeichnis der Benutzer „metzger“ und “metzger” und “sysadmin” auf der Festplatte /dev/sdb1
  • /home1 das Heimatverzeichnis des Benutzers „test“ auf der Festplatte /dev/sdb2

Der oben mount Befehl in diesem aufruf enthält die extra Option “udba” welche ausgeschrieben auf den “User’s Direct Branch Access” verweisst, den direkten Zugriff eines Benutzers auf das Dateisytem. Nicht der Zugriff über das AuFS ist damit gemeint, sondern in diesem Beispiel der direkte Zugriff auf das Verzeichnis /home oder /home1.

Die folgenden Werte sind für die Option udba möglich.:

  • udba=none Mit dieser Option ist der Zugriff auf das Dateisystem am schnellsten, es wird aber veränderungen durch das erstellen von Ordnern oder Dateien im Verzeichnis /home oder /home1 nicht im AuFS Verzeichnis /common anzeigen.
  • udba=reval Mit dieser Option wird AuFS bei jedem Zugriff auf das Verzeichnis /common die Verzeichnisse und Unterverzeichnisse von den Ordnern /home und /home1 auf Veränderungen prüfen und die Änderungen im Verzeichnis /common berücksichtigen.
  • udba=notify Mit dieser Option nutzt AuFS die Linux Funktion inotify für alle Ordner in den verknüpften Verzeichnissen. Diese Option bietet die Vorteile der Option udba=reval ohne die Performance so stark wie diese Otion zu beeinflussen.

Der Befehl touch erstellt die Datei „test“ im Heimatverzeichnis meines Benutzers „metzger“. Da beim einbinden des Dateisystems die Option “udba=retval” verwendet wurde wird die Datei sowohl unter /home/metzger als auch im Ordner /common/metzger angezeigt sobald die Datei erstellt wurde.

Zusätzlich haben wir die Option „rw“ (readwrite) für beide Dateisysteme angelegt. Eine Datei die im Ordner /common/test/ angelegt wird wird Physisch im Ordner “/home1/test/” angelegt werden. Dies trifft auf alle Verzeichnisse existierenden Verzeichnisse zu. Neu angelegte Dateien oder Verzeichnisse im Verzeichnis /common landen auf erste angegebenen Dateisystem /home

Nur lesend mounten

Beim mounten kann für jeden auch für jede Verzweigung, jeden branches einzeln festgelegt werden welche ob nur leserechte (ro) oder lese und Schreibrechte (rw) vergeben werden sollen.

In dem obigen Aufruf wird festgelegt das das Verzeichnis /tmp/aufs das Verzeichnis /tmp/dir1 beschreibbar und das Verzeichnis “/tmp/dir2” nur zum lesen engebunden bekommt. Jedwede Änderungen im Verzeichnes /tmp/aufs landet auf dem Datenträger /tmp/dir1 da dies das zum schreiben geöffnete Verzeichnis ist. Die Dateien im Verzeichnis /tmp/dir2 können über das Verzeichnis /tmp/aufs nicht verändert werden.

Mit den Folgenden Aufrufen kann dies geprüft werden.

Erläuterung zur obigen Befehlsabfolge im Deteil:

  • Im Verzeichnis /tmp/dir2/ wird eine Datei mit dem Namen 1.txt und dem Inhalt „Eine neue Datei“ angelegt
  • Diese neue Datei wird auch im „union mount Verzeichnis“ /tmp/aufs angezeigt da beim mounten die Option udba=retval angegeben wurde (die Beschreibung ist einige Zeilen weiter oben im Text)
  • Wir schreiben zusätzlich den Text „Diese Datei wurde geändert“ in die Datei 1.txt im über das AuFS im Verzeichnis /tmp/aufs
  • Da das Dateisystem /tmp/dir2 nur zum lesen eingebunden ist nimmt sich AuFS den Inhalt aus der Datei /tmp/dir2 und legt den Inhalt, zusammen mit der Ergänzung im Verzeichnis /tmp/dir1 ab.
  • Im Verzeichnis /tmp/dir2 erscheint die soeben gemachte änderung nicht in der Datei 1.txt
  • Im Verzeichnis /tmp/dir1 erscheint der vollständige, ergänzte Inhalt der Datei “1.txt”

Round Robin – abwechselnd wechselnde Ziele

Wen wir mehr als zwei Dateisysteme einbinden welche wir als beschreibbar deklarieren können wir aus mehreren vordefinierten Regeln währen wo und nach welchen Regeln die Dateien auf den Dateisytemen angelegt werden sollen.

Mit der Option “create=rr” legen wir fest das die Dateien im Rundlauf-Verfahren, oder in der englischen Bezeichnung Round-Robin, gespeichert werden sollen. Im Rundlauf-Verfahren wird die erste gespeicherte Datei im ersten Dateisystem, die zweite Datei im zweiten Dateisystem und die dritte Datei wieder im ersten Dateisystem abgelegt. Wenn ich fünf Dateien erstelle landen die erste, dritte und fünfte Datei im Dateisystem “/tmp/dir1” sowie die zweite und vierte Datei im zweiten Dateisytem “/home/metzger”.

Links

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

IMAP über die Shell testen

Um einen IMAP Server zu testen ist ein EMail Programm immer nur die zweite Wahl, besser prüfst Du via Telnet oder OpenSSL.

Das IMAP Protokoll ist ein Klartext Protokoll, die Befehle sind Verständliche englischsprachige Wörter wie Beispielsweise Login, List, Select, Fetch, Store und so weiter.

Login in den EMail-Server

Der Zugriff ist unverschlüsslt via Telnet mit dem folgenden Aufruf nutzbar.:

Der verschlüsselte Zugriff via SSL erfolgt mittels ssl-Client openssl.:

Bei aktuellen IMAP Servern wird immer häufiger der unverschlüsselte Zugriff unterbunden, so das der Verschlüsselte IMAP Zugriff über das Tool OpenSSL die einzig nutzbare der beiden vorgestellten Möglichkeiten darstellt.

Der Login auf dem IMAP-Server erfolgt über den Befehl LOGIN.:

Klassischerweise wird als Benutzername die EMail-Adresse selbst verwendet. In einigen Fällen ist der Benutzername auch nur der erste Teil der EMail-Adresse bis zum, und ohne das @-Zeichen. In einigen seltenen Fällen hat der Benutzername eines IMAP-Servers auch keine Gemeinsamkeiten mit der abzufragenden EMail-Adresse. Genauere Informationen zu den Zugangsdaten Deines EMail-Postfachs erhälst Du von dem Betreiber des EMail-Servers.

Die IMAP-Befehle werden durch einen Tag begonnen, ich verwende hier als Tag einfach ein Fragezeichen.
Häufig wird als Tag eine Zahl verwendet oder das Tag enthält eine Zahl, die bei jedem Aufruf erhöht wird. Das Tag wird verwendet da Theoretisch mehrere Befehle gesendet werden können bevor die Antwort auf den vorherigen Befehl empfangen wird und auf diesem Web die Antworten den Befehlen zugeordnet werden können.
Alle IMAP-Befehle sind nicht case-sensitiv, so das diese nicht wie in meinen Beispielen immer groß geschrieben werden müssen.

Abrufen von EMails

Die Ordner im Postfach

Um zu erfahren welche Ordner auf dem EMail-Server anlegegt sind dient der Befehl LIST.

Als Antwort auf den Befehl LIST erhälst Du eine Liste mit den im Postfach angelegten Ordnern und des Ordner-Trennzeichens. Bei manchen EMail-Servern wird ein Punkt als Trennzeichen verwendet. Die Verwendung des Punktes kann einen Ordner wie Test.Ordner, bei fehlendem Ordner Test, zu einem Unterverzeichnis ohne Verzeichnis in dem das Unterverzeichnis liegt machen. Mozilla Thunderbird und Microsoft Outlook zeigen diesen „imaginären Ordner“ Test dann in Grau an, der Ordner Test kann nicht ausgewählt werden.)

Die EMails in den Ordnern

Die Anzahl der EMails in den einzelnen Ordnern kann durch den Befehl STATUS erfragt werden. Es werden die drei Optionen (MESSAGES) für alle Nachrichten, (RECENT) für nicht als gelesen markierte EMails und (UNSEEN) für noch nicht abgerufene EMails unterstützt.

Betreten eines Ordners

Ein Ordner kann zum mit EXAMINE zum Lesen oder mit SELECT zum lesen und Schreiben betreten werden.

Abrufen einer EMail

Es können verschiedene verschiedene Teile einer EMail abgerufen werden. Die beiden wichtigsten FETCH Optionen sind rfc822.text für den Inhalt einer EMail und rfc822.header für die EMail-Header. Es können aber auch die Größe (RFC822.SIZE) oder die FLAGS einer EMail abgefragt werden.

Anlegen und löschen eines Ordners

Zum Anlegen eines EMail-Ordners wird der Befehl CREATE verwendet, zum umbenennen RENAME und zum löschen der Befehl DELETE.

EMail Flags

Als gelöscht markierte EMails löschen

Idle Status

Suchen im Postfach

Abmelden

EMail löschen

Die Fähigkeiten des IMAP Servers erfahren

Wikipedia Artikel zum Internet Message Access Protocol
RFC3501 – INTERNET MESSAGE ACCESS PROTOCOL

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

Hilfe, ich habe kein uuencode!!!

Ich wollte mir vor kurzem Schadcode zur Analyse von einem Computer ohne Netzwerk über die Serielle Console kopieren, musste jedoch leider feststellen das kein uuencode auf dem Server vorinstalliert war.

Nach einer kurzen suche suche bin ich auf xxd gestoßen, mit dem sich Binärdaten in hexadezimalcodes, und wieder zurück, umwandeln lässt.

Eine Datei „Datei“ kann mit dem folgenden Aufruf in Hex-Dump gewandelt werden.:

Ich schalte bei der Seriellen Console im anschluss das Logging ein, schreibe die Ausgaben also in eine Datei. und gebe mit „cat Datei.txt“ die Hex-Dump-Datei aus.

Nach dem die überzähligen Zeilen aus dem Mitschnitt entfernt wurden kann mit dem folgenden Befehl der Hex-Dump wieder in die Ursprungsdatei zurück umgewandelt werden.

Die beiden Dateien „Datei-eins“ und die auf dem ursprünglichen Computer liegende Datei „Datei“ sind identisch. Der Dateiname und die Dateirechte werden bei dieser Methode jedoch im gegensatz zu uuencode nicht übernommen.

Bei einem Größenvergleich mit uuencode schneidet xxd erwartungsgemäß nicht besonders gut ab,

Test zum Speicherbedarf:

  • Anlegen einer binären Testdatei mit:

  • Erzeugen der Testdateien für uuencode, xxd, base32 und base64:

Die Sicherung der Datei ist als Hex-Dump, xxd deutlich größer als mit uuencode oder base64, sogar noch größer als eine Umwandlung in ASCII via base32:

 

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

Inotify: Dateien überwachen

Veränderungen im Dateisystem mit inotify beobachten.

Sobald eine bestimmte Datei verändert wird möchte ich ein Archiv erstellen oder die Datei auch einen Server hochladen, oder auf meiner NAS eine LED anschalten. Bei der Suche nach einem passenden Werkzeug blieb ich sehr lange bei einer Endlosschleife die regelmäßig die Datei oder das fragliche Verzeichnis auf die erwartete Änderung abfragte.

Inotify-Events
KürzelFormat
ACCESSZugriff auf die Datei
ATTRIBMetadaten geändert
CLOSE_WRITEzum Schreiben geöffnete Datei geschlossen, sie muss nicht geändert worden sein
CLOSE_NOWRITEEine Datei wurde geschlossen nachdem sie schreibgeschützt geöffnet wurde
CREATENeue Datei angelegt
DELETEDatei gelöscht
DELETESELFÜberwachtes Verzeiuchnis gelöscht
MODIFYDatei modifiziert
MODIFYSELFÜberwachtes Verzeichnis modifiziert
MOVEDFROMDatei aus dem überwachten Verzeichnis verschoben
MOVEDTODatei in das überwachte Verzeichnis verschoben
OPENDatei geöffnet

Zur Überwachung meines WordPress Verzeichnises auf neue Dateien kann ich folgende Befehlszeile nutzen:

Mir werden dann vor allem viele Dateien wp-content/temp-write-test-1492771373, mit abweichenden Nummern am ende, angezeigt, jedoch auch die ganzent Updates und anderen Schreibvorgänge.

Um herauszufinden welche Dateien „angefasst“ werden reicht eine kleine änderung auf:

Ein sehr nützliches Werkzeug, auch für die Fehleranalyse. 😉

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

Reverse SSH Tunnel

Seit der Deaktivierung extern erreichbarer IPv4 Adressen bei meinem und auch vielen anderen Internetzugängen lassen sich die heimischen Rechner nicht mehr ohne weiteres via SSH erreichen.

Die Alternativen, wie Beispielsweise einen VPN Tunnel und die teilweise recht obskuren Shell sharing-Dienste (Nach aufruf einer URL habe zugriff auf die Shell als der Benutzer der die Shell freigegeben hat, ohne Passwort, ohne Key), überzeugen mich einfach nicht. Besonders zur Administration meines heimischen Servers und der NAS verlange ich einfach mehr von der Verbindung.

In diesem Blogbeitrag zeige ich Schritt für Schritt wie ein reverser, mit anderen Worten umgekehrter SSH Tunnel errchtet werden kann.

Revers SSH-Tunnel? Das ist wenn Bob eine Verbindung zur Shell des Computers von Alice herstellen möchte, der Computer von Alice ist jedoch wegen einem NAT oder einer Firewall nicht erreichbar ist. Alice muss dann zuerst eine Verbindung zu Bobs Computer herstellen und in dieser ihre eigene Verbindung mitbringen.

Für mein Beispiel nehmen wir an, das der Computer von Alice die IP-Adresse 10.0.0.2 und der Computer von Bob die IP-Adresse 192.168.0.2 hat, und zwar eine Verbindung von Alice zu Bob, jedoch umgekehrt keine Verbindung möglich ist.

1.) SSH Verbindung von Alice zu Bob herstellen. (Vom Zielcomputer zu dem Computer auf dem eine Verbindung auf die Shell eigentlich hergestellt werden soll)

Der Port 49152 den ich hier verwende ist ein beliebiger, auf Bobs Computer nicht verwedeter Port.

2.) Nun kann Bob eine SSH-Verbindung zum Computer von Alice über den jetzt aufgebauten SSH-Tunnel herstellen.

Wenn die von Alice hergestellte Verbindung zu Bob jedoch abbricht verliert auch Bob seine Verbindung zu Alice.
Bob sollte aus diesem Grund due Konfiguration seines SSH-Servers so anpassen, das die Verbindung nicht wegen eines Timeout getrennt wird.

Die Daten /etc/ssh/sshd_config kann zu diesem Zweck wie folgt angepasst werden.:
TCPKeepAlive no
ClientAliveInterval 30
ClientAliveCountMax 100

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

Linux: sudo ohne Passwort

Auf dem eigenen Laptop, Raspberry Pi oder Computer ist es verlockend mittels sudo -s als root zu arbeiten um nicht andauernd das eigene Passwort eingeben zu müssen.
Aus diesem Grund möchte ich in dieser kurzen Anleitung zeigen wie diese Verlockung abzuschwächen ist und das Passwort nicht immer oder wenigstens nicht bei allen Befehlen eingegeben werden muss.

Die Einstellungen werden zu sudo kann in der Datei /etc/sudoers vorgenommen werden. In dieser Datei werden alle Benutzerprivilegien und das Verhalten von sudo konfiguriert.

Die Syntax der Konfiguration der Benutzerrechte erfolgt nach dem folgenden Schema:

user_list host_list=effective_user_list tag_list command_list

user_list – Liste der Benutzer oder einen Benutzer-Alisa der bereits zuvor angelegt wurde
host_list – eine Liste der Hostcomputer oder eine Host-Alias auf dem ein Benutzer sudo ausführen kann
effective_user_list – list of users they must be running as or a run as alias.
tag_list – Liste von Eigenschaften wie beispielsweise NOPASSWD.
command_list – Liste von Befehlen die mit sudo ausgeführt werden dürfen

Um einem Benutzer, in meinem Beispiel kuehnel, die Ausführung aller Befehle via Sudo ohne die Eingabe eines Passworts zu erlauben öffne ich die „sudoers“ Konfigurationsdatei.:

Und füge die folgende Zeile ein.:

Alternativ kann mit der folgenden Zeile einer Gruppe, in meinem Beispiel der Gruppe sudo, mit dem % Zeichen der sudo Zugriff ohne Passworteingabe ermöglicht werden.

Um meinem Benutzer kuehnel nur den Zugriff auf einen Befehl (hier /bin/kill) zu ermöglichen kann die Zeile wie folgt ergänzt werden:

Die folgende Zeile ermöglicht allen Benutzern der Gruppe sys die sudo Ausführung der Befehle /bin/kill und /bin/rm ohne ein Passwort engeben zu müssen:

logfile

sudo gibt die Log-Informationen an syslog. Es kann nach wunsch aber auch ein eigenes Logfile schreiben.

Die in der Logdatei gespeicherten Daten können den eigenen anforderungen angepasst werden, zum Beispiel so.:

lecture

Hinweis bei der Nutzung von sudo anzeigen.

Es gibt 3 mögliche Konfigurationen:

always – immer bein aufruf von sudo den Benutzer hinweisen
once – nur bei der erstzen benutzung hinweis zeigen
never – niemals anzeigen

Zusätzlich kann die Datei festgelegt werden in der der Text für den Hinweis hinterlegt wurde:

timeout

Zeitspanne nach der das Passwort erneut abgefragt werden soll. (in Minuten)

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate

DOSBox MS-DOS Installation

Ich will eine DOSBox mit MS-DOS 6.22. Wieso? Weil es geht *g*

1.) Diskettenabbilder von MS-DOS 6.22 erstellen.

Mein Diskettenlaufwerk wird von Linux als sdb erkannt (dmesg zeigt es)

mit dem folgenden Befehl erstelle nacheinander die 3 Abbilder meiner MS-DOS 6.22 Disketten.

Am ende habe ich die 3 Disketten-images, MSDOS622_D1.img, MSDOS622_D2.img und MSDOS622_D3.img.

Da ich keine Rechte an MS-DOS halte biete ich die Images nicht zum Download an, auch ein Versand der Dateien via EMail kommt für mich nicht in Frage.

2.) 504 MB Festplattenimage erzeugen.

Die Maximale Größe der Festplatte eines klassischen DOS-PCs ist, da dies die Grenze für eine MS-DOS Festplatte ist, 504 MiB groß.

Die spezifikation einer solchen Festplatte lautet, frei nach http://www.pcguide.com/ref/hdd/bios/sizeMB504-c.html
1024 Cylinder
16 Heads
63 Sektoren

Die Berechnung der Sektoren der Festplatte erfolgt nach dem Schema:
Sektoren = Cylinder * Heads * Sectoren
1024 * 16 * 63 = 1032192 Sektoren

Mit Hilfe von dd erstelle ich die 504 MiB (528 MB) große Festplatte DOS.img:

3.) DOSBox installieren und konfigurieren

Die Installation erfolgt unter Debian und Ubuntu mit der folgenden Befehlszeile und dauert nur wenige Sekunden.:

Mit Hilfe der folgenden Befehlzeile finde ich raus welche Konfigurationsdatei beim start von DOSBox verwendet wird.:

An das Ende der Konfigurationsdatei kommt für das MS-DOS-Setup der Befehl die Festplatte einzubinden und die Disketten zur verfügung zu stellen.
Die boot Zeile enthält meine 3 MS-DOS Disketten.
Der Wechsel der Disketten erfolgt mit der Tastenkombination [Strg]+[F4].

Die Option -size enthält die oben, beim anlegen der Festplatte festgelegten Parameter: Blockgröße (der bs= Parameter vom dd), Sektoren, Heads und Cylinder.

Beim Start von dosbox wird automatisch von der ersten Diskette gestartet und die Festplatte erst partitioniert und nach dem Neustart, dosbox beendet sich und muss neu gestartet werden, wird die Festplatte formatiert, Nach dem Start der Installation kann, sobald das Setup nach der nächsten Diskette verlangt einfach mit der Tastenkombination [Strg]+[F4] zur nächsten Diskette gewechselt und mit [Enter] das Setup fortgesetzt. Wenn das MS-DOS Setup fertig ist und neu starten möchte tauschen wir den Autostartbereich der DOSBox zu dem folgenden Inhalt.:

Jetzt haben ich ein DOSBox das, aus meinem Benutzerordner das Festplatten-Image DOS.img startet.

Scan to Donate Bitcoin
Like this? Donate Bitcoin to at:
Bitcoin 17g7tgR4KYKSqS1f8LUCpLEeum4PAcnGbo
Donate