Pesquisa de site

Como alterar o shell de usuário padrão no Linux


O shell, ou interface de linha de comando, é um componente crucial do sistema operacional Linux, fornecendo aos usuários uma maneira poderosa de interagir com o sistema.

Cada usuário em um sistema Linux está associado a um shell padrão, que determina o interpretador de comandos que ele usa ao interagir com o sistema.

A alteração do shell padrão de um usuário pode ser necessária por vários motivos, como preferência pessoal ou necessidade de recursos específicos oferecidos por um shell diferente.

Neste artigo, exploraremos o processo de alteração do shell padrão de um usuário no Linux. O shell é um programa que aceita e interpreta comandos; existem vários shells de código aberto, como bash, sh, ksh, zsh, fish, e muitos outros shells menos conhecidos disponíveis no Linux.

Shell Bash do Linux

Bash (/bin/bash) é um shell popular na maioria, senão em todas as distribuições Linux, e normalmente é o shell padrão para contas de usuário.

Existem vários motivos para alterar o shell de um usuário no Linux, incluindo os seguintes:

  • Para bloquear ou desabilitar logins normais de usuários no Linux usando um shell nologin.
  • Use um script ou programa wrapper de shell para registrar comandos do usuário antes que eles sejam enviados a um shell para execução. Aqui, você especifica o wrapper do shell como o shell de login do usuário.
  • Para atender às demandas de um usuário (quer utilizar um shell específico), principalmente aqueles com direitos administrativos.

Ao criar contas de usuário com os utilitários useradd ou adduser, o sinalizador --shell pode ser usado para especificar o nome do shell de login de um usuário diferente daquele especificado nos respectivos arquivos de configuração.

Um shell de login pode ser acessado a partir de uma interface baseada em texto ou via SSH de uma máquina Linux remota. No entanto, se você fizer login por meio de uma interface gráfica do usuário (GUI), poderá acessar o shell a partir de emuladores de terminal como xterm, konsole e muitos outros.

Listar shells disponíveis em um sistema Linux

No Linux, o arquivo /etc/shells é comumente usado para armazenar uma lista de shells de login válidos instalados no sistema. Este arquivo ajuda a identificar quais shells estão disponíveis para os usuários definirem como shell padrão usando comandos como chsh.

Para visualizar a lista de shells disponíveis em um sistema Linux, você pode usar o seguinte comando:

cat /etc/shells

Exemplo de saída:

/etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/usr/bin/screen

Antes de prosseguir, observe que:

  • Um usuário pode alterar seu próprio shell para qualquer coisa: o que, entretanto, deve estar listado no arquivo /etc/shells.
  • Somente o root pode executar um shell não listado no arquivo /etc/shells.
  • Se uma conta tiver um shell de login restrito, apenas o root poderá alterar o shell desse usuário.

Encontre o shell atual no Linux

Antes de alterar o shell de um usuário padrão, é importante determinar o shell atual executando o seguinte comando echo, que exibe o shell atual para o usuário conectado.

echo $SHELL

/bin/bash

A saída mostra que o usuário está usando o shell Bash (/bin/bash).

Alterando o Shell Padrão no Linux

Agora vamos discutir três maneiras diferentes de alterar o shell de usuário padrão do Linux.

1. Utilitário usermod

O comando usermod é usado para modificar os detalhes da conta de um usuário, armazenados no arquivo /etc/passwd e na opção -s ou --shell é usado para alterar o shell de login do usuário.

Neste exemplo, primeiro verificaremos as informações da conta do usuário tecmint para visualizar seu shell de login padrão e depois alteraremos seu shell de login de /bin/sh para /bin/bash como segue.

grep tecmint /etc/passwd
sudo usermod --shell /bin/bash tecmint
grep tecmint /etc/passwd

Agora o shell padrão do usuário “tecmint” será alterado para bash.

2. Utilitário chsh

O comando chsh é usado para alterar o shell de login padrão do usuário de forma interativa usando a opção -s ou –shell conforme mostrado.

grep tecmint /etc/passwd
sudo chsh --shell /bin/sh tecmint
grep tecmint /etc/passwd

Substitua “/bin/sh” pelo caminho real para o shell que você deseja definir. Por exemplo, para definir o shell como sh, você usaria “/bin/sh“.

É importante observar que as alterações no shell padrão geralmente entram em vigor no seu próximo login.

Os dois métodos acima modificam o shell especificado no arquivo /etc/passwd que você pode editar manualmente como no terceiro método abaixo.

3. Altere o shell do usuário no arquivo /etc/passwd

Neste método, basta abrir o arquivo /etc/passwd usando qualquer um dos seus editores de texto de linha de comando favoritos e alterar o shell de um usuário específico.

sudo vi /etc/passwd
OR
sudo nano /etc/passwd

Localize a linha correspondente ao usuário para quem você deseja alterar o shell padrão. Por exemplo, se a linha for assim:

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/bash

O último campo, /bin/bash, representa o shell padrão (neste caso, Bash).

Para alterar o valor do campo shell para o shell desejado, simplesmente especifique o caminho para um shell (/bin/zsh) conforme mostrado.

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/zsh

Quando terminar de editar, salve e feche o arquivo.

Como instalar outro shell?

Semelhante a outros pacotes de software, shells populares como Zsh e Fish podem ser facilmente instalados a partir do repositório da sua distribuição, conforme mostrado.

Instale Zsh Shell no Linux

Para instalar o Zsh no Linux, use o seguinte comando apropriado para sua distribuição Linux específica.

sudo apt install zsh         [On Debian, Ubuntu and Mint]
sudo yum install zsh         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/zsh  [On Gentoo Linux]
sudo apk add zsh             [On Alpine Linux]
sudo pacman -S zsh           [On Arch Linux]
sudo zypper install zsh      [On OpenSUSE]    

Instale o Fish Shell no Linux

Para instalar o Zsh no Linux, use o seguinte comando apropriado para sua distribuição Linux específica.

sudo apt install fish         [On Debian, Ubuntu and Mint]
sudo yum install fish         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/fish  [On Gentoo Linux]
sudo apk add fish             [On Alpine Linux]
sudo pacman -S fish           [On Arch Linux]
sudo zypper install fish      [On OpenSUSE]    

Não se esqueça de ler estes tópicos relacionados:

Neste artigo, descrevemos várias maneiras de alterar o shell de um usuário no Linux. Para compartilhar suas idéias conosco, use a seção de comentários abaixo.