februar 27, 2022

ændring af standardskallen i Linuk

oversigt

en interaktiv skal læser kommandoer fra brugerinput på en tty-terminal. Vi kalder den interaktive skal efter en brugers vellykkede login standardskallen eller loginskallen.

i denne vejledning skal vi diskutere, hvordan du ændrer standardskallen til en bruger.

Introduktion til kommandoen chsh

kommandoen chsh leveres med pakken util-linuk — en standardpakke, der er tilgængelig på alle linuk-distroer.

ved hjælp af chsh-kommandoen med indstillingen-l kan vi liste de skaller, der er installeret i det nuværende system:

$ chsh -l/bin/sh/bin/bash/bin/zsh/usr/bin/zsh/usr/bin/git-shell

en mere almindelig brug af chsh-kommandoen er at ændre standardskallen for en bruger.

vi vil behandle, hvordan man gør det i senere afsnit.

Hvilken Skal Bruger Jeg I Øjeblikket?

efter en vellykket login, vil vi være med vores standard shell.

før vi taler om at ændre standardskallen, lad os først lære et par måder at finde ud af, hvilken shell vi bruger i øjeblikket.

en måde er at læse systemmiljøet $SHELL, som gemmer den aktuelt kørende shell-kommando:

kent$ echo $SHELL/bin/zsh

som eksemplet ovenfor viser, er den løbende skal af Min nuværende login-bruger.

Alternativt kan vi kende den aktuelle kørende skal ved at udforske dens procesoplysninger. PID ‘ en for den løbende skal gemmes i den specielle variabel $$:

kent$ echo $3492

i eksemplet ovenfor ville processen med PID 153492 være den nuværende shell-proces. Vi kan få detaljerede oplysninger om processen ved hjælp af ps-kommandoen med indstillingen-p:

kent$ ps -p $$ PID TTY TIME CMD 153492 pts/2 00:00:00 zsh

udgangen fortæller os, at SSH er vores nuværende skal.

ændring af standardskallen for den aktuelle bruger

hvis vi vil ændre standardskallen for den aktuelle login-bruger, kan vi udføre chsh-kommandoen med indstillingen-s< NY_SHELL >.

lad os ændre standardskallen for den aktuelle bruger til Bash:

kent$ chsh -s /bin/bashChanging shell for kent.Password: Shell changed.

det er værd at nævne, at efter at vi med succes har ændret standardskallen, ændres den aktuelt kørende skal ikke. For eksempel har vi indstillet Bash som standardskallen for brugeren kent, men den nuværende skal er stadig:

kent$ ps -p $$ PID TTY TIME CMD 153492 pts/2 00:00:00 zsh

den nyligt ændrede standardskal træder i kraft næste gang vi logger ind med brugeren kent.

standardskalkommandoen er afgørende for brugernes login. Hvis kommandoen er ugyldig, har vi problemer med at logge ind med brugeren.

når vi ændrer standardskallen, kontrollerer chsh-kommandoen, om den givne shell-kommando er gyldig.

lad os se, hvad der vil ske, hvis vi passerer en Ugyldig sti 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 aktuelt installerede skaller i systemet.

chsh-kommandoen nægter at ændre standardskallen, hvis den givne skal ikke er på systemets liste over gyldige skaller:

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øgte vi at indstille kommandoen /usr/bin/cat som standardskallen for brugeren kent.

cat-kommandovejen er gyldig. Det er dog ikke på shell-listen. Derfor afbrød chsh med den tilsvarende fejlmeddelelse og tip.

ændring af standardskallen for andre brugere

indtil videre har vi lært, hvordan man bruger chsh-kommandoen til at ændre standardskallen for den aktuelle login-bruger.

vi kan også ændre standardskallen for andre brugere ved hjælp af chsh-kommandoen, men vi har brug for rodtilladelsen til at gøre det.

syntaksen er ret ligetil:

root# chsh -s NEW_SHELL USERNAME

denne gang logger vi ind som rodbruger og ændrer standardskallen for brugeren kent til / bin / sh:

root# chsh -s /bin/sh kent Changing shell for kent.Shell changed.

lad os nu logge ind igen med brugeren kent og kontrollere, om standardskallen blev ændret med succes:

sh-5.1$ echo $SHELL/bin/sh

som output ovenfor viser, er standardskallen for brugeren kent nu /bin/sh.

redigering af /etc/adgangskode

vi har lært at bruge kommandoen chsh til at ændre en brugers standardskal. Alternativt kan vi også gøre det ved at redigere /etc/adgangskode-filen.

i er filen /etc/adgangskode en almindelig tekstfil. Det gemmer brugerkontooplysninger, som kræves under Bruger login:

-rw-r--r-- 1 root root 2.1K Mar 12 10:27 /etc/passwd

hvis vi kigger på dets tilladelsesflag, ser vi alle brugere kan læse det, men kun rodbrugeren har lov til at skrive til /etc/pass.

lad os kontrollere indholdet i filen/etc / adgangskode:

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 en brugers kontooplysninger. Felterne i en post er adskilt af kolon.

en post indeholder brugerens kontodata, f.eks. brugernavn, UID, GID og hjemmemappe. Det sidste felt angiver brugerens standardskal.

hvis vi ændrer standardskalfeltet i filen /etc/adgangskode, træder det i kraft, når brugeren næste gang logger ind på systemet næste gang.

en fordel ved at redigere filen /etc/adgangskode er, at vi kan ændre standardskallen for flere brugere i et skud. Sommetider, dette kunne være temmelig praktisk.

vi skal dog huske på, at når vi gemmer filen /etc/adgangskode, sker der ingen validering eller verifikation på de ændrede standardskaller.

derfor skal vi sørge for, at vi har givet gyldige shell-kommandoveje. Ellers har brugeren et problem med at logge ind på systemet næste gang.

konklusion

i denne hurtige artikel har vi lært, hvordan du ændrer en brugers standardskal gennem eksempler.

chsh-kommandoen er ret ligetil for opgaven. Desuden kan den kontrollere, om den givne skal er gyldig i systemet.

hvis vi vil ændre standardskallen for en anden bruger end den nuværende login, skal vi udføre chsh-kommandoen med root-brugertilladelse.

hvis vi kan logge ind som rodbruger, kan vi også ændre standardskallen for flere brugere ved direkte at redigere filen /etc/adgangskode.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.