O usuário não existe no / etc / passwd ao tentar alterar o shell padrão


22

Eu quero mudar meu shell padrão de tcsh para bash. Então eu tentei e foi o que aconteceu:

>sudo chsh userid
Changing the login shell for userid
Enter the new value, or press ENTER for the default
        Login Shell [/xhbin/tcsh]: /bin/bash
chsh: user 'userid' does not exist in /etc/passwd

Na verdade, eu não estou no / etc / passwd. Não sei porque.

O que eu posso fazer?


11
Seu sistema está usando autenticação distribuída (por exemplo, kerberos / winbind)? Nesse caso, os detalhes do usuário não apareceriam no arquivo / etc / passwd local (mas devem estar visíveis usando getent passwd <userid>). Eu acho que se running chshé suportado nesse caso pode depender de configurações em/etc/pam.d/
— steeldriver

Respostas:


15

Meu computador faz parte de uma rede usando autenticação distribuída para que meus detalhes de usuário não apareçam no arquivo local / etc / passwd (mas sejam visíveis usando getent passwd userid). (obrigado @steeldriver) No meu caso, eu tive que fazer chsh em uma máquina principal.


11
você pode explicar o que é uma "máquina principal"?
— Nerrve

No meu caso, estou me referindo a um conjunto de máquinas dedicadas fornecidas pela universidade em sua rede que os alunos podem fazer login e usar (compartilhado). Ao contrário da minha própria máquina no meu escritório.
— rmp251

4
@ rmp251 Esse é exatamente o meu cenário. Não tenho acesso à máquina principal. Você encontrou uma maneira de alterar o shell caso contrário?
— 23418 Geek

@ Geek você encontrou o caminho como resolvê-lo?
— milushov 12/08

13

Existe uma solução alternativa para gnome-terminal:

  1. Vá para Editar -> Preferências do perfil -> Título e comando
  2. Marque Executar um comando personalizado em vez do meu shell
  3. Forneça bashcomo o comando personalizado (ou fish, ou qualquer coisa)

Obrigado! Fornecer um comando para executar imediatamente quando abro meu terminal (ou nova guia do terminal) por meio das configurações trabalhadas para mim.
— cacoder

Isso também funciona para o Konsole e o yakuake no KDE.
— xgdgsc

6

Se você estiver usando a autenticação LDAP pelo PAM ou algo assim, precisará encontrar sua resposta no servidor LDAP. Vamos apontar para o Microsoft AD; nesse caso, sua conta de domínio não está /etc/passwdquando você faz login, mas você pode ver sua propriedade de usuário no AD, por getent passwd | grep user.

Se, no final, mostrar que o seu shell está /bin/csh, é porque no seu AD há um atributo para isso. Portanto, se você tiver uma conta de administrador no AD, poderá corrigi-la. Caso contrário, basta dizer ao administrador do AD para ativar os recursos avançados na guia Exibir dos usuários e computadores do Active Directory> Propriedades do usuário> Atributos UNIX . Lá você pode alterar o shell de login para /bin/bash.

Certifique-se de não esquecer de executar:

sudo /opt/pbis/bin/config LoginShellTemplate /bin/bash

Fonte: O usuário não existe no / etc / passwd ao tentar alterar o shell padrão .


1
A questão era mudar o shell para um usuário, enquanto a configuração do pbis muda para todos os usuários.
— Kubanczyk

5

Se você deseja alterar o shell para seu usuário, não precisa se tornar root. Basta digitar:

chsh

sem sudoe sem argumentos.


Veja também man chsh:

O comando chsh altera o shell de login do usuário. Isso determina o nome
do comando de login inicial do usuário. Um usuário normal só pode alterar o
shell de login para sua própria conta ; o superusuário pode alterar o login
shell para qualquer conta.

A razão pela qual usei o sudo foi porque ele não fez nada sem ele. > whoami userid > chsh You may not change the shell for 'userid'.
— precisa saber é o seguinte

O motivo pelo qual funciona é que o chsh não funciona com o kerberos
— Lennart Rolland

2

Se você esqueceu seu nome de usuário, pode usar o whoamicomando para lembrar de você.

Então, tente com:

sudo chsh $(whoami)

Se, de fato, não existir uma linha começando com seu nome de usuário no /etc/passwdarquivo (o que parece inexplicável), você poderá adicionar uma nova como esta:

nome de usuário : x: 1000: 1000: seu nome real ,,,: / home / nome de usuário : / bin / bash

Consulte também: Noções básicas sobre o formato de arquivo / etc / passwd .


1
Uma razão o usuário pode não existir em / etc / passwd é se a autenticação não é tratada nessa máquina (por exemplo, ldap)
— MatrixManAtYrService

1

Se você estiver tentando fazer o ssh em um host remoto com um usuário de domínio, talvez não seja possível alterar seu shell usando chshcomo o @Masoud mencionado. Mas aqui está uma solução simples para este caso - sempre que você fizer uma ssh na máquina, faça o seguinte:

ssh my-host -t "zsh --login"

ou

ssh my-host -t "cd /data/repos; zsh --login"

Se você também quiser fazer login diretamente em um diretório de trabalho diferente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.