Browsed by
Tag: Linux

Automation via shell aliases

Automation via shell aliases

terminal-appWhen working on software development projects there are many repetitive tasks to do, may it be the deployment of a binary, starting of different servers in docker containers or standalone, the exchange of config files for different environments, the migration of a database or something simple as the navigation to deep paths on the command line to do some editings or server starts there. All this tasks can be annoying and over time they add up to a significant amount of time which is not very productive. The logical counter measure for a developer should be to automate as much as possible of this recurring tasks. For example you can bundle up the start of different docker containers via docker compose or delegate some tasks to a CI server but in the end some tasks will remain which you have to trigger manually -at least on your development machine- which is where your shell can become handy with a feature called ‘alias’. An alias is an automation feature which at least every popular Linux/Unix/macOS shell provides. With an alias you can define a new command that executes a series of shell commands completely automatic.
I have a rule of thumb defined where I try to automate every manual task by an alias which I have to do at a minimum of three times a week (to be honest I also do an alias if I have to do a task two times every week just because it is such a handy feature).
To define a new alias all you have to do is to add it to the config file of your shell. In the case of the very popular bash shell this file is called .bashrc (on macOS you have to use the .bash_profile file when you use bash) while for zsh it is called .zshrc but in both cases the file sits in the users home folder. All you have to do is to open your rc file with an text editor, scroll to the end and add a new line starting with the keyword ‘alias’ followed by the alias name you chose and the command that should be executed. A sample command could look like this:

alias cdwildfly="cd ~/programming/java/servers/wildfly/"

Read More Read More

Find and kill a process on a specific port (lsof)

Find and kill a process on a specific port (lsof)

terminal-app
You might all have experienced the situation when you want to start a server either from within your IDE or via the terminal to only get the error that the “port is already in use” and the startup is aborted. This is mostly caused by aborting the server or a crash of the IDE which started it and not terminating it properly. When using macOS (or any other BSD or a Linux) there is a simple solution for this.

For such purposes macOS comes with the “lsof” command which stands for “list open files”. Its purpose is to show who is using a specific file or in our case who is using a specific port. After identifying the process it is easy to terminate it using the “kill” command.

Read More Read More

Backup von /home mit tar aus der Shell

Backup von /home mit tar aus der Shell

Vor einigen Wochen habe ich es geschafft mein Ubuntu so zu verbasteln das ich den XServer und somit auch keinen Desktop mehr starten konnte. Nun war mein letztes Backup allerdings leider nicht mehr ganz taufrisch und die Arbeit einiger Tage drohte verloren zu gehen. Da aber noch ein Login auf der Shell möglich war war es kein Problem die Home-Partition zu sichern und in aller Ruhe das System neu aufzusetzen.

Ein tar Backup von der Shell ist eigentlich nur ein Einzeiler. Man wechselt dazu in das zu sichernde Verzeichnis und tippt folgendes in die Shell ein:

tar -cvpzf backup.tar.gz

Tar erstellt ein Archiv in dem alle Berechtigungen so wie sind erhalten bleiben können. Die Optionen dahinter stehen für folgendes:
C: erstellt ein neues Archiv (create)
V: Der Fortschritt wird ausgegeben (verbose)
P: Berechtigungen werden beibehalten (preserve)
Z: Mit gzip komprimieren
F: Legt den Namen des Backups fest (filename)

Die entstehende Datei kann man sich bequem auf eine USB Platte kopieren und fertig ist das Backup.

blogilo und Ubuntu (10.10)

blogilo und Ubuntu (10.10)

Ich benutze eigentlich schon seit jeher immer sehr gern Desktop Clients zum bloggen statt des wordpress Backends. Zum einen bin ich damit unabhängig vom Internet und zum anderen reagiert das einfach flüssiger. Unter Ubuntu habe ich lange nach einem vernünftigen Client gesucht und bin dann auf blogilo gestoßen der mir trotz das es sich um eine KDE App handelt sehr gut gefällt.

Blogilo befindet sich in den Ubuntu Repos und kann daher einfach mit:

sudo apt-get install blogilo

installiert werden. Durch die Abhängigkeiten müssen natürlich einige KDE Bibliotheken nachinstalliert werden und wenn man dies nicht schon hat werden mal schnell um die 250MB extra auf der Platte belegt.

Laufen tut blogilo nach dem Installieren aber trotzdem nicht. Nach einem Startversuch wird mit der Fehlermeldung

Cannot connect to database

abgebrochen. Um dies zu beheben ist die Installation der KDE SQLite DB notwendig doch glücklicherweise ist auch diese direkt in den Repositorys vorhanden und kann mit

sudo apt-get install libqt4-sql-sqlite

nachinstalliert werden. Anschließend sollte blogilo anstandslos starten.

Passwörter, Sicherheit und Verwaltung

Passwörter, Sicherheit und Verwaltung

Passwörter braucht man heute im Internet für beinahe alles. In Foren, bei Social Networks, auf Verkaufsplattformen, bei Banken, beim eMailanbieter oder beim Jabber Konto, überall werden heute Passwörter verlangt und diese Flut der benötigten Authentifizierungen verleitet viele Benutzer dazu überall das gleiche (im Zweifel noch sehr unsichere) Passwort zu benutzen. DIe Probleme die dieses Vorgehen mit sich bringt sollten eigentlich auf der Hand liegen. Kann ich einmal ein Passwort des Benutzers knacken oder in Besitz bringen ist es sehr leicht einfach auf allen möglichen Webseiten mit der selben Benutzername/Passwort Kombination auszoprobieren ob ich mich einloggen kann. Die Folgen können Informationsdiebstahl sein, Beschädigung des Rufes, Versenden von Spam und natürlich das Erzeugen von Schulden durch z.B. Einkäufe bei eBay Amazon und Co.

Um sich zu schützen sollte man ein paar Dinge beachten. An fremden PCs (wie z:b. in Hotels oder Internet Cafes) sollte man nur wenn unbedingt nötig sensible Passwörter wie z.B. Banking Accounts nutzen, denn hier fehlt einem meistens gänzlich die Kontrolle nachzuvollziehen ob irgendwelche Programme installiert sind die die eingegebenen Daten mit loggen und abspeichern könnten. Auch das Speichern von hoch sensiblen Passwörtern im Browsercache sollte vermieden werden, denn das ist zwar unheimlich praktisch und hilft gegen Vergesslichkeit doch hat es auch einige Nachteile. Meist werden die Passwörter heute verschlüsselt abgelegt aber oft ist die Frage wo. Eine Sicherung der Passwortdaten und anschließendes Wiedereinspielen ist oft nicht vorgesehen, daher steht der Benutzer beim Betriebssystemwechsel schonmal dumm da. Doch auch die Sicherheit ist nicht immer nachvollziehbar. Ich würde niemals einer unfreien Software mit geschlossenem Quellcode meine Passwörter anvertrauen wollen. Wieso? Der Grund ist eigentlich ganz einfach, im Normalfall weiß man nicht wie die Sicherheitskonzepte aussehen. Welche Verschlüsselung wird verwendet? Haben überhaupt Fachleute auf diesem Gebiet sich die Sache mal näher angesehen und auf Schwachstellen abgeklopft oder hat sich bloß der aktuelle Praktikant mal 14 Tage eingelesen und dann schnell was hingepfuscht? Generell haben bei Proprietärer Software sehr viel weniger Entwickler Einblick in den Code als bei Open Source Projekten wodurch eine geringere Kontrolle statt findet und auch der Code oft schlechter sein dürfte. Die Beispiele der letzten Jahre wie die DECT Verschlüsselung oder diverse RFID Hacks haben gezeigt das geschlossene Software, auch in Sicherheitskritischen Bereichen, ihre Sicherheit gerne darauf begründet das niemand weiß wie sie funktioniert und nicht darauf das die Konzepte tatsächlich besonders sicher sind.

Der vielleicht wichtigste Punkt bleibt aber wohl die Länge des Passworts und die Art der Verschlüsselung selbst. Als bislang ungeknackter Quasi Standard hat sich in den letzten Jahren der AES256 etabliert. Hier ist zum heutigen Zeitpunkt von einer ausreichend großen Sicherheit auszugehen. Doch auch der Beste Algorithmus nutzt nur wenig wenn das Passwort binnen kürzester Zeit erraten werden kann. Hierzu gibt es im Internet einige Quellen mit Rechenbeispielen. Diese möchte ich an dieser Stelle nicht wiederholen sondern lediglich darauf hinweisen das bei der heutigen Rechnergeschwindigkeit davon ausgegangen werden muss das ein Passwort mit weniger als zehn Stellen und minimum Groß- und Kleinbuchstaben (besser wären noch zusätzlich Zahlen) in einer hinreichenden Zeitspanne brechbar ist. Wer auch die nächste Zeit auf der sicheren Seite sein möchte sollte auf eine Kombination von Groß- und Kleinbuchstaben, sowie Sonderzeichen mit einer Länge von ca. 14 Zeichen in einer sinnlosen Reihenfolge vertrauen und kein Passwort mehr als einmal einsetzen.

Um solche Passwörter zu realisieren gibt es nun verschiedene Ansätze. Man kann sich z.B. seine Lieblingsfilmzitate, Textstellen in Büchern oder Lieblingslieder nehmen und z.B. die ersten 14 Wörter herausgreifen. Von diesen nimmt man nun die Anfangsbuchstaben, versieht diese mit Groß- und Kleinschriebung und ersetzt sie an sinnvollen Stellen durch Zahlen. Ein Beispiel:

Eine Textzeile in einem Lieblingsbuch lautet:

Als sie ankamen war es bereits Nacht

Nun würde man sich die Anfangsbuchstaben herausnehmen und dabei auf die Großschriebung achten:

AsawebN

und um es zu komplizieren könnte man nun an das N eine 8 anhängen (8 = Nacht) in englischen Texten bietet es sich z.B. oft an ein "to" durch eine 2 zu ersetzen und ähnliches:

AsawebN8

Auf diese Weise lassen sich recht komplexe und nicht trivial zu erratende Passwörter genrieren die noch relativ einfach zu merken sind. Wer das nicht kann oder möchte kann über den Einsatz einer Passwortverwaltung wie z.B. KeePass nachdenken. Hierbei handelt es sich um ein Open Source Programm das Passwörter und Zugangsdaten in einer AES256 verschlüsselten Datenbank abspeichert und somit zunächst einmal als relativ sicher gelten kann. Die Datenbank selbst wir mit einem Masterpasswort geschützt das man sich natürlich noch merken muss. Der große Vorteil des Programms ist sein Passwortgenerator. Dieser generiert beliebig lange Zufallspasswörter denen man mitgeben kann ob sie nur Buchstaben, oder auch Zahlen und Sonderzeichen etc. enthalten sollen. Diese Passwörter können als besonders sicher angesehen werden da sie keinem bestimmten Muster folgen. Jetzt kann man einwenden das bei Verlust des Masterpasswortes alle Passwörter gefährdet sind. Das ist sicher richtig, aber es bleibt die Abwägung was die größere Gefahr bedeutet. Entweder ein gemerktes extrem Sicheres Masterpasswort oder die Alternative mit viellecht 15-20 Internetaccounts von denen die Hälfte das gleiche fünfstellige leicht erratbare Passwort benutzt. In jedem Fall sollte bei einer Entscheidung für ein Programm für KeePass (was den Vorteil hat das es als Windows-, Mac- und Linuxversion sowie für viele Handys wie Android und als Portable Version für den USB Stick verfügbar ist) beachtet werden immer ein backup der Datenbank zu machen. Falls das Programm mal durch eine Fehlfunktion die Datenbank beschädigt oder der PC durch einen Hardwaredefekt nicht mehr nutzbar ist sollte man die Möglichkeit haben zumindest seine Passwörter vom Backup wieder zu bekommen.