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.