Wie man sich vor unvorsichtigen Kollegen schützt

Posted on February 4th, 2013 by lausser

Ein überaus praktisches Feature der Bash ist die Möglichkeit, Kommandos erneut ausführen zu lassen, indem man einfach ein Ausrufezeichen gefolgt von den ersten paar Buchstaben eines Befehls eintippt. Die History wird dabei durchsucht, bis der letzte Befehl gefunden wird, der mit genau diesen Buchstaben anfing. Anschliessend wird er ausgeführt, was allerdings nicht immer das gewünschte Ergebnis liefert.

Beispiel:

Kollege H ist als User root auf einem Server angemeldet und spielt irgendwann ein Backup einer Datenbank ein mit
mysql –u sox –p soxpw sox < /var/backups/sox.bck.2013-01-14.sql

Kollege L meldet sich als root auf dem Server an und hat im Hinterkopf, dass er irgendwann mal
mysql –u root
eingegeben hat.

Kollege L denkt sich: “hach, wie praktisch, Bash History Expansion ist schon genial…” und tippt
!my

Eine Nanosekunde später haut Kollege L auf CTRL-C und verhält sich anschliessend betont unauffällig.

Eine halbe Stunde später schreibt Kollege H: “hat irgendwer was mit der sox-Datenbank gemacht?”

Langer Rede kurzer Sinn: folgende Zeilen, ans Ende von /root/.profile gehängt, sorgen dafür, dass History Expansion ausgeschaltet wird, sobald sich jemand von L’s Rechnern einloggt.

clntaddr=${SSH_CLIENT%% }
if [[ $clntaddr =~ 10.37.112. ]] || [ $clntaddr = "10.37.2.146" ]; then
  echo hello lausser
  set +H
fi

Filed under Uncategorized |

One Response to “Wie man sich vor unvorsichtigen Kollegen schützt”

  1. roland Says:
    February 4th, 2013 at 11:47

    Was natuerlich auch ganz gut klappt, ist mit CTRL-R die History interaktiv zu durchsuchen. Da sieht man dann wenigstens, was man abschickt bevor man’s abschickt.

    Und natuerlich sollte Kollege H nicht das Passwort auf der Kommandozeile angeben. Tztztz …

    [Reply]

Leave a Reply