Endre Standardskallet I Linux
Oversikt
et interaktivt skall leser kommandoer fra brukerinngang på en tty-terminal. Vi kaller det interaktive skallet etter en brukers vellykkede pålogging standard shell eller login shell.
i denne opplæringen skal vi diskutere hvordan du endrer standardskallet til en bruker.
Introduksjon til Chsh-Kommandoen
chsh-kommandoen leveres med util-linux-pakken-en standardpakke som er tilgjengelig på Alle Linux distroer.
Ved hjelp av chsh-kommandoen med – l-alternativet, kan vi liste skjellene som er installert i dagens system:
$ chsh -l/bin/sh/bin/bash/bin/zsh/usr/bin/zsh/usr/bin/git-shell
En mer vanlig bruk av chsh-kommandoen er å endre standardskallet til en bruker.
vi vil ta opp hvordan du gjør det i senere seksjoner.
Hvilket Skall Bruker Jeg For Øyeblikket?
etter en vellykket pålogging, vil vi være med vår standard shell.
før vi snakker om å endre standardskallet, la oss først lære et par måter å finne ut hvilket skall vi bruker for øyeblikket.
En måte er å lese systemmiljøet $SHELL, som lagrer kommandoen som kjører shell:
kent$ echo $SHELL/bin/zsh
som eksemplet ovenfor viser, er det løpende skallet Til min nåværende påloggingsbruker Zsh.
Alternativt kan vi kjenne det nåværende løpende skallet ved å utforske prosessinformasjonen. Linux lagrer PID av det løpende skallet i den spesielle variabelen $$:
kent$ echo $3492
i eksemplet ovenfor vil prosessen MED PID 153492 være den nåværende skallprosessen. Vi kan få detaljert informasjon om prosessen ved hjelp av ps-kommandoen med – p-alternativet:
kent$ ps -p $$ PID TTY TIME CMD 153492 pts/2 00:00:00 zsh
utgangen forteller Oss At Zsh er vårt nåværende skall.
Endre Standardskallet Til Den Nåværende Brukeren
hvis vi vil endre standardskallet til den nåværende påloggingsbrukeren, kan vi utføre chsh-kommandoen med-S <NEW_SHELL > alternativet.
la oss endre standardskallet til den nåværende brukeren Til Bash:
kent$ chsh -s /bin/bashChanging shell for kent.Password: Shell changed.
Det er verdt å nevne at etter at vi har endret standardskallet, vil det nåværende skallet ikke bli endret. For eksempel har Vi satt Bash som standard skall av brukeren kent, men dagens skall er Fortsatt Zsh:
kent$ ps -p $$ PID TTY TIME CMD 153492 pts/2 00:00:00 zsh
den nylig endret standard skallet vil tre i kraft neste gang vi logger inn med brukeren kent.
standard shell-kommandoen er viktig for brukernes innlogging. Hvis kommandoen er ugyldig, har vi problemer med å logge inn med brukeren.
derfor, når vi endrer standardskallet, vil chsh-kommandoen bekrefte om den gitte shell-kommandoen er gyldig.
La oss se hva som vil skje hvis vi sender en ugyldig bane til chsh-kommandoen:
kent$ chsh -s /bin/bashhhhChanging shell for kent.Password: chsh: "/bin/bashhhh" does not exist
vi har lært at chsh-kommandoen kan liste de installerte skjellene i systemet.
chsh-kommandoen vil nekte å endre standardskallet hvis det gitte skallet ikke er på systemets liste over gyldige skall:
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.
i eksemplet ovenfor forsøkte vi å sette kommandoen / usr / bin / cat som standardskall for brukeren kent.
cat-kommandobanen er gyldig. Det er imidlertid ikke på shell-listen. Derfor avbrutt chsh med tilsvarende feilmelding og hint.
Endre Standardskallet Til Andre Brukere
Så langt har Vi lært å bruke chsh-kommandoen til å endre standardskallet til den nåværende påloggingsbrukeren.
vi kan også endre standardskallet til andre brukere ved hjelp av chsh-kommandoen, men vi trenger root-tillatelsen til å gjøre det.
syntaksen er ganske grei:
root# chsh -s NEW_SHELL USERNAME
Denne gangen logger vi inn som rotbruker og endrer standardskallet til brukeren kent til/bin / sh:
root# chsh -s /bin/sh kent Changing shell for kent.Shell changed.
la oss nå logge på igjen med brukeren kent og sjekke om standardskallet ble endret med hell:
sh-5.1$ echo $SHELL/bin/sh
som utgangen ovenfor viser, er standardskallet til brukeren kent nå/bin / sh .
Redigerer /etc/passwd-Filen
Vi har lært å bruke chsh-kommandoen til å endre en brukers standardskall. Alternativt kan vi også gjøre det ved å redigere/etc / passwd-filen.
I Linux er /etc/passwd-filen en ren tekstfil. Den lagrer brukerkontoinformasjon, som kreves under brukerinnlogging:
-rw-r--r-- 1 root root 2.1K Mar 12 10:27 /etc/passwd
Hvis vi ser på tillatelsesflaggene, ser vi at alle brukere kan lese det, men bare rotbrukeren har lov til å skrive til / etc / passwd.
la oss sjekke innholdet i/etc / passwd-filen:
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...
Hver linje i filen registrerer kontoinformasjonen til en bruker. Feltene i en post er atskilt med kolon.
en post inneholder brukerens kontodata, for eksempel brukernavn, UID, GID og hjemmekatalog, blant andre. Det siste feltet angir standardskallet til brukeren.
hvis vi endrer standard shell-feltet i/etc / passwd-filen, trer den i kraft når brukeren logger på systemet neste gang.
en fordel ved å redigere/etc / passwd-filen er at vi kan endre standardskallet til flere brukere i ett skudd. Noen ganger kan dette være ganske praktisk.
vi bør imidlertid huske på at når vi lagrer/etc / passwd-filen, vil ingen validering eller verifisering skje på de endrede standardskjellene.
Derfor ma vi sorge for at vi har gitt gyldige shell-kommandobaner. Ellers vil brukeren ha et problem å logge inn på systemet neste gang.
Konklusjon
i denne raske artikkelen har vi lært hvordan du endrer en brukers standardskall gjennom eksempler.
chsh-kommandoen er ganske grei for oppgaven. Videre kan det verifisere om det gitte skallet er gyldig i systemet.
hvis vi vil endre standardskallet til en annen bruker enn den nåværende påloggingen, må vi utføre chsh-kommandoen med root user-tillatelse.
Videre, Hvis vi kan logge inn som rotbruker, kan vi også endre standardskallet til flere brukere ved å redigere /etc/passwd-filen direkte.