Linux: nem o chsh nem o ypchsh estão funcionando, posso mudar meu shell?

8

Eu sou um cara do Unix da velha escola, então minhas habilidades em Linux provavelmente estão um pouco desatualizadas. Mas isso parece que deve ser bastante simples.

Em um sistema Red Hat Linux em que não possuo root (ele é administrado pelo departamento de TI da empresa), desejo poder alterar meu shell de login. Executar chsh me dá:

$ chsh -s /bin/bash
chsh: can only change local entries; use ypchsh instead.

Então, eu executei o ypchsh:

$ ypchsh userid
ypchsh: can't find the master ypserver: Internal NIS error

O que da? Alguém tem outras ideias?

Salmo Ogro33
fonte
3
Você está realmente usando o NIS? Ou é algo como LDAP?
Ignacio Vazquez-Abrams
Tenho certeza de que nossa rede está usando LDAP, pois o NIS é bastante antiquado neste momento.
Ogre Psalm33

Respostas:

8
  • NIS: ypchsh

  • LDAP:

    $ ldapmodify <<EOF
    dn: YOUR_DN
    changetype: modify
    replace: loginShell
    loginShell: /bin/bash
    -
    EOF
    

    (O SEU_DN pode estar no formulário uid=$USER,ou=people,dc=example,dc=org; tente ldapwhoamiver)

  • Hesíodo: pergunte ao administrador do sistema.

  • Active Directory : pergunte ao administrador do sistema.

gravidade
fonte
Um colega de trabalho me disse que achava que era LDAP, mas ldapwhoami fornece "ldap_sasl_interactive_bind_s: método de autenticação desconhecido (-6) informações adicionais: SASL (-4): nenhum mecanismo disponível:", portanto, estou adivinhando o Active Directory neste momento. Vou ter que perguntar a TI.
Ogre Psalm33
@Ogre: Verifique /etc/nsswitch.conf (linha 'passwd') para ter certeza.
grawity
5

Eu usei uma solução alternativa para alterar meu shell no login. Acabei de colocar o bashque é usado para alterar o shell no meu .profilearquivo.

Você pode encontrar .profileno diretório inicial do usuário - use ls -lapara vê-lo.

Seu .profilearquivo pode ter algo como isto:

PATH=/usr/bin
export PATH
#Add this to go bash at login
bash
#end
Kishor Raskar
fonte
7
Esta é uma solução justa. Embora, seria mais fácil ter apenas / usr / bin / bash em uma única linha. Também é provavelmente melhor executar o novo shell, substituindo o processo atual.
22612 Peter
Faço o mesmo com o .shellrc(alterado para o nome correto do arquivo), mas também declaro uma variável de ambiente antes, e exec bashsomente se não estiver definida, para permitir a execução manual do shell e para evitar loops infelizes. Observe que você não precisa usar um dialeto de shell específico, pois você pode simplesmente executar um script com o shebang certo para executar essas operações.
MayeulC
4

Portanto, a resposta real no meu caso é que os administradores de sistema (IT) querem bloquear a configuração padrão, então você precisa perguntar a eles. Porém, no processo, descobri alguns comandos mais úteis para descobrir sua configuração LDAP (se é assim que você está configurado), caso o sistema relate o mesmo erro SASL "ldap_sasl_interactive_bind_s: método de autenticação desconhecido (-6) : SASL (-4): nenhum mecanismo disponível: "

Liste os métodos de autenticação SASL suportados pelo seu sistema:

 ldapsearch -x -LLL -s "base" -b "" supportedSASLMechanisms

Os resultados podem ser algo como:

dn:
supportedSASLMechanisms: EXTERNAL
supportedSASLMechanisms: DIGEST-MD5

Em seguida, você pode passar o método de autenticação para os comandos LDAP usando a opção -Y da seguinte maneira:

ldappasswd -Y DIGEST-MD5
ldapmodify -Y DIGEST-MD5
Salmo Ogro33
fonte
4

Outra solução é simplesmente substituir seu shell YP:

Adicione esta linha ao seu /etc/passwd:

+<USERNAME>::::::/bin/bash

Exemplo:

+psalm33::::::/bin/bash

E adicione o seguinte ao seu /etc/nsswitch.conf:

passwd: compat

passwd_compat: nis
Hooman
fonte
Como afirmei, não tenho raiz no meu sistema (portanto, os arquivos em / etc estão fora dos limites para edição). Mas, essa resposta pode ajudar alguém com um problema semelhante.
Ogre Psalm33
0

Outra maneira de ver as credenciais da resposta principal é ldapsearch -x

ldapsearch -x uid=$(whoami)
serv-inc
fonte