Comment changer mon shell par défaut sur un compte de domaine

13

J'utilise un compte de domaine samba4 pour me connecter sur mon ordinateur portable. Je voulais essayer zsh, mais comme mon utilisateur ne réside pas, /etc/passwdj'ai trouvé que je chshne trouve pas mon utilisateur. Quelqu'un peut-il me dire comment je peux changer mon login_shell?

Je ne pouvais rien voir en moi ldap.conf, nssswitch.confou quoi /etc/pam.dque ce soit qui ait aidé ...

En regardant sur le contrôleur de domaine, j'ai pensé que je pourrais peut-être utiliser samba-tool, mais je n'ai rien vu dans l'aide qui me dirigeait dans la bonne direction ...

Gronde
la source

Réponses:

24

J'ai posé des questions à ce sujet dans le canal #suse sur Freenode, et Miuku a suggéré la même chose qu'Arul, cependant, il a mentionné deux choses, si j'utilisais un domaine Windows, je pourrais définir l'attribut loginShell.

Malheureusement, je suis sur un domaine samba, donc cela n'a pas aidé. Mais sa dernière suggestion était parfaite, obtenez le résultat de:

getent passwd USERNAME

Cela aura une entrée valide équivalente pour votre utilisateur dans / etc / passwd, prenez-la, collez-la dans / etc / passwd et mettez à jour le shell à la fin pour le chemin valide du shell que vous souhaitez utiliser. De cette façon, il ne le change pas pour tous les utilisateurs, et vous pouvez vous assurer que le shell se trouve sur la machine sur laquelle vous le configurez avant d'effectuer la modification.

Gronde
la source
Si vous ne voulez pas copier et coller, vous pouvez utiliser: getent passwd `id -un` | sudo tee -a /etc/passwd. Je ne sais pas si cela fonctionne dans tous les shells mais au moins bash et tcsh sont ok.
Tom Saleeba
Faire cela sur une boîte RHEL 7 connectée à un domaine Windows AD m'a
obligé
Merci pour l'info @Taegost, je n'avais pas essayé sur RHEL
Rumbles
5

J'avais exactement le même problème. Comme toutes les machines de mon domaine n'ont pas installé zsh, et comme je ne voulais pas affecter tous les utilisateurs, j'ai fini par mettre mon .bashrc:

if [ -x /usr/bin/zsh ]; then
  echo 'starting zsh'
  # export SHELL=/bin/zsh #edit: this is probably not what you want, see the comment.
  exec /usr/bin/zsh
fi

Cela peut être inélégant, mais au moins cela fait le travail.

Matteo Giani
la source
Quelqu'un à mon travail faisait quelque chose de similaire récemment, il avait des problèmes avec sa méthode pour ne pas charger le fichier .zshrc. Je ne sais pas si votre méthode fonctionnerait à cet égard, l'avez-vous essayée? De plus, votre variable SHELL n'est pas la même que le chemin d'accès à votre bin zsh, est-ce correct? J'ai changé leur configuration pour ma méthode de réglage dans le fichier passwd
Rumbles
Intéressant - mon .zshrc est correctement lu. à propos de votre deuxième point, merci de l'avoir apporté, c'était une erreur de mon côté. Voir ici pour une réponse: unix.stackexchange.com/questions/330233/…
Matteo Giani
Eh bien, c'est certainement une façon de le faire, je préfère toujours le définir dans le fichier / etc / passwd comme avec ma réponse acceptée car vous n'invoquez pas bash puis chargez zsh avec bash (et je suppose que si vous appuyez sur ctrl-D dans votre configuration, vous êtes déposé dans un shell bash?) - Cela nécessite que l'utilisateur s'assure que vous avez installé zsh et qu'un administrateur effectue le changement
Rumbles
Ne serait-il pas préférable, au lieu d'utiliser /usr/bin/zsh, d'utiliser exec /usr/bin/zshà la place pour remplacer le bashprocessus shell par le zshprocessus shell?
Tripp Kinetics
Je pense que vous avez peut-être raison @TrippKinetics.
Matteo Giani
2

Si vous avez accès pour modifier la configuration du contrôleur de domaine samba, vous pouvez définir la propriété suivante qui vous permet de définir le shell dans smb.conf

template shell    = /bin/zsh

Je ne sais pas ce qui se passe si vous vous connectez à une machine sur laquelle zsh n'est pas installé (toutes les distributions n'ont pas zsh installé par défaut), mais je suppose qu'il invoquera le shell par défaut de la distribution.

Si vous voulez simplement l'essayer, tapez simplement zsh pour obtenir un sous-shell que je suis sûr que vous connaissez déjà.

Arul Selvan
la source
Merci, mais cela n'affectera-t-il pas tous les utilisateurs, pas seulement le mien?
Rumbles
Oui, c'est un paramètre global qui affecte tous les utilisateurs. Dans ce cas, tous les utilisateurs qui ont zshinstallé. Je ne suis pas sûr que vous puissiez restreindre cela à un utilisateur spécifique, mais je vérifierais les idmap uidparamètres qui pourraient vous permettre de le faire.
Arul Selvan
Merci, mais ce n'est pas ce que je recherche. Je ne veux pas changer tout le monde, je veux juste changer ma coquille. J'ai essayé de changer ce paramètre dans mon smb.conf local et après le redémarrage, cela n'a eu aucun effet
Rumbles