Wie ändere ich meine Standard-Shell für ein Domain-Konto?

13

Ich benutze ein Samba4-Domänenkonto, um mich auf meinem Laptop anzumelden. Ich wollte es ausprobieren zsh, aber da sich mein Benutzer nicht in befindet, konnte /etc/passwdich chshmeinen Benutzer nicht finden. Kann mir jemand raten, wie ich meine ändern kann login_shell?

Ich konnte nichts in meinem sehen ldap.conf, nssswitch.confoder irgendetwas /etc/pam.d, was geholfen hat ...

Als ich auf den Domänencontroller schaute, dachte ich, ich könnte vielleicht das Samba-Tool verwenden, aber ich sah nichts in der Hilfe, was mich in die richtige Richtung wies ...

Rumpelt
quelle

Antworten:

23

Ich habe im #suse-Kanal auf Freenode danach gefragt, und Miuku schlug dasselbe vor wie Arul. Er erwähnte jedoch zwei Dinge, wenn ich eine Windows-Domäne verwenden würde, könnte ich das loginShell-Attribut festlegen.

Leider bin ich auf einer Samba-Domain, das hat also nicht geholfen. Aber sein letzter Vorschlag war perfekt, erhalten Sie die Ausgabe von:

getent passwd USERNAME

Dies hat den gültigen Eintrag für Ihren Benutzer in / etc / passwd, nehmen Sie diesen, fügen Sie ihn in / etc / passwd ein und aktualisieren Sie die Shell am Ende nach dem gültigen Pfad der Shell, die Sie verwenden möchten. Auf diese Weise wird es nicht für alle Benutzer geändert, und Sie können sicherstellen, dass sich die Shell auf dem Computer befindet, auf dem Sie dies konfigurieren, bevor Sie die Änderung vornehmen.

Rumpelt
quelle
Wenn Sie nicht kopieren möchten , und einfügen, können Sie verwenden: getent passwd `id -un` | sudo tee -a /etc/passwd. Ich bin mir nicht sicher, ob es in allen Shells funktioniert, aber zumindest bash und tcsh sind in Ordnung.
Tom Saleeba
Dies auf einer RHEL 7-Box zu tun, die mit einer Windows AD-Domäne verbunden ist, führte dazu, dass ich vom Server gesperrt wurde, bis die Zeile aus der Datei / etc / passwd entfernt wurde ...
Taegost
Danke für die Info @Taegost, ich hatte RHEL
Rumbles
5

Ich hatte genau das gleiche Problem. Da nicht auf allen Rechnern in meiner Domain zsh installiert ist und nicht alle Benutzer betroffen sein sollen, habe ich am Ende meine .bashrc-Datei eingefügt:

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

Das mag zwar unelegant sein, aber es erledigt zumindest die Arbeit.

Matteo Giani
quelle
Jemand bei meiner Arbeit hat in letzter Zeit etwas Ähnliches gemacht. Er hatte Probleme mit seiner Methode, die .zshrc-Datei nicht zu laden. Ich weiß nicht, ob Ihre Methode in dieser Hinsicht funktionieren würde, haben Sie es versucht? Außerdem stimmt Ihre SHELL-Variable nicht mit dem Pfad zu Ihrem zsh-Bin überein. Ist das richtig? Ich habe ihre Konfiguration auf meine Methode zum Einstellen in der passwd-Datei geändert
Rumbles
Interessant - meine .zshrc wird korrekt gelesen. Was deinen zweiten Punkt angeht, danke, dass du ihn besprochen hast. Es war ein Fehler von meiner Seite. Eine Antwort finden Sie hier: unix.stackexchange.com/questions/330233/…
Matteo Giani
Nun, es ist definitiv eine Möglichkeit, dies zu tun. Ich bevorzuge es immer noch, es in der Datei / etc / passwd wie bei meiner akzeptierten Antwort zu setzen, da Sie bash nicht aufrufen und dann zsh mit bash laden (und ich denke, wenn Sie Strg-D drücken) Ihr Setup Sie zu einer bash - Shell fallen gelassen?) - Es findet der Anwender nicht Sie zSH installiert haben , um sicherzustellen , und für einen Admin um die Änderung zu machen
Rumbles
Wäre es nicht besser, anstatt /usr/bin/zshzu verwenden exec /usr/bin/zsh, den bashShell-Prozess durch den zshShell-Prozess zu ersetzen ?
Tripp Kinetics
Ich denke du hast vielleicht recht @TrippKinetics.
Matteo Giani
2

Wenn Sie zum Bearbeiten der Samba-Domänencontrollerkonfiguration berechtigt sind, können Sie die folgende Eigenschaft festlegen, mit der Sie die Shell in smb.conf festlegen können

template shell    = /bin/zsh

Ich bin mir nicht sicher, was passiert, wenn Sie sich auf einem Computer anmelden, auf dem zsh nicht installiert ist (nicht alle Distributionen haben standardmäßig zsh installiert), aber ich vermute, dass dadurch die Distribution-Standardshell aufgerufen wird.

Wenn Sie es einfach ausprobieren möchten, geben Sie einfach zsh ein, um eine Subshell zu erhalten, die Sie sicher bereits kennen.

Arul Selvan
quelle
Danke, aber betrifft das nicht alle Benutzer, nicht nur meine?
Rumbles
Ja, es ist ein globaler Parameter, der alle Benutzer betrifft. In diesem Fall alle Benutzer, die zshinstalliert haben. Ich bin mir nicht sicher, ob Sie dies auf einen bestimmten Benutzer beschränken können, aber ich würde idmap uidParameter überprüfen , mit denen Sie dies möglicherweise tun können.
Arul Selvan
Danke, aber danach bin ich nicht. Ich möchte nicht jeden Shell ändern, ich möchte nur meine Shell ändern. Ich habe versucht, diese Einstellung in meiner lokalen smb.conf zu ändern und nach dem Neustart hatte es keine Auswirkung
Rumbles