Website-Suche

So ändern Sie die Standardbenutzer-Shell unter Linux


Die Shell oder Befehlszeilenschnittstelle ist eine entscheidende Komponente des Linux-Betriebssystems und bietet Benutzern eine leistungsstarke Möglichkeit, mit dem System zu interagieren.

Jeder Benutzer auf einem Linux-System ist einer Standard-Shell zugeordnet, die den Befehlsinterpreter bestimmt, den er bei der Interaktion mit dem System verwendet.

Das Ändern der Standard-Shell eines Benutzers kann aus verschiedenen Gründen erforderlich sein, z. B. aus persönlichen Vorlieben oder dem Bedarf an bestimmten Funktionen, die eine andere Shell bietet.

In diesem Artikel untersuchen wir den Prozess der Änderung der Standard-Shell eines Benutzers unter Linux. Die Shell ist ein Programm, das Befehle entgegennimmt und interpretiert; Es gibt mehrere Open-Source-Shells wie bash, sh, ksh, zsh, fish, und viele andere weniger bekannte Shells, die unter Linux verfügbar sind.

Linux-Bash-Shell

Bash (/bin/bash) ist eine beliebte Shell auf den meisten, wenn nicht allen Linux-Distributionen und normalerweise die Standard-Shell für Benutzerkonten.

Es gibt mehrere Gründe dafür, die Shell eines Benutzers unter Linux zu ändern, darunter die folgenden:

  • So blockieren oder deaktivieren Sie normale Benutzeranmeldungen unter Linux mithilfe einer Nologin-Shell.
  • Verwenden Sie ein Shell-Wrapper-Skript oder -Programm, um Benutzerbefehle zu protokollieren, bevor sie zur Ausführung an eine Shell gesendet werden. Hier geben Sie den Shell-Wrapper als Anmelde-Shell eines Benutzers an.
  • Um den Anforderungen eines Benutzers gerecht zu werden (der eine bestimmte Shell verwenden möchte), insbesondere denen mit Administratorrechten.

Beim Erstellen von Benutzerkonten mit den Dienstprogrammen useradd oder adduser kann das Flag --shell verwendet werden, um den Namen der Anmelde-Shell eines Benutzers anzugeben, der nicht in den jeweiligen Konfigurationsdateien angegeben ist.

Auf eine Login-Shell kann über eine textbasierte Schnittstelle oder über SSH von einem Remote-Linux-Rechner aus zugegriffen werden. Wenn Sie sich jedoch über eine grafische Benutzeroberfläche (GUI) anmelden, können Sie über Terminalemulatoren wie xterm, konsole und viele mehr auf die Shell zugreifen.

Verfügbare Shells auf einem Linux-System auflisten

Unter Linux wird die Datei /etc/shells häufig verwendet, um eine Liste der installierten gültigen Anmelde-Shells auf dem System zu speichern. Diese Datei hilft bei der Identifizierung, welche Shells für Benutzer verfügbar sind, die sie mithilfe von Befehlen wie chsh als Standard-Shell festlegen können.

Um die Liste der verfügbaren Shells auf einem Linux-System anzuzeigen, können Sie den folgenden Befehl verwenden:

cat /etc/shells

Beispielausgabe:

/etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/usr/bin/screen

Bevor Sie fortfahren, beachten Sie Folgendes:

  • Ein Benutzer kann seine eigene Shell in alles ändern, was jedoch in der Datei /etc/shells aufgeführt sein muss.
  • Nur Root kann eine Shell ausführen, die nicht in der Datei /etc/shells aufgeführt ist.
  • Wenn ein Konto über eine eingeschränkte Anmelde-Shell verfügt, kann nur der Root die Shell dieses Benutzers ändern.

Finden Sie die aktuelle Shell unter Linux

Bevor Sie die Shell eines Standardbenutzers ändern, ist es wichtig, die aktuelle Shell zu ermitteln, indem Sie den folgenden echo-Befehl ausführen, der die aktuelle Shell für den angemeldeten Benutzer anzeigt.

echo $SHELL

/bin/bash

Die Ausgabe zeigt, dass der Benutzer derzeit die Bash-Shell (/bin/bash) verwendet.

Ändern der Standard-Shell in Linux

Lassen Sie uns nun drei verschiedene Möglichkeiten besprechen, die Standard-Linux-Benutzer-Shell zu ändern.

1. Usermod-Dienstprogramm

Der Befehl usermod wird zum Ändern der Kontodetails eines Benutzers verwendet, die in der Datei /etc/passwd und der Option -s oder --shell gespeichert sind wird verwendet, um die Login-Shell des Benutzers zu ändern.

In diesem Beispiel überprüfen wir zunächst die Kontoinformationen des Benutzers tecmint, um seine Standard-Anmelde-Shell anzuzeigen, und ändern dann die Anmelde-Shell von /bin/sh in /bin/bash as folgt.

grep tecmint /etc/passwd
sudo usermod --shell /bin/bash tecmint
grep tecmint /etc/passwd

Nun wird die Standard-Shell für den Benutzer „tecmint“ in bash geändert.

2. chsh-Dienstprogramm

Der Befehl chsh wird verwendet, um die Standard-Anmeldeshell des Benutzers interaktiv zu ändern, indem die Option -s oder –shell wie gezeigt verwendet wird.

grep tecmint /etc/passwd
sudo chsh --shell /bin/sh tecmint
grep tecmint /etc/passwd

Ersetzen Sie „/bin/sh“ durch den tatsächlichen Pfad zu der Shell, die Sie festlegen möchten. Um beispielsweise die Shell auf sh zu setzen, würden Sie „/bin/sh“ verwenden.

Es ist wichtig zu beachten, dass Änderungen an der Standard-Shell normalerweise bei Ihrer nächsten Anmeldung wirksam werden.

Die beiden oben genannten Methoden ändern vor allem die in der Datei /etc/passwd angegebene Shell, die Sie wie bei der dritten Methode unten manuell bearbeiten können.

3. Ändern Sie die Benutzer-Shell in der Datei /etc/passwd

Bei dieser Methode öffnen Sie einfach die Datei /etc/passwd mit einem Ihrer bevorzugten Befehlszeilen-Texteditoren und ändern die Shell eines bestimmten Benutzers.

sudo vi /etc/passwd
OR
sudo nano /etc/passwd

Suchen Sie die Zeile, die dem Benutzer entspricht, für den Sie die Standard-Shell ändern möchten. Wenn die Zeile beispielsweise so aussieht:

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/bash

Das letzte Feld, /bin/bash, stellt die Standard-Shell dar (in diesem Fall Bash).

Um den Wert des Shell-Felds auf die gewünschte Shell zu ändern, geben Sie einfach den Pfad zu einer Shell (/bin/zsh) wie gezeigt an.

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/zsh

Wenn Sie mit der Bearbeitung fertig sind, speichern und schließen Sie die Datei.

Wie installiere ich eine andere Shell?

Ähnlich wie andere Softwarepakete können beliebte Shells wie Zsh und Fish wie gezeigt einfach aus dem Repository Ihrer Distribution installiert werden.

Installieren Sie die Zsh-Shell unter Linux

Um Zsh unter Linux zu installieren, verwenden Sie den folgenden entsprechenden Befehl für Ihre spezifische Linux-Distribution.

sudo apt install zsh         [On Debian, Ubuntu and Mint]
sudo yum install zsh         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/zsh  [On Gentoo Linux]
sudo apk add zsh             [On Alpine Linux]
sudo pacman -S zsh           [On Arch Linux]
sudo zypper install zsh      [On OpenSUSE]    

Installieren Sie Fish Shell unter Linux

Um Zsh unter Linux zu installieren, verwenden Sie den folgenden entsprechenden Befehl für Ihre spezifische Linux-Distribution.

sudo apt install fish         [On Debian, Ubuntu and Mint]
sudo yum install fish         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/fish  [On Gentoo Linux]
sudo apk add fish             [On Alpine Linux]
sudo pacman -S fish           [On Arch Linux]
sudo zypper install fish      [On OpenSUSE]    

Vergessen Sie nicht, diese verwandten Themen zu lesen:

In diesem Artikel haben wir verschiedene Möglichkeiten beschrieben, die Shell eines Benutzers unter Linux zu ändern. Um Ihre Gedanken mit uns zu teilen, nutzen Sie den Kommentarbereich unten.