Passwörter mit TextExpander generieren

TextExpander ist ein hilfreiches Tool, das stabil läuft. Es ist eigentlich als eine Bibliothek für Textabkürzungen gedacht, die sich systemweit nutzen lassen. So wird aus „mfg“-[Tab] ein „Mit freundlichen Grüßen“ oder aus „lorem“-[Tab] ein schöner Blindtext.

Mit der Scriptfunktion kann man TextExpander auch für komplexere Dinge nutzen, wie die Generierung von Passwörtern:

#!/bin/bash
var=`openssl rand -base64 15`
echo ${var:0:10}

In ${var:0:10} kann man die Länge des Passwortes einstellen, in dem Fall sind es 10 Zeichen.

Der Befehl „cp -r *“ kopiert keine versteckten Dateien

Wenn man mit beispielsweise

cp -r * /zu/diesem/verzeichnis/

den Inhalt eines Verzeichnisses in ein anderes kopieren will, so werden keine versteckten Dateien kopiert. Der bash-Wildcard ‚*‘ gilt nämlich nicht für versteckte Dateien, also Dateien, die mit einem Punkt anfangen, wie z.B. „.htaccess“. Mit

cp -r * .[!.]* /zu/diesem/verzeichnis/

kopiert man auch die versteckten Dateien.

  • * kopiert „normale“ Dateien
  • .[!.]* kopiert Dateien, die mit einem ‚.‘ beginnen, ohne das übergeordnete Verzeichnis ‚..‘ zu kopieren

Siehe hierzu auch: Bash Wildcards

Passwortlose ssh-Authentifizierung

In Linux und Unix (also auch in macOS) kann man mit dem Kommandozeilen-Tool ssh-keygen ein Schlüsselpaar mir Public- und Private-Key anlegen, welches zur  Authentifizierung über ssh genutzt werden kann.

Über die Console bzw. das Terminal geben wir hierzu den Befehl ssh-keygen -t dsa ein

 1 | Sylvester:~ lisa$ ssh-keygen -t dsa
 2 | Generating public/private dsa key pair.
 3 | Enter file in which to save the key (/Users/lisa/.ssh/id_dsa): 
 4 | Created directory '/Users/lisa/.ssh'.
 5 | Enter passphrase (empty for no passphrase): 
 6 | Enter same passphrase again: 
 7 | Your identification has been saved in /Users/lisa/.ssh/id_dsa.
 8 | Your public key has been saved in /Users/lisa/.ssh/id_dsa.pub.
 9 | The key fingerprint is: [...]
10 | Sylvester:~ lisa$ cd ~/.ssh
11 | Sylvester:~ lisa$ ls
12 | id_dsa     id_dsa.pub

In Zeile 3 wird gefragt, wo man die Keys abspeichern möchte, als Antwort einfach Return drücken. Falls das Verzeichnis .ssh noch nicht existiert, wird es nun erstellt. Zur Passwortlosen Authentifizierung bei der Frage nach dem passphrase in Zeile 5 und 6 auch nur Return drücken (empty for no passphrase).

Im Verzeichnis ~/.ssh werden von dem Programm nun die zwei Dateien id_dsa und id_dsa.pub erstellt. id_dsa ist der Private-Key, id_dsa.pub der Public-Key. Der Private-Key sollte möglichst nicht in fremde Hände geraten.

Der Public-Key, also der Inhalt von id_das.pub muss nun auf dem Server in die Datei ~/.ssh/authorized_keys kopiert werden. Wenn der Ordner ~/.ssh oder die Datei noch nicht existiert kann man sie einfach erstellen.

Nachdem das alles erledigt ist sollte beim Login auf dem Server nicht mehr nach dem Passwort gefragt werden, da sich der Computer automatisch über die hinterlegten Keys authentifiziert.

Sylvester:~ lisa$ ssh techblog.7d0.de -l techlisa
Last login: Sat Jan 24 13:25:45 2009 from p0815ea9d.dip.t-dialin.net
Have a lot of fun...
techlisa@techblog.7d0.de:~>

Ich find´s praktisch und es soll ja auch sicherer sein, als die Authentifizierung mit Login und Passwort.

Zum Schluss noch die Manpage von ssh-keygen.

Beispiele zur Benutzung von grep und find

In einer bestimmten Datei nach einem Wort suchen:

grep suchwort datei.txt

Alle Dateien im aktuellen Ordner und Unterordnern finden, die einen bestimmten Text enthalten:

grep -R "suchwort" *

Alle Dateien im aktuellen Ordner finden, die wort1 oder wort2 im Inhalt haben

grep -E "(wort1|wort2)" *

Dateien im aktuellen Ordner und Unterordnern finden, deren Namen einem bestimmen Muster entsprechen:

find . -name "*.jpg"

Dateien finden, deren Namen nicht einem bestimmten Muster entsprechen:

find . ! -name "*.jpg"

Dateien finden, deren Namen einem bestimmten Muster entsprechen und die einen bestimmten Text enthalten:

find . -name "*.php" -exec grep -il "suchtext" {} ;

Dateien finden, die bestimmte Datei-Endungen haben (Mit Regular-Expressions finden):

find . -regex ".*(php|html|tpl)$"

Große Dateien finden (Dateien finden, die größer als ca. 500 MB sind):

find . -type f -size +500000k -exec ls -lh {} ;

Dateien finden, deren Pfade einem bestimmten Pattern entsprechen:

find . -path "*/.svn*"

Dateien finden, deren Pfade nicht einem bestimmten Pattern entsprechen:

find . ! -path "*/.svn*"

Dateien finden, die nicht einem bestimmten User (nicht root) gehören:

find . ! -user root

Dateien finden, die „oo“ oder „ee“ im Namen haben:

find . ( -name "*oo*" -or -name "*ee*" )

Dateien finden, die nicht „oo“ oder „ee“ im Namen haben:

find . ! ( -name "*oo*" -or -name "*ee*" )

Hier noch die Manpages zu grep und find.