Linux: ni chsh ni ypchsh ne fonctionnent, puis-je changer de shell?

8

Je suis un gars Unix de la vieille école, donc mes compétences Linux sont probablement légèrement dépassées. Mais cela semble être assez simple.

Sur un système Red Hat Linux où je n'ai pas de root (il est administré par le service informatique de l'entreprise), je veux pouvoir changer mon shell de connexion. L'exécution de chsh me donne:

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

J'ai donc exécuté ypchsh à la place:

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

Ce qui donne? Quelqu'un a d'autres idées?

Psaume Ogre33
la source
3
Utilisez -vous vraiment NIS? Ou est-ce quelque chose comme LDAP?
Ignacio Vazquez-Abrams
Je suis à peu près certain que notre réseau utilise LDAP, car NIS est assez désuet à ce stade.
Ogre Psalm33

Réponses:

8
  • NIS: ypchsh

  • LDAP:

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

    ( YOUR_DN peut être dans le formulaire uid=$USER,ou=people,dc=example,dc=org; essayez ldapwhoamide voir)

  • Hesiod: Demandez à l'administrateur système.

  • Active Directory : demandez à l'administrateur système.

user1686
la source
Un collègue m'a dit qu'il pensait que c'était LDAP, mais ldapwhoami donne à "ldap_sasl_interactive_bind_s: méthode d'authentification inconnue (-6) des informations supplémentaires: SASL (-4): aucun mécanisme disponible:", donc je devine Active Directory à ce stade. Je vais devoir le demander.
Ogre Psalm33
@Ogre: Vérifiez /etc/nsswitch.conf (ligne 'passwd') pour vous en assurer.
user1686
5

J'ai utilisé une solution de contournement pour changer mon shell lors de la connexion. Je viens de mettre celui bashqui sert à changer le shell dans mon .profilefichier.

Vous pouvez trouver .profiledans le répertoire personnel de l'utilisateur - utilisez ls -lapour le voir.

Votre .profilefichier peut avoir quelque chose comme ceci:

PATH=/usr/bin
export PATH
#Add this to go bash at login
bash
#end
Kishor Raskar
la source
7
Il s'agit d'une solution de contournement équitable. Cependant, il serait plus facile de n'avoir que / usr / bin / bash sur une seule ligne. De plus, il est probablement plus agréable d'exécuter le nouveau shell, remplaçant ainsi le processus actuel.
Peter Jenkins
Je fais de même avec le .shellrc(changé pour le nom de fichier correct), mais je déclare également une variable d'environnement avant, et exec bashseulement si elle n'est pas définie, pour permettre l'exécution manuelle du shell et pour éviter les boucles malheureuses. Notez que vous n'avez pas à utiliser un dialecte shell particulier, car vous pouvez simplement exécuter un script avec le bon shebang pour effectuer ces opérations.
MayeulC
4

Donc la vraie réponse dans mon cas est que les administrateurs système (IT) veulent verrouiller la configuration standard, vous devez donc leur demander. Mais dans le processus, j'ai découvert quelques commandes plus utiles pour déterminer votre configuration LDAP (s'il se trouve que c'est la façon dont vous êtes configuré), juste au cas où votre système signale la même erreur SASL "ldap_sasl_interactive_bind_s: méthode d'authentification inconnue (-6) informations supplémentaires : SASL (-4): aucun mécanisme disponible: "

Énumérez les méthodes d'authentification SASL prises en charge par votre système:

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

Les résultats pourraient être quelque chose comme:

dn:
supportedSASLMechanisms: EXTERNAL
supportedSASLMechanisms: DIGEST-MD5

Vous pouvez ensuite passer la méthode d'authentification aux commandes LDAP en utilisant l'option -Y comme ceci:

ldappasswd -Y DIGEST-MD5
ldapmodify -Y DIGEST-MD5
Psaume Ogre33
la source
4

Une autre solution consiste à simplement remplacer votre shell YP:

Ajoutez cette ligne à votre /etc/passwd:

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

Exemple:

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

Et ajoutez ce qui suit à votre /etc/nsswitch.conf:

passwd: compat

passwd_compat: nis
Hooman
la source
Comme je l'ai dit, je n'ai pas de racine sur mon système (donc les fichiers dans / etc sont interdits pour l'édition). Mais, cette réponse pourrait aider quelqu'un d'autre avec un problème similaire.
Ogre Psalm33
0

Une autre façon de voir les informations d'identification pour la première réponse est ldapsearch -x

ldapsearch -x uid=$(whoami)
serv-inc
la source