chsh ermöglicht es jedem eingetragenen Benutzer, seine Loginshell selbst, das
heißt ohne Hilfe des Superusers (root) zu verändern. Die Loginshell wird
in der Paßwortdatei /etc/passwd festgelegt. Diese Datei kann nur mit
Rootprivilegien verändert werden. Um auch den anderen Anwendern das
Verändern des Eintrages zu erlauben, läuft das
chsh Programm SUID root. Das heißt, bei seiner Ausführung wird die effektive
Benutzerkennung des Superusers gesetzt. Um die Systemsicherheit trotzdem
zu gewährleisten, können nur Programme, die in der Datei /etc/shells
eingetragen sind als Loginshell benutzt werden.
Normalerweise kann ein Anwender nur seine eigene Loginshell ändern. Der
Superuser selbst kann das Programm aber auch für andere Benutzer anwenden,
indem er den Benutzernamen in der Kommandozeile angibt.