Linux: né chsh né ypchsh funzionano, posso cambiare la mia shell?


8

Sono un tipo Unix di vecchia scuola, quindi le mie abilità su Linux sono probabilmente leggermente superate. Ma sembra che dovrebbe essere abbastanza semplice.

Su un sistema Red Hat Linux in cui non ho root (è amministrato dal dipartimento IT dell'azienda), voglio poter cambiare la mia shell di login. L'esecuzione di chsh mi dà:

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

Quindi, ho eseguito ypchsh invece:

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

Cosa dà? Qualcuno ha altre idee?


3
Stai davvero usando NIS? O è qualcosa come LDAP?
Ignacio Vazquez-Abrams,

Sono abbastanza sicuro che la nostra rete stia utilizzando LDAP, poiché NIS è piuttosto antiquato a questo punto.
Ogre Salmo33,

Risposte:


8
  • NIS: ypchsh

  • LDAP:

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

    ( YOUR_DN potrebbe essere nel modulo uid=$USER,ou=people,dc=example,dc=org; prova ldapwhoamia vedere)

  • Esiodo: chiedi all'amministratore di sistema.

  • Active Directory : chiedi all'amministratore di sistema.


Un collega mi ha detto che pensavano che fosse LDAP, ma ldapwhoami fornisce "ldap_sasl_interactive_bind_s: metodo di autenticazione sconosciuto (-6) informazioni aggiuntive: SASL (-4): nessun meccanismo disponibile:", quindi sto indovinando Active Directory a questo punto. Dovrò chiederlo.
Ogre Salmo33,

@Ogre: controllare /etc/nsswitch.conf (riga 'passwd') per assicurarsi.
user1686

5

Ho usato una soluzione alternativa per cambiare la mia shell al login. Ho appena messo bashquale è usato per cambiare la shell nel mio .profilefile.

Puoi trovarlo .profilenella home directory dell'utente - usa ls -laper vederlo.

Il tuo .profilefile potrebbe avere qualcosa del genere:

PATH=/usr/bin
export PATH
#Add this to go bash at login
bash
#end

7
Questa è una soluzione equa. Tuttavia, sarebbe più semplice avere solo / usr / bin / bash su una sola riga. Inoltre è probabilmente più bello "eseguire" la nuova shell sostituendo così il processo corrente.
Peter Jenkins,

Faccio lo stesso con .shellrc(modificato con il nome file corretto), ma dichiaro anche una variabile di ambiente prima, e exec bashsolo se non è impostata, per consentire l'esecuzione manuale della shell e per prevenire cicli sfavorevoli. Nota che non devi usare un dialetto shell particolare, dato che puoi semplicemente eseguire uno script con lo shebang giusto per eseguire queste operazioni.
MayeulC

4

Quindi la vera risposta nel mio caso è che gli amministratori di sistema (IT) vogliono bloccare la configurazione standard, quindi è necessario chiedere loro. Ma nel processo ho scoperto alcuni comandi più utili per capire la tua configurazione LDAP (se succede così come sei configurato), nel caso in cui il tuo sistema riporti lo stesso errore SASL "ldap_sasl_interactive_bind_s: metodo di autenticazione sconosciuto (-6) informazioni aggiuntive : SASL (-4): nessun meccanismo disponibile: "

Elencare i metodi di autenticazione SASL supportati dal sistema:

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

I risultati potrebbero essere simili a:

dn:
supportedSASLMechanisms: EXTERNAL
supportedSASLMechanisms: DIGEST-MD5

È quindi possibile passare il metodo di autenticazione ai comandi LDAP utilizzando l'opzione -Y in questo modo:

ldappasswd -Y DIGEST-MD5
ldapmodify -Y DIGEST-MD5

4

Un'altra soluzione è semplicemente sostituire la tua shell YP:

Aggiungi questa linea al tuo /etc/passwd:

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

Esempio:

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

E aggiungi quanto segue al tuo /etc/nsswitch.conf:

passwd: compat

passwd_compat: nis

Come ho detto, non ho root sul mio sistema (quindi i file in / etc sono off-limits per la modifica). Ma questa risposta potrebbe aiutare qualcun altro con un problema simile.
Ogre Salmo33,

0

Un altro modo per visualizzare le credenziali per la risposta principale è ldapsearch -x

ldapsearch -x uid=$(whoami)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.