seeseekey.net - Invictus Deus Ex Machina

Wenn unter CentOS der Dienst FirewallD aktiviert ist und man eine wie auch immer geartete Serverapplikation auf dem Server betreiben möchte, wird man feststellen das der Dienst von außen nicht zu erreichen ist. Die einfache wenn auch nicht zielführende Möglichkeit wäre es natürlich die Firewall komplett zu deaktivieren. Sinnvoller ist es hingegen den entsprechenden Port welcher benötigt wird freizuschalten. Dies geschieht dabei mit dem Kommando:

firewall-cmd --zone=public --add-port=1234/tcp --permanent

Damit wird der Port 1234, wenn er über TCP angesprochen wird, in der Zone Public freigeschaltet. Die aktiven Zonen auf dem System können dabei mittels:

firewall-cmd --get-active-zones

angezeigt werden. Die Änderung der Regel wird dabei nicht sofort übernommen. Stattdessen müssen die Einstellungen neu geladen werden:

firewall-cmd --reload

Wenn man die Verbindung von Klassen und deren Komponenten analysieren möchte, so kann man dies in vielen Java-IDEs mit Hilfe eines automatisch erzeugten Klassendiagrames. Verfügt die eigene IDE nicht über eine solche Funktionalität, so kann das Werkzeug Class Visualizer genutzt werden, welches unter class-visualizer.net zu finden ist.

Der Class Visualizer nach dem Start

Das Tool lädt dabei eine Reihe von Klassen aus einer JAR-Datei, bzw. aus einem Verzeichnis und analysiert diese anschließend. Danach kann die Klassenhierarchie durchsucht und die einzelnen Klassen analysiert werden. Dabei werden Ableitungen, Berechtigungen und vieles mehr übersichtlich darstellt, so das man auch komplexe Abhängigkeiten schnell durchschaut hat. Bei der Software handelt es sich um Freeware.

Das Terminal ist geöffnet und ein Befehl wie:

rm -rf img*

soll abgesetzt werden. Nun stellt sich die Frage ob man diesen Befehl wirklich so ausführen möchte. Natürlich könnte es sein, das der Befehl zu weit greift, was dazu führt das man mehr löscht als einem lieb ist. Einen Ausweg aus dieser Misere bietet das in Python geschriebene Tool maybe. Installiert werden kann dieses auf der Konsole mittels:

pip install maybe

Führt man nun ein Skript mittels maybe aus:

maybe test.sh

so ermittelt maybe, welche Operationen das Skript vornehmen möchte und zeigt diese an. Nach einer Bestätigung kann der Befehl anschließend ausgeführt werden. Technisch funktioniert das ganze dabei indem der Prozess unter der Kontrolle von ptrace ausgeführt wird. Hierbei werden allerdings nur einige Systemaufrufe blockiert, so das man maybe nur mit Skripten nutzen sollte, welchen man vertraut. Der Quelltext von maybe ist auf GitHub zu finden. Lizenziert ist das Tool unter der GPL in Version 3 und damit freie Software.

Vor ein paar Tagen stand ich vor dem Problem, das ich ermitteln wollte welche Distribution auf einem Server lief. Die Kernelversion einer Linux-Distribution kann dabei einfach über:

uname -or

ermittelt werden. Als Ausgabe erhält man z.B.

3.10.0-229.el7.x86_64 GNU/Linux

Um die Distribution weiter einzugrenzen könnte man Dateien nutzen welche sich auf eine bestimmte Distribution beziehen – unter Ubuntu wäre dies die Datei lsb-release. Distributionsübergreifender funktioniert die Ermittlung derselben mit:

cat /etc/issue

Für ein Ubuntu 14.04 LTS würde die Ausgabe dabei so aussehen:

Ubuntu 14.04.03 LTS

Bei bestimmten Distribution kann es allerdings auch bei der issue-Datei passieren, das diese Datei leer ist und man somit tiefer graben muss um die Distribution zu ermitteln.

Vor kurzem stand ich vor dem Problem, das ich eine Menge Git-Repositories auf der Festplatte hatte und diese um den .git Ordner bereinigen wollte. Unter Linux und Mac OS X kann man sich für diese Aufgabe mit der Kommandozeile behelfen. Dazu wechselt man in den entsprechenden Ordner und gibt im Terminal folgendes ein:

find . | grep .git | xargs rm -rf

Damit werden sämtliche .git Ordner rekursiv gesucht und gelöscht. Was übrig bleibt sind die aktuellen Arbeitskopien der jeweiligen Git-Repositores.

Möchte man die installierte Standard-Firewall unter Cent OS 7 deaktivieren, so muss man sich am Dienst firewalld zu schaffen machen. Dieser kann dabei mit dem Kommando:

systemctl stop firewalld

gestoppt werden. Anschließend kann der Dienst mittels:

systemctl disable firewalld

dauerhaft deaktiviert werden. Mit dem Kommando:

firewall-cmd --state

kann nun überprüft werden ob der Dienst wirklich deaktiviert wurde. Wenn dies der Fall zeigt das Kommando die Ausschrift not running an.

Wenn man ein CentOS 7 in der Minimal-Installation installiert (und dabei nicht aufpasst), wird man nach der Installation feststellen das man über keine Konnektivität verfügt. Das ist bedingt dadurch das die entsprechende Netzwerkschnittstelle beim Booten nicht konfiguriert wird. Um die Schnittstelle zu konfigurieren, sollte im ersten Schritt in den entsprechenden Ordner gewechselt werden:

cd /etc/sysconfig/network-scripts/

In diesem Ordner befindet sich eine Datei ifcfg-eth0 (alternativ sind auch andere Schnittstellennamen wie ifcfg-enp0s3, em1 und ähnliche möglich). Die entsprechende Datei wird nun mittels vi geöffnet:

vi ifcfg-eth0

In dieser Datei gibt es eine Option mit dem Namen ONBOOT, deren Wert standardmäßig auf no gestellt ist. Dieser Wert muss in yes geändert werden und anschließend die Datei gespeichert werden (:w zum Speichern der Datei, :q um VIM zu schließen). Nach einem anschließenden Neustart, sollte die Netzwerkschnittstelle konfiguriert und funktionsfähig sein.

Nutzt man die freie Git-Hosting-Lösung Gogs, so kommt man regelmäßig in den Genuss von Updates. Möchte man das Upgrade einspielen, so gibt es einige Dinge zu beachten. Im ersten Schritt sollte der Dienst auf dem Server natürlich beendet werden:

service gogs stop

Anschließend wird in den Kontext des Nutzers gewechselt unter welchem Gogs betrieben wird:

su git
cd

Der nächste Schritt ist der Download der neuen Version, sowie die Verschiebung der alten Version und das Kopieren der Konfigurationsdatei von der alten zur neuen Version:

mv gogs gogs_old
wget https://github.com/gogits/gogs/releases/download/v0.8.10/linux_amd64.zip
unzip linux_amd64.zip 
cp -R gogs_old/custom gogs
cp -R gogs_old/data gogs
cp -R gogs_old/log gogs

Danach wird in den Gogs Ordner gewechselt und Gogs manuell gestartet.

cd gogs
./gogs web

Bei diesem Start wird die Migration der Datenbank durchgeführt. Anschließend kann Gogs wie gehabt genutzt werden. Die heruntergeladene Datei sowie der Ordner gogs_old können anschließend entfernt werden.

Auf vielen unixoiden Systemen gibt es den Texteditor nano. Im Standardmodus ist die Anzeige der Zeilennummerierung unter nano deaktiviert. Möchte man dies ändern so muss der Parameter -c beim Aufruf des Editors angetragen werden:

nano -c config.cfg

nano mit aktivierter Anzeige der Zeilennummerierung

Damit zeigt nano im unteren Bereich unter anderem die Zeilennummer an, so das man eine bestimmte Zeile bei Fehlern schnell finden kann.

Das CHM-Format ist vielen bekannt als das Windows-Hilfedatei-Format. Auch wenn das Format mittlerweile aus der Mode gekommen ist, findet man ab und an eine solche Datei und möchte sie anzeigen. Unter Linux und Mac OS X gibt es dafür die freie Anwendung xCHM.

xCHM unter Mac OS X

Lizenziert ist xCHM unter der GPL in Version 2 und damit freie Software. Bezogen werden kann xCHM über die offiziellen Seite. Unter Mac OS X kann es alternativ über MacPorts (Port xCHM) installiert zu werden.