Zoeken op website

Hoe u de standaardgebruikersshell in Linux kunt wijzigen


De shell of opdrachtregelinterface is een cruciaal onderdeel van het Linux-besturingssysteem en biedt gebruikers een krachtige manier om met het systeem te communiceren.

Elke gebruiker op een Linux-systeem is gekoppeld aan een standaardshell, die bepaalt welke opdrachtinterpreter hij gebruikt bij interactie met het systeem.

Het wijzigen van de standaardshell van een gebruiker kan om verschillende redenen nodig zijn, zoals persoonlijke voorkeur of de behoefte aan specifieke functies die door een andere shell worden aangeboden.

In dit artikel zullen we het proces onderzoeken van het wijzigen van de standaardshell van een gebruiker in Linux. De shell is een programma dat opdrachten accepteert en interpreteert; er zijn verschillende open-source shells zoals bash, sh, ksh, zsh, fish, en vele andere, minder bekende shells die beschikbaar zijn op Linux.

Linux Bash-shell

Bash (/bin/bash) is een populaire shell op de meeste, zo niet alle Linux-distributies, en is normaal gesproken de standaardshell voor gebruikersaccounts.

Er zijn verschillende redenen om de shell van een gebruiker in Linux te wijzigen, waaronder de volgende:

  • Om normale gebruikersaanmeldingen in Linux te blokkeren of uit te schakelen met behulp van een nologin-shell.
  • Gebruik een shell-wrapperscript of -programma om gebruikersopdrachten te loggen voordat ze ter uitvoering naar een shell worden verzonden. Hier specificeert u de shell-wrapper als de login-shell van een gebruiker.
  • Om te voldoen aan de eisen van een gebruiker (die een specifieke shell wil gebruiken), vooral degenen met beheerdersrechten.

Bij het aanmaken van gebruikersaccounts met de useradd- of adduser-hulpprogramma's kan de vlag --shell worden gebruikt om de naam van de login-shell van een gebruiker op te geven, anders dan die gespecificeerd in de respectievelijke configuratiebestanden.

Een login-shell is toegankelijk via een op tekst gebaseerde interface of via een SSH vanaf een externe Linux-machine. Als u echter inlogt via een grafische gebruikersinterface (GUI), heeft u toegang tot de shell via terminalemulators zoals xterm, konsole en nog veel meer.

Maak een lijst van beschikbare shells op een Linux-systeem

In Linux wordt het bestand /etc/shells vaak gebruikt om een lijst met geïnstalleerde geldige login-shells op het systeem op te slaan. Dit bestand helpt bij het identificeren welke shells beschikbaar zijn voor gebruikers om in te stellen als hun standaard shell met behulp van opdrachten zoals chsh.

Om de lijst met beschikbare shells op een Linux-systeem te bekijken, kunt u de volgende opdracht gebruiken:

cat /etc/shells

Voorbeelduitvoer:

/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

Voordat u verder gaat, moet u rekening houden met het volgende:

  • Een gebruiker kan zijn eigen shell in alles veranderen: wat echter wel in het bestand /etc/shells moet staan.
  • Alleen root kan een shell uitvoeren die niet in het bestand /etc/shells staat.
  • Als een account een beperkte login-shell heeft, kan alleen de root de shell van die gebruiker wijzigen.

Zoek de huidige shell in Linux

Voordat u de shell van een standaardgebruiker wijzigt, is het belangrijk om de huidige shell te bepalen door de volgende echo-opdracht uit te voeren, die de huidige shell voor de ingelogde gebruiker weergeeft.

echo $SHELL

/bin/bash

De uitvoer laat zien dat de gebruiker momenteel de Bash-shell (/bin/bash) gebruikt.

De standaardshell in Linux wijzigen

Laten we nu drie verschillende manieren bespreken om de standaard Linux-gebruikersshell te wijzigen.

1. usermod-hulpprogramma

De opdracht usermod wordt gebruikt voor het wijzigen van de accountgegevens van een gebruiker, opgeslagen in het bestand /etc/passwd en de optie -s of --shell wordt gebruikt om de login-shell van de gebruiker te wijzigen.

In dit voorbeeld controleren we eerst de accountgegevens van gebruiker tecmint om zijn standaard login-shell te bekijken en veranderen vervolgens de login-shell van /bin/sh in /bin/bash als volgt.

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

Nu wordt de standaardshell voor de gebruiker “tecmint” gewijzigd in bash.

2. chsh-hulpprogramma

De opdracht chsh wordt gebruikt om de standaard login-shell van de gebruiker interactief te wijzigen door de optie -s of –shell te gebruiken, zoals weergegeven.

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

Vervang “/bin/sh” door het daadwerkelijke pad naar de shell die u wilt instellen. Om de shell bijvoorbeeld in te stellen op sh, zou je “/bin/sh“ gebruiken.

Het is belangrijk op te merken dat wijzigingen in de standaardshell meestal van kracht worden bij uw volgende aanmelding.

De twee methoden wijzigen vooral de shell die is opgegeven in het bestand /etc/passwd, die u handmatig kunt bewerken, zoals bij de derde methode hieronder.

3. Wijzig de gebruikersshell in het bestand /etc/passwd

Bij deze methode opent u eenvoudig het bestand /etc/passwd met een van uw favoriete teksteditors op de opdrachtregel en wijzigt u de shell van een specifieke gebruiker.

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

Zoek de regel die overeenkomt met de gebruiker voor wie u de standaardshell wilt wijzigen. Als de regel er bijvoorbeeld zo uitziet:

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

Het laatste veld, /bin/bash, vertegenwoordigt de standaardshell (in dit geval Bash).

Om de waarde van het shell-veld te wijzigen in de gewenste shell, geeft u eenvoudigweg het pad naar een shell (/bin/zsh) op, zoals weergegeven.

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

Wanneer u klaar bent met bewerken, slaat u het bestand op en sluit u het.

Hoe installeer ik een andere shell?

Net als bij andere softwarepakketten kunnen populaire shells zoals Zsh en Fish eenvoudig worden geïnstalleerd vanuit de repository van uw distributie, zoals weergegeven.

Installeer Zsh Shell onder Linux

Om Zsh op Linux te installeren, gebruikt u de volgende toepasselijke opdracht voor uw specifieke Linux-distributie.

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]    

Installeer Fishshell onder Linux

Om Zsh op Linux te installeren, gebruikt u de volgende toepasselijke opdracht voor uw specifieke Linux-distributie.

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]    

Vergeet niet deze gerelateerde onderwerpen te lezen:

In dit artikel hebben we verschillende manieren beschreven om de shell van een gebruiker in Linux te wijzigen. Gebruik het commentaargedeelte hieronder om uw gedachten met ons te delen.