shared root but not shared history

Es ist nicht ungewoehnlich das man sich in einer Firma dazu entschlossen hat nur einen Account auf den Servern zu haben. So turnen also alle Admins mit dem root Account auf den Servern herum. Problematisch wird das ganze dann, wenn jeder andere vorlieben hat was den Editor, das Prompt oder auch die Shell angeht.

Die wie ich finde eleganteste Methode dies zu loesen erfolgt über Umgebungsvariablen die jedem SSH-Key zugeordnet werden und in einer generischen bashrc genutzt werden um zu differenzieren. Die bash ist hier genannt, weil es meist der kleinste gemeinsame Nenner der shells ist.

Aber was ist genau zu machen?

In der SSH Server Konfiguration (meist /etc/ssh/sshd_config) muss PermitUserEnvironment yes gesetzt sein. So wird es moeglich verschiedene Umgebungsvariablen zu setzen. Es gibt Unterschiedliche moeglichkeiten dafuer, Google hilft hier sicherlich. Ich will fuer jeden Schluessel eine bestimmte Variable definieren, deswegen modifiziere ich die ~/.ssh/authorized_keys wie folgt.

environment="SSH_USER=joho" ssh-rsa AAAAB3NzaC1yc2 ....
environment="SSH_USER=sate" ssh-rsa AAAAB3NzaC1yc2 ....

So steht mir (nach einem sshd neustart) die Variable zur Verfuegung und sie kann, als Beispiel in der /etc/bashrc angesprochen werden.

## user logging ##
if [ "$SSH_USER" != "" ]; then
      logger -ip auth.notice -t sshd "Accepted publickey from $SSH_USER for User $USER "
              export HISTFILE="$HOME/.history_$SSH_USER"
              fi

Die im oberen Beispiel eigene History jedes Nutzers kann aber auch eine eigene .profile oder Aehnliches sein - jeder kann sich also so seine Umgebung bauen ohne das er andere veraergert.