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

7

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 folgende:

Da uns von einem Unix / Linux-System verschiedene Shells zur Verfügung gestellt werden, können wir für jeden Benutzer, der zum Zugriff auf das System berechtigt ist, eine andere Shell konfigurieren. Nehmen wir also an, Tom, Dick und Harry sind 3 Benutzer, die zur Verwendung des Systems "Unix" berechtigt sind, und ich möchte, dass "Tom" die Shell zsh , Dick tcsh und Harry die Bash- Shell verwendet. Wie kann ich das machen und ist das überhaupt möglich?

AnkitSablok
quelle
Geben Sie man chshund Sie sollten Ihre Antwort haben :)
IMSoP

Antworten:

8

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

Zweitens, wenn Sie eine Shell hinzufügen möchten, /etc/shellskönnen Sie, wenn Sie einen Eintrag von dort entfernen, insbesondere / bin / sh, wahrscheinlich das System /bin/loginvermasseln , da normalerweise KEINE Shell gestartet wird, die dort nicht aufgeführt ist.

Weitere Informationen finden Sie in den Manpages chsh (1), login.defs (5) und passwd (5).

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

Ahmed Masud
quelle
1

Ja, verschiedene Benutzer können unterschiedliche Shells einrichten. 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 ändern und den Teil ändern, der die Shell für diesen Benutzer angibt. Zum Beispiel:

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

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

Martin Dinov
quelle
Sie sollten / etc / passwd wirklich nicht von Hand ändern
Angenommen, ich bin ein Systemadministrator und möchte den Benutzer auf die Verwendung einer bestimmten Shell beschränken. Kann ich das tun und wie?
Sicher, wenn Sie nicht wissen, was Sie tun!
Martin Dinov
Kannst du mich gerne auf ein Beispiel verweisen oder das Beispiel veranschaulichen, das ich genommen habe? Wie mache ich das?
2
@AnkitSablok In Ihrer Frage wird nicht erwähnt , dass Benutzer-Shells eingeschränkt, sondern nur konfiguriert werden . Eine ganz andere Frage besteht darin, einen Benutzer daran zu hindern, einen Befehl auszuführen (dh ihn nicht bashan einer tcshEingabeaufforderung eingeben zu lassen).
IMSoP
1

Sie können verwenden chsh!

chsh -s /bin/sh user_name

quelle