45 votes

l'utilisateur n'existe pas dans le fichier /etc/passwd lorsque l'on essaie de modifier la valeur par défaut de Shell.

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

>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

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 qui utilise l'authentification distribuée, de sorte que mes données d'utilisateur n'apparaissent pas dans le fichier local /etc/passwd (mais sont visibles à l'aide de getent passwd userid). (merci @steeldriver) Dans mon cas, j'ai dû faire chsh sur une machine principale.

25voto

MrMeszaros Points 597

Il existe une solution de contournement pour gnome-terminal :

  1. Aller à Editar Préférences du profil Titre et commandement .
  2. Vérifier Exécuter une commande personnalisée au lieu de mon Shell. .
  3. Fournir bash en tant que Commande personnalisée (ou fish ou quoi que ce soit d'autre).

9voto

Masoud Points 99

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

Si, à la fin, il apparaît que votre Shell est /bin/csh C'est parce que dans votre AD il y a un attribut pour cela. Si vous disposez d'un compte d'administrateur dans l'AD, vous pouvez donc résoudre le problème vous-même. Sinon, il suffit de demander à votre administrateur AD d'activer les fonctionnalités avancées dans le fichier Voir onglet de Utilisateurs et ordinateurs de Active Directory > Propriétés de l'utilisateur > Attributs UNIX . Là, vous pouvez changer le login Shell en /bin/bash .

N'oubliez pas de courir :

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

Source : L'utilisateur n'existe pas dans le fichier /etc/passwd lorsque l'on essaie de modifier la valeur par défaut de Shell. .

8voto

dux2 Points 211

Si vous essayez de vous connecter à un hôte distant avec un utilisateur de domaine, il se peut que vous ne puissiez pas modifier votre Shell à l'aide de la fonction chsh comme l'a mentionné @Masoud. Mais voici une solution de contournement simple pour ce cas - chaque fois que vous vous connectez à la machine par ssh, faites ceci :

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

ou

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

Si vous souhaitez également vous connecter directement à un autre répertoire de travail.

Editar :

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

  • Modifiez votre fichier de profil : vi ~/.profile
  • Lancez votre processus favori en l'appelant à la dernière ligne, par exemple zsh
  • Sauvegarder et quitter ( :wq )

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

5voto

Tendayi Mawushe Points 10335

Si vous souhaitez modifier le Shell pour votre utilisateur, vous n'avez pas besoin de devenir root. Tapez simplement :

chsh

sans sudo et sans arguments.


こちらも参照 man chsh :

The chsh command changes the user login shell. This determines the name
of the user's initial login command. **A normal user may only change the
login shell for her own account**; the superuser may change the login
shell for any account.

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