web-dev-qa-db-fra.com

Changer le shell par défaut lorsque l'utilisateur n'est pas dans / etc / passwd

Des idées sur comment puis-je changer la coquille en poisson?

$ Sudo usermod -s /usr/bin/fish jaan
usermod: user 'jaan' does not exist in /etc/passwd
$ getent passwd $USER
jaan:x:15466:94:Jaan Altosaar:/home/jaan:/bin/zsh

Questions connexes: l'utilisateur n'existe pas dans/etc/passwd lors d'une tentative de modification du shell par défaut On dirait qu'il utilise ldap.

$ cat /etc/nsswitch.conf
passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

# Having the NOTFOUND=return bit was breaking dns resolution on web1 and web2. But we probably
# don't want any of the mdns stuff so let's get rid of it all.
#hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
hosts:          files dns

networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       ldap
automount:      ldap

J'ai donc installé le paquet correspondant LDAP.

$ chsh.ldap
LDAP password for jaan:
Enter the new value, or press ENTER for the default
  Login Shell [/bin/zsh]: /usr/bin/fish
Traceback (most recent call last):
  File "/usr/bin/chsh.ldap", line 69, in <module>
    constants.NSLCD_USERMOD_Shell: Shell,
  File "/usr/share/nslcd-utils/nslcd.py", line 128, in usermod
    assert con.get_response() == constants.NSLCD_RESULT_BEGIN
  File "/usr/share/nslcd-utils/nslcd.py", line 103, in get_response
    return self.read_int32()
  File "/usr/share/nslcd-utils/nslcd.py", line 71, in read_int32
    return _int32.unpack(self.read(_int32.size))[0]
struct.error: unpack requires a string argument of length 4
$ which fish
/usr/bin/fish
$ chsh.ldap
LDAP password for jaan:
Enter the new value, or press ENTER for the default
  Login Shell [/bin/zsh]: "/usr/bin/fish"
/usr/bin/chsh.ldap: "/usr/bin/fish" is an invalid Shell
$ /usr/bin/fish
(standard_in) 1: syntax error
Welcome to fish, the friendly interactive Shell
8
Abhishek Bhatia

Attendez, c’est un utilisateur LDAP, il existe un paramètre dans LDAP qui vous permet de changer le shell par défaut pour l’utilisateur qu’il contient.

Vous pouvez installer ldap-account-manager , ce qui vous donne un site Web pour la configuration de LDAP.

apt install ldap-account-manager

enter image description here

Cela peut être fait sur n'importe quel serveur sur lequel vous voulez gérer la configuration. Puisque vous aurez quand même besoin de configurer le serveur dans les fichiers de configuration. Mais je vous recommanderais de l’installer sur le serveur sur lequel le LDAP est en cours d’exécution, pour que vous puissiez vous en souvenir plus facilement.

1
Ziazis

Voici un indice: /usr/bin/chsh.ldap: "/usr/bin/fish" is an invalid Shell. Il semble que vous devriez ajouter /usr/bin/fish à /etc/shells.

1
pim