¿Cómo cambio mi shell predeterminado en una cuenta de dominio?

13

Utilizo una cuenta de dominio samba4 para iniciar sesión en mi computadora portátil. Quería probar zsh, pero como mi usuario no reside /etc/passwd, descubrí que chshno puedo encontrarlo. ¿Alguien puede aconsejarme cómo puedo cambiar mi login_shell?

No podía ver nada en mi ldap.conf, nssswitch.confni nada en /etc/pam.deso que ayudara ...

Mirando el controlador de dominio, pensé que tal vez podría usar samba-tool, pero no vi nada en la ayuda que me apuntara en la dirección correcta ...

Retumba
fuente

Respuestas:

24

Pregunté sobre esto en el canal #suse en Freenode, y Miuku sugirió lo mismo que Arul, sin embargo, mencionó dos cosas, si estuviera usando un dominio de Windows podría establecer el atributo loginShell.

Lamentablemente, estoy en un dominio de samba, así que eso no ayudó. Pero su sugerencia final fue perfecta, obtenga el resultado de:

getent passwd USERNAME

Esto tendrá la entrada válida equivalente para su usuario en / etc / passwd, tome esto, péguelo en / etc / passwd y actualice el shell al final para la ruta válida del shell que desea usar. De esta manera, no lo cambia para todos los usuarios, y puede asegurarse de que Shell esté en la máquina en la que está configurando esto antes de realizar el cambio.

Retumba
fuente
Si no desea copiar y pegar, puede utilizar: getent passwd `id -un` | sudo tee -a /etc/passwd. No estoy seguro si funciona en todos los shells, pero al menos bash y tcsh están bien.
Tom Saleeba
Al hacer esto en un cuadro RHEL 7 conectado a un dominio de Windows AD, me bloquearon el servidor hasta que se eliminó la línea del archivo / etc / passwd ...
Taegost
Gracias por la información @Taegost, no había probado RHEL
Rumbles
5

Tuve exactamente el mismo problema. Como no todas las máquinas de mi dominio tienen instalado zsh, y como no quería afectar a todos los usuarios, terminé colocando mi .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

Esto puede ser poco elegante, pero al menos hace el trabajo.

Matteo Giani
fuente
Alguien en mi trabajo estaba haciendo algo similar recientemente, tuvo problemas con su método de no cargar el archivo .zshrc. No sé si su método funcionaría a ese respecto, ¿lo ha intentado? Además, su variable SHELL no es la misma que la ruta a su bin zsh, ¿es correcto? Cambié su configuración a mi método de configuración en el archivo passwd
Rumbles
Interesante: mi .zshrc se lee correctamente. sobre tu segundo punto, gracias por mencionarlo, fue un error de mi parte. Vea aquí para obtener una respuesta: unix.stackexchange.com/questions/330233/…
Matteo Giani
Bueno, definitivamente es una forma de hacerlo, todavía prefiero configurarlo en el archivo / etc / passwd como con mi respuesta aceptada, ya que no invocas bash y luego cargas zsh con bash (además, supongo que si presionas ctrl-D en su configuración, ¿se dejó caer a un shell bash?) - Requiere que el usuario se asegure de que tiene instalado zsh y que un administrador realice el cambio
Rumbles
¿No sería mejor, en lugar de usar /usr/bin/zsh, usar exec /usr/bin/zshpara reemplazar el bashproceso de shell con el zshproceso de shell?
Tripp Kinetics
Creo que puedes tener razón @TrippKinetics.
Matteo Giani
2

Si tiene acceso para editar la configuración del controlador de dominio samba, puede establecer la siguiente propiedad que le permite configurar el shell en smb.conf

template shell    = /bin/zsh

No estoy seguro de qué sucede si inicia sesión en una máquina que no tiene instalado zsh (no todas las distribuciones tienen instalado zsh de forma predeterminada), pero supongo que invocará a la shell predeterminada de distribución.

Si simplemente quiere probarlo, simplemente escriba zsh para obtener una subshell que estoy seguro de que ya sabe.

Arul Selvan
fuente
Gracias, pero ¿eso no afectará a todos los usuarios, no solo al mío?
Rumbles
Sí, es un parámetro global que afecta a todos los usuarios. En este caso, todos los usuarios que lo han zshinstalado. No estoy seguro de que pueda restringir esto a un usuario específico, pero comprobaría el idmap uidparámetro que podría permitirle hacerlo.
Arul Selvan
Gracias, pero eso no es lo que busco. No quiero cambiar el shell de todos, solo quiero cambiar mi shell. Traté de cambiar esta configuración en mi smb.conf local y después de reiniciarlo no tuvo ningún efecto
Rumbles