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?


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)


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.