45 votes

L'utilisateur n'existe pas dans /etc/passwd lors de la tentative de modification du shell par défaut.

Je veux changer mon shell par défaut de tcsh à bash. J'ai donc essayé et voici ce qui s'est passé :

>sudo chsh identifiant
Changement du shell de connexion pour identifiant
Entrez la nouvelle valeur, ou appuyez sur ENTRÉE pour la valeur par défaut
        Shell de connexion [/xhbin/tcsh] : /bin/bash
chsh : l'utilisateur 'identifiant' n'existe pas dans /etc/passwd

En effet, je ne suis pas dans /etc/passwd. Je ne sais pas pourquoi.

Que puis-je faire ?

27voto

rmp251 Points 991

Mon ordinateur fait partie d'un réseau utilisant une authentification distribuée donc mes détails d'utilisateur n'apparaîtraient pas dans le fichier local /etc/passwd (mais sont visibles en utilisant getent passwd userid). (merci @steeldriver) Dans mon cas, j'ai dû faire chsh sur une machine principale.

25voto

MrMeszaros Points 597

Il y a une solution de contournement pour gnome-terminal:

  1. Allez dans Modifier Préférences du profil Titre et Commande.
  2. Cochez Exécuter une commande personnalisée à la place de mon shell.
  3. Indiquez bash comme Commande personnalisée (ou fish, ou autre chose).

9voto

Masoud Points 99

Si vous utilisez l'authentification LDAP par PAM ou autre chose, vous devez trouver votre réponse dans votre serveur LDAP. Visons le pour Microsoft AD, auquel cas votre compte de domaine n'est pas dans /etc/passwd lorsque vous vous connectez, mais vous pouvez voir votre propriété utilisateur dans AD, en utilisant getent passwd | grep user.

Si à la fin il montre que votre shell est /bin/csh, c'est parce qu'il y a un attribut pour cela dans votre AD. Donc si vous avez un compte administrateur sur AD, vous pouvez régler vous-même le problème. Sinon, indiquez simplement à votre administrateur AD d'activer les fonctionnalités avancées dans l'onglet Vue des Utilisateurs de l'annuaire Active Directory et ordinateurs > Propriétés de l'utilisateur > Attributs UNIX. Vous pouvez y changer le shell de connexion en /bin/bash.

Assurez-vous de ne pas oublier d'exécuter :

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

Source: L'utilisateur n'existe pas dans /etc/passwd lorsqu'on essaie de changer le shell par défaut.

8voto

dux2 Points 211

Si vous essayez de vous connecter en ssh sur un hôte distant avec un utilisateur de domaine, vous pourriez ne pas être en mesure de modifier votre shell en utilisant chsh comme @Masoud l'a mentionné. Mais voici une solution de contournement simple pour ce cas - chaque fois que vous vous connectez en ssh sur la machine, faites ceci :

ssh mon-hôte -t "zsh --login"

ou

ssh mon-hôte -t "cd /data/repos; zsh --login"

Si vous voulez également vous connecter directement dans un répertoire de travail différent.

Éditer:

Une autre option simple qui ne nécessite pas de manipulation de commande ssh :

  • Éditez votre fichier de profil : vi ~/.profile
  • Lancez votre shell préféré en l’appelant à la dernière ligne, par exemple zsh
  • Enregistrez et quittez (:wq)

Cette solution a également l'avantage de persister lors de la création de nouveaux sous-shells, par exemple lors de l'utilisation de tmux.

5voto

Tendayi Mawushe Points 10335

Si vous voulez changer le shell pour votre utilisateur, vous n'avez pas besoin de devenir root. Il suffit de taper :

chsh

sans sudo et sans argument.


Voir aussi man chsh :

La commande chsh change le shell de connexion de l'utilisateur. Cela détermine le nom
de la commande de connexion initiale de l'utilisateur. **Un utilisateur normal ne peut changer le
shell de connexion que pour son propre compte** ; le superutilisateur peut changer le shell de connexion
pour n'importe quel compte.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X