Como altero meu shell padrão em uma conta de domínio

13

Eu uso uma conta de domínio samba4 para fazer login no meu laptop. Eu queria experimentar zsh, mas como meu usuário não reside /etc/passwd, descobri que chshnão consigo encontrá-lo. Alguém pode aconselhar como posso mudar a minha login_shell?

Eu não conseguia ver nada no meu ldap.conf, nssswitch.confou algo /etc/pam.dque me ajudasse ...

Olhando no controlador de domínio, pensei que talvez pudesse usar a ferramenta samba, mas não vi nada na ajuda que me apontasse na direção certa ...

Rumbles
fonte

Respostas:

24

Perguntei sobre isso no canal #suse no Freenode, e Miuku sugeriu o mesmo que Arul, no entanto, ele mencionou duas coisas: se eu estivesse usando um domínio do Windows, poderia definir o atributo loginShell.

Infelizmente, eu estou em um domínio de samba, então isso não ajudou. Mas sua sugestão final foi perfeita, obtenha a saída de:

getent passwd USERNAME

Isso terá a entrada válida equivalente para o usuário em / etc / passwd, pegue-a, cole-a em / etc / passwd e atualize o shell no final para o caminho válido do shell que você deseja usar. Dessa forma, não muda para todos os usuários, e você pode garantir que o shell esteja na máquina em que está configurando isso antes de fazer a alteração.

Rumbles
fonte
Se você não quiser copiar e colar, você pode usar: getent passwd `id -un` | sudo tee -a /etc/passwd. Não tenho certeza se funciona em todas as conchas, mas pelo menos o bash e o tcsh estão ok.
precisa saber é o seguinte
Fazer isso em uma caixa RHEL 7 conectado a um domínio Windows AD causou-me a ser bloqueado para fora do servidor até que a linha foi removido do arquivo / etc / passwd ...
Taegost
Obrigado pela informação @Taegost, eu não tinha experimentado RHEL #
Rumbles
5

Eu tive exatamente o mesmo problema. Como nem todas as máquinas do meu domínio possuem o zsh instalado e como eu não queria afetar todos os usuários, acabei colocando meu .bashrc:

if [ -x /usr/bin/zsh ]; then
  echo 'starting zsh'
  # export SHELL=/bin/zsh #edit: this is probably not what you want, see the comment.
  exec /usr/bin/zsh
fi

Isso pode ser deselegante, mas pelo menos faz o trabalho.

Matteo Giani
fonte
Alguém no meu trabalho estava fazendo algo semelhante recentemente, ele teve problemas com seu método ao não carregar o arquivo .zshrc. Não sei se o seu método funcionaria nesse sentido, você já tentou? Além disso, sua variável SHELL não é igual ao caminho para o zsh bin, está correto? I mudou sua configuração para meu método de configurá-lo no arquivo passwd
Rumbles
Interessante - meu .zshrc está lido corretamente. sobre o seu segundo ponto, obrigado por mencioná-lo, foi um erro do meu lado. Veja aqui uma resposta: unix.stackexchange.com/questions/330233/…
Matteo Giani
Bem, é definitivamente uma maneira de fazê-lo, ainda prefiro configurá-lo no arquivo / etc / passwd, como na minha resposta aceita, como você não invoca o bash e carrega o zsh com o bash (além disso, acho que se você pressionar ctrl-D em sua configuração você é deixado com um shell bash) -? Ele requer o usuário para garantir que você tenha zsh instalado e para um administrador para fazer a mudança
Rumbles
Não seria melhor, em vez de usar /usr/bin/zsh, exec /usr/bin/zshsubstituí-lo pelo bashprocesso do zshshell?
Tripp Kinetics
Acho que você pode estar certo @TrippKinetics.
Matteo Giani
2

Se você tiver acesso para editar a configuração do controlador de domínio samba, poderá definir a seguinte propriedade que permite definir o shell no smb.conf

template shell    = /bin/zsh

Não sei o que acontece se você fizer login em uma máquina que não possui o zsh instalado (nem todas as distros têm o zsh instalado por padrão), mas acho que ele chamará o shell padrão da distribuição.

Se você simplesmente quiser experimentá-lo, basta digitar zsh para obter um subshell que tenho certeza que você já sabe.

Arul Selvan
fonte
Obrigado, mas isso não afetará todos os usuários, não apenas os meus?
quer
Sim, é um parâmetro global que afeta todos os usuários. Nesse caso, todos os usuários que zshinstalaram. Não sei se você pode restringir isso a um usuário específico, mas eu verificaria o idmap uidparâmetro que pode permitir que você faça isso.
Arul Selvan
Obrigado, mas não é isso que estou procurando. Eu não quero mudar o shell de todos, só quero mudar o shell. Tentei alterar essa configuração no meu smb.conf local e, após a reinicialização, não teve efeito.
Rumbles