Febbraio 27, 2022

Modifica della shell predefinita in Linux

Panoramica

Una shell interattiva legge i comandi dall’input dell’utente su un terminale tty. Chiamiamo la shell interattiva dopo l’accesso riuscito di un utente la shell predefinita o la shell di accesso.

In questo tutorial, stiamo andando a discutere come cambiare la shell predefinita di un utente.

Introduzione al comando chsh

Il comando chsh viene fornito con il pacchetto util-linux, un pacchetto standard disponibile su tutte le distribuzioni Linux.

Utilizzando il comando chsh con l’opzione-l, possiamo elencare le shell installate nel sistema corrente:

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

Un uso più comune del comando chsh è quello di cambiare la shell predefinita di un utente.

Affronteremo come farlo nelle sezioni successive.

Quale shell sto attualmente utilizzando?

Dopo un accesso riuscito, saremo con la nostra shell predefinita.

Prima di parlare di cambiare la shell predefinita, impariamo prima un paio di modi per scoprire quale shell stiamo attualmente utilizzando.

Un modo è leggere l’ambiente di sistema SHELL SHELL, che memorizza il comando shell attualmente in esecuzione:

kent$ echo $SHELL/bin/zsh

Come mostra l’esempio sopra, la shell in esecuzione del mio attuale utente di accesso è Zsh.

In alternativa, possiamo conoscere la shell corrente esplorando le sue informazioni di processo. Linux memorizza il PID della shell in esecuzione nella variabile speciale$$:

kent$ echo $3492

Nell’esempio sopra, il processo con PID 153492 sarebbe il processo di shell corrente. Possiamo ottenere informazioni dettagliate sul processo utilizzando il comando ps con l’opzione-p:

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

L’output ci dice che Zsh è la nostra shell corrente.

Modifica della shell predefinita dell’utente corrente

Se vogliamo cambiare la shell predefinita dell’utente di accesso corrente, possiamo eseguire il comando chsh con l’opzione-s <NEW_SHELL>.

Cambiamo la shell predefinita dell’utente corrente in Bash:

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

Vale la pena ricordare che dopo aver modificato con successo la shell predefinita, la shell attualmente in esecuzione non verrà modificata. Ad esempio, abbiamo impostato Bash come shell predefinita dell’utente kent, ma la shell corrente è ancora Zsh:

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

La shell predefinita appena modificata avrà effetto la prossima volta che effettueremo l’accesso con l’utente kent.

Il comando shell predefinito è essenziale per l’accesso degli utenti. Se il comando non è valido, avremo problemi di accesso con l’utente.

Pertanto, mentre stiamo cambiando la shell predefinita, il comando chsh verificherà se il comando shell specificato è valido.

Vediamo cosa succederà se passiamo un percorso non valido al comando chsh:

kent$ chsh -s /bin/bashhhhChanging shell for kent.Password: chsh: "/bin/bashhhh" does not exist

Abbiamo appreso che il comando chsh può elencare le shell attualmente installate nel sistema.

Il comando chsh rifiuterà di modificare la shell predefinita se la shell specificata non è nell’elenco delle shell valide del sistema:

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.

Nell’esempio sopra, abbiamo tentato di impostare il comando /usr/bin/cat come shell predefinita dell’utente kent.

Il percorso del comando cat è valido. Tuttavia, non è nell’elenco delle shell. Pertanto, chsh interrotto con il corrispondente messaggio di errore e suggerimento.

Modifica della shell predefinita di altri utenti

Finora, abbiamo imparato come utilizzare il comando chsh per modificare la shell predefinita dell’utente di accesso corrente.

Possiamo anche cambiare la shell predefinita di altri utenti usando il comando chsh, ma abbiamo bisogno del permesso di root per farlo.

La sintassi è piuttosto semplice:

root# chsh -s NEW_SHELL USERNAME

Questa volta, accediamo come utente root e cambiamo la shell predefinita dell’utente kent in / bin / sh:

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

Ora, registriamo di nuovo con l’utente kent e controlliamo se la shell predefinita è stata modificata correttamente:

sh-5.1$ echo $SHELL/bin/sh

Come mostra l’output sopra, la shell predefinita dell’utente kent è ora / bin / sh.

Modifica del file /etc/passwd

Abbiamo imparato a usare il comando chsh per cambiare la shell predefinita di un utente. In alternativa, possiamo anche farlo modificando il file/etc / passwd.

In Linux, il file/etc / passwd è un file di testo normale. Memorizza le informazioni dell’account utente, che è necessario durante l’accesso dell’utente:

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

Se diamo un’occhiata ai suoi flag di autorizzazione, vedremo che tutti gli utenti possono leggerlo, ma solo l’utente root è autorizzato a scrivere su /etc/passwd.

Controlliamo il contenuto nel file/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...

Ogni riga del file registra le informazioni sull’account di un utente. I campi in un record sono separati da due punti.

Un record contiene i dati dell’account dell’utente, come nome utente, UID, GID e home directory, tra gli altri. L’ultimo campo indica la shell predefinita dell’utente.

Se cambiamo il campo shell predefinito nel file /etc/passwd, avrà effetto quando l’utente accede al sistema la prossima volta.

Un vantaggio di modificare il file /etc/passwd è che possiamo cambiare la shell predefinita di più utenti in un solo colpo. A volte, questo potrebbe essere abbastanza conveniente.

Tuttavia, dovremmo tenere presente che quando salviamo il file /etc/passwd, nessuna convalida o verifica avverrà sulle shell predefinite modificate.

Pertanto, dobbiamo assicurarci di aver fornito percorsi di comando shell validi. In caso contrario, l’utente avrà un problema di accesso al sistema la prossima volta.

Conclusione

In questo breve articolo, abbiamo imparato come cambiare la shell predefinita di un utente attraverso esempi.

Il comando chsh è piuttosto semplice per l’attività. Inoltre, pu verificare se la shell data valida nel sistema.

Se vogliamo cambiare la shell predefinita di un utente diverso da quello di login corrente, dobbiamo eseguire il comando chsh con il permesso dell’utente root.

Inoltre, se possiamo accedere come utente root, possiamo anche cambiare la shell predefinita di più utenti modificando direttamente il file /etc/passwd.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.