Como faço para alterar o shell de login global em um sistema unix?

2

Eu quero definir o shell de login (o shell que eles recebem quando fazem login) de todos os usuários existentes e futuros.

A maneira correta de alterar o shell de login parece ser chsh . Mas isso só me permite alterar o shell dos usuários existentes.

Eu poderia colocar o comando shell em /etc/profile , mas isso também está longe de ser uma solução limpa.

Estou usando o debian e quero definir o zsh como o shell padrão.

    
por Shylux 16.04.2014 / 18:26

3 respostas

4

Depende do que você está usando para adicionar usuários. Se for o comando adduser , edite seu arquivo /etc/adduser.conf - lá você encontrará a opção padrão de login shell, a saber: DSHELL .

Se, por outro lado, você preferir usar useradd , use-o com o parâmetro -s <shell of choice> .

Se você deseja alterar o shell de usuários existentes, basta editar /etc/passwd e alterá-lo. sed é uma escolha perfeita no caso de você precisar aplicar alterações em várias linhas. Execute sed 's/bash$/zsh/g' /etc/passwd e veja o que ele faz. Você deve ver o conteúdo de seu /etc/passwd com cada bash substituído por zsh . Se estiver satisfeito com o resultado, você poderá executar o mesmo comando com a opção -i: sed -i 's/bash$/zsh/g' /etc/passwd . Não esqueça de fazer uma cópia do arquivo original, apenas no caso de:)

    
por 16.04.2014 / 18:44
3

Acho que você pode definir o padrão editando o arquivo / etc / default / useradd e alterando a linha SHELL= .

    
por 16.04.2014 / 18:47
1

Acho que useradd permite que você defina isso: useradd -D

When invoked with only the -D option, useradd will display the current 
default values. When invoked with -D plus other options, useradd will 
update the default values for the specified options. Valid 
default-changing options are:

<...snip...>

-s, --shell SHELL
The name of a new user's login shell.
This option sets the SHELL variable in /etc/default/useradd.
    
por 16.04.2014 / 18:32