de standaard Shell in Linux
wijzigen overzicht
een interactieve shell leest commando ‘ s van gebruikersinvoer op een TTY-terminal. We noemen de interactieve shell na het succesvol inloggen van een gebruiker de standaard shell of login shell.
in deze tutorial gaan we bespreken hoe je de standaard shell van een gebruiker kunt wijzigen.
Inleiding tot het chsh Commando
het chsh commando wordt geleverd met het util-linux pakket – een standaard pakket dat beschikbaar is op alle Linux distributies.
met behulp van het chsh commando met de-l optie, kunnen we een lijst maken van de shells geïnstalleerd in het huidige systeem:
$ chsh -l/bin/sh/bin/bash/bin/zsh/usr/bin/zsh/usr/bin/git-shell
een meer algemeen gebruik van het chsh commando is om de standaard shell van een gebruiker te veranderen.
we zullen bespreken hoe dat te doen in de volgende secties.
Welke Shell Gebruik Ik Momenteel?
na een succesvolle login, zullen we met onze standaard shell.
voordat we praten over het veranderen van de standaard shell, laten we eerst een paar manieren leren om uit te vinden welke shell we momenteel gebruiken.
een manier is om de systeemomgeving $SHELL te lezen, die het huidige shell-commando opslaat:
kent$ echo $SHELL/bin/zsh
zoals het voorbeeld hierboven laat zien, is de draaiende shell van mijn huidige login gebruiker Zsh.
als alternatief kunnen we de huidige draaiende shell kennen door de procesinformatie ervan te bekijken. Linux slaat de PID van de draaiende shell op in de speciale variabele $$:
kent$ echo $3492
in het voorbeeld hierboven zou het proces met PID 153492 het huidige shell proces zijn. We kunnen gedetailleerde informatie krijgen over het proces met behulp van het ps commando met de optie-p:
kent$ ps -p $$ PID TTY TIME CMD 153492 pts/2 00:00:00 zsh
de output vertelt ons dat Zsh onze huidige shell is.
wijzigen van de standaard Shell van de huidige gebruiker
als we de standaard shell van de huidige login gebruiker willen wijzigen, kunnen we het chsh commando uitvoeren met de-s <NEW_SHELL> optie.
wijzig de standaard shell van de huidige gebruiker naar Bash:
kent$ chsh -s /bin/bashChanging shell for kent.Password: Shell changed.
het is de moeite waard om te vermelden dat nadat we de standaard shell met succes hebben gewijzigd, de momenteel draaiende shell niet zal worden gewijzigd. Bijvoorbeeld, we hebben Bash ingesteld als de standaard shell van de gebruiker kent, maar de huidige shell is nog steeds Zsh:
kent$ ps -p $$ PID TTY TIME CMD 153492 pts/2 00:00:00 zsh
de nieuw gewijzigde standaard shell zal van kracht worden de volgende keer dat we inloggen met de gebruiker kent.
het standaard shell-commando is essentieel voor het aanmelden van gebruikers. Als het commando ongeldig is, zullen we problemen hebben met het inloggen met de gebruiker.
daarom, als we de standaard shell wijzigen, zal het chsh Commando controleren of het gegeven shell commando geldig is.
laten we eens kijken wat er gebeurt als we een Ongeldig pad doorgeven aan het chsh Commando:
kent$ chsh -s /bin/bashhhhChanging shell for kent.Password: chsh: "/bin/bashhhh" does not exist
we hebben geleerd dat het chsh commando de momenteel geïnstalleerde shells in het systeem kan weergeven.
het commando chsh zal weigeren de standaard shell te wijzigen als de opgegeven shell niet op de lijst van geldige shells van het systeem staat:
kent$ chsh -s /usr/bin/catChanging shell for kent.Password: chsh: "/usr/bin/cat" is not listed in /etc/shells.Use chsh -l to see list.
in het voorbeeld hierboven probeerden we het /usr/bin/cat commando in te stellen als de standaard shell van de gebruiker kent.
het cat Commando pad is geldig. Het staat echter niet op de shell-lijst. Daarom, chsh afgebroken met de bijbehorende foutmelding en hint.
het veranderen van de standaard Shell van andere gebruikers
tot nu toe hebben we geleerd hoe we het chsh Commando kunnen gebruiken om de standaard shell van de huidige login gebruiker te veranderen.
we kunnen ook de standaard shell van andere gebruikers wijzigen met behulp van het chsh Commando, maar we hebben de root rechten nodig om dat te doen.
de syntaxis is vrij eenvoudig:
root# chsh -s NEW_SHELL USERNAME
deze keer loggen we in als de root gebruiker en veranderen we de standaard shell van de gebruiker kent naar / bin / sh:
root# chsh -s /bin/sh kent Changing shell for kent.Shell changed.
laten we nu opnieuw inloggen met de gebruiker kent en controleren of de standaard shell met succes is gewijzigd:
sh-5.1$ echo $SHELL/bin/sh
zoals de uitvoer hierboven laat zien, is de standaard shell van de gebruiker kent now/bin / sh.
het bewerken van het/etc / passwd bestand
we hebben geleerd om het chsh commando te gebruiken om de standaard shell van een gebruiker te veranderen. Als alternatief kunnen we dat ook doen door het bestand /etc/passwd te bewerken.
in Linux is het/etc / passwd bestand een platte tekst bestand. Het slaat gebruikersaccountinformatie op, die nodig is tijdens het inloggen van de gebruiker:
-rw-r--r-- 1 root root 2.1K Mar 12 10:27 /etc/passwd
als we naar de permissievlaggen kijken, zien we dat alle gebruikers het kunnen lezen, maar alleen de root gebruiker mag schrijven naar /etc/passwd.
laten we de inhoud in het /etc/passwd bestand controleren:
kent$ cat /etc/passwdroot:x:0:0:root:/root:/bin/zshbin:x:1:1:bin:/bin:/bin/false...kent:x:1000:1000::/home/kent:/bin/zshguest:x:1001:1001::/home/guest:/bin/zsh...cups:x:209:209:cups helper user:/:/sbin/nologin...
elke regel in het bestand registreert de accountinformatie van een gebruiker. De velden in een record worden gescheiden door dubbele punten.
een record bevat de accountgegevens van de gebruiker, zoals gebruikersnaam, UID, GID en homedirectory. Het laatste veld geeft de standaard shell van de gebruiker aan.
als we het standaard shell-veld in het /etc/passwd-bestand wijzigen, wordt dit van kracht wanneer de volgende gebruiker zich de volgende keer op het systeem aanmeldt.
een voordeel van het bewerken van het bestand /etc/passwd is dat we de standaard shell van meerdere gebruikers in één shot kunnen veranderen. Soms kan dit heel handig zijn.
we moeten echter in gedachten houden dat wanneer we het /etc/passwd bestand opslaan, er geen validatie of verificatie zal plaatsvinden op de gewijzigde standaard shells.
daarom moeten we er zeker van zijn dat we geldige shell commando paden gegeven hebben. Anders zal de gebruiker een probleem hebben met het inloggen op het systeem de volgende keer.
conclusie
in dit snelle artikel hebben we geleerd hoe we de standaard shell van een gebruiker kunnen wijzigen door middel van voorbeelden.
het chsh commando is vrij eenvoudig voor de taak. Bovendien kan het controleren of de opgegeven shell geldig is in het systeem.
als we de standaard shell van een andere gebruiker dan de huidige login willen wijzigen, moeten we het chsh commando uitvoeren met root gebruiker rechten.
verder, als we kunnen inloggen als de root gebruiker, kunnen we ook de standaard shell van meerdere gebruikers wijzigen door direct het /etc/passwd bestand te bewerken.