Können wir auf einer einzigen Linux/UNIX-Distribution unterschiedliche Shells für unterschiedliche Benutzer konfigurieren?

Können wir auf einer einzigen Linux/UNIX-Distribution unterschiedliche Shells für unterschiedliche Benutzer konfigurieren?

Nun, das ist nichts, was ich tun möchte, aber ich stelle diese Frage, um mehr über die Shell-Konfiguration in Unix/Linux-Systemen zu erfahren. Die Situation, auf die ich eine Antwort haben möchte, ist die folgende:

Da uns ein Unix/Linux-System verschiedene Shells zur Verfügung stellt, können wir für jeden Benutzer, der auf das System zugreifen darf, eine andere Shell konfigurieren. Nehmen wir also an, Tom, Dick und Harry sind drei Benutzer, die das System „Unix“ benutzen dürfen, und ich möchte, dass „Tom“ die Shell benutzt.zsh, Dick zu verwendentcshund Harry benutzt dieSchlagShell. Wie kann ich das machen und ist das überhaupt möglich?

Antwort1

Zunächst werden gültige Shells in aufgelistet /etc/shells. Jeder Benutzer kann seine Standard-Shell ändern, indem er verwendet, chshsolange sie in der /etc/shellsDatei enthalten ist.

Zweitens, wenn Sie eine Shell hinzufügen möchten /etc/shells, können Sie das System wahrscheinlich durcheinanderbringen, wenn Sie dort einen Eintrag entfernen, insbesondere /bin/sh, da /bin/logineine Shell, die dort nicht aufgeführt ist, normalerweise NICHT gestartet wird.

Weitere Informationen finden Sie inchsh(1)login.defs(5) undpasswd(5) man-Seiten.

Diese Fähigkeit gibt es schon lange (ich glaube BSD 4.x)

Antwort2

Ja, verschiedene Benutzer können unterschiedliche Shells eingerichtet haben. Sie können sie beispielsweise mit dem chshBefehl ändern. So ändern Sie die Shell des aktuellen Benutzers in Bash (vorausgesetzt, sie befindet sich in /bin/bash):

chsh -s /bin/bash [username]

Sie können Ihre /etc/passwdDatei auch manuell bearbeiten und den Teil ändern, der die Shell für diesen Benutzer angibt. Beispiel:

root:*:0:0:System Administrator:/var/root:/bin/sh

Der letzte Teil in jeder Zeile Ihrer /etc/passwd, der ungefähr so ​​aussieht wie die Zeile oben, gibt nach dem letzten :die Shell für diesen Benutzer an.

Antwort3

Sie können verwenden chsh!

chsh -s /bin/sh user_name

verwandte Informationen