ändra standardskalet i Linux
översikt
ett interaktivt skal läser kommandon från användarinmatning på en TTY-terminal. Vi kallar det interaktiva skalet efter en användares framgångsrika inloggning standardskalet eller inloggningsskalet.
i denna handledning kommer vi att diskutera hur man ändrar standardskalet för en användare.
introduktion till chsh-kommandot
chsh — kommandot levereras med util-linux-paketet-ett standardpaket som är tillgängligt på alla Linux-distributioner.
med chsh-kommandot med-L-alternativet kan vi lista de skal som är installerade i det aktuella systemet:
$ chsh -l/bin/sh/bin/bash/bin/zsh/usr/bin/zsh/usr/bin/git-shell
en vanligare användning av chsh-kommandot är att ändra standardskalet för en användare.
vi kommer att ta upp hur man gör det i senare avsnitt.
Vilket Skal Använder Jag För Närvarande?
efter en lyckad inloggning kommer vi att vara med vårt standardskal.
innan vi pratar om att ändra standardskalet, låt oss först lära oss ett par sätt att ta reda på vilket skal vi för närvarande använder.
ett sätt är att läsa systemmiljön $SHELL, som lagrar det för närvarande körande skalkommandot:
kent$ echo $SHELL/bin/zsh
som exemplet ovan visar är det löpande skalet för min nuvarande inloggningsanvändare Zsh.
Alternativt kan vi känna till det nuvarande löpande skalet genom att utforska dess processinformation. Linux lagrar PID för det löpande skalet i specialvariabeln $$:
kent$ echo $3492
i exemplet ovan skulle processen med PID 153492 vara den aktuella skalprocessen. Vi kan få detaljerad information om processen med ps-kommandot med-p-alternativet:
kent$ ps -p $$ PID TTY TIME CMD 153492 pts/2 00:00:00 zsh
utgången berättar att Zsh är vårt nuvarande skal.
ändra standardskalet för den aktuella användaren
om vi vill ändra standardskalet för den aktuella inloggningsanvändaren kan vi utföra chsh-kommandot med alternativet-s < NEW_SHELL>.
låt oss ändra standardskalet för den aktuella användaren till Bash:
kent$ chsh -s /bin/bashChanging shell for kent.Password: Shell changed.
det är värt att nämna att efter att vi framgångsrikt ändrat standardskalet kommer det nuvarande skalet inte att ändras. Vi har till exempel ställt in Bash som standardskal för användaren kent, men det aktuella skalet är fortfarande Zsh:
kent$ ps -p $$ PID TTY TIME CMD 153492 pts/2 00:00:00 zsh
det nyligen ändrade standardskalet träder i kraft nästa gång vi loggar in med användaren kent.
standard shell-kommandot är viktigt för användarnas inloggning. Om kommandot är ogiltigt har vi problem med att logga in med användaren.
därför, när vi ändrar standardskalet, kommer chsh-kommandot att verifiera om det angivna skalkommandot är giltigt.
Låt oss se vad som händer om vi skickar en Ogiltig sökväg till chsh-kommandot:
kent$ chsh -s /bin/bashhhhChanging shell for kent.Password: chsh: "/bin/bashhhh" does not exist
vi har lärt oss att chsh-kommandot kan lista de för närvarande installerade skalen i systemet.
chsh-kommandot kommer att vägra att ändra standardskalet om det givna skalet inte finns på systemets lista över giltiga skal:
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 exemplet ovan försökte vi ställa in kommandot /usr/bin/cat som standardskal för användaren kent.
cat – kommandovägen är giltig. Det finns dock inte på shell-listan. Därför avbröts chsh med motsvarande felmeddelande och ledtråd.
ändra standardskalet för andra användare
hittills har vi lärt oss hur man använder chsh-kommandot för att ändra standardskalet för den aktuella inloggningsanvändaren.
vi kan också ändra standardskalet för andra användare med chsh-kommandot, men vi behöver root-behörigheten för att göra det.
syntaxen är ganska enkel:
root# chsh -s NEW_SHELL USERNAME
den här gången loggar vi in som root-användare och ändrar standardskalet för användaren kent till / bin / sh:
root# chsh -s /bin/sh kent Changing shell for kent.Shell changed.
låt oss nu logga in igen med användaren kent och kontrollera om standardskalet har ändrats framgångsrikt:
sh-5.1$ echo $SHELL/bin/sh
som utmatningen ovan visar är standardskalet för användaren kent now /bin/sh.
redigera /etc/passwd-filen
vi har lärt oss att använda chsh-kommandot för att ändra en användares standardskal. Alternativt kan vi också göra det genom att redigera /etc/passwd-filen.
i Linux är/etc / passwd-filen en vanlig textfil. Den lagrar användarkontoinformation, som krävs under användarinloggning:
-rw-r--r-- 1 root root 2.1K Mar 12 10:27 /etc/passwd
om vi tittar på dess behörighetsflaggor ser vi att alla användare kan läsa den, men endast rotanvändaren får skriva till /etc/passwd.
låt oss kontrollera innehållet i filen / etc / passwd:
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...
varje rad i filen registrerar en användares kontoinformation. Fälten i en post separeras av kolon.
en post innehåller användarens kontodata, till exempel användarnamn, UID, GID och hemkatalog, bland andra. Det sista fältet anger användarens standardskal.
om vi ändrar standardskalfältet i/etc / passwd-filen, träder det i kraft när användaren nästa loggar in i systemet nästa gång.
en fördel med att redigera/etc / passwd-filen är att vi kan ändra standardskalet för flera användare i ett skott. Ibland kan det vara ganska bekvämt.
vi bör dock komma ihåg att när vi sparar /etc/passwd-filen kommer Ingen validering eller verifiering att ske på de ändrade standardskalarna.
därför måste vi se till att vi har gett giltiga skalkommandovägar. Annars kommer användaren att ha problem med att logga in på systemet nästa gång.
slutsats
i den här snabbartikeln har vi lärt oss hur man ändrar en användares standardskal genom exempel.
chsh-kommandot är ganska enkelt för uppgiften. Dessutom kan det verifiera om det givna skalet är giltigt i systemet.
om vi vill ändra standardskalet för en annan användare än den nuvarande inloggningen, måste vi utföra chsh-kommandot med root-användarbehörighet.
vidare, om vi kan logga in som root-användare, kan vi också ändra standardskalet för flera användare genom att direkt redigera /etc/passwd-filen.