Linux: Weder chsh noch ypchsh funktionieren. Kann ich meine Shell ändern?


8

Ich bin ein Unix-Typ der alten Schule, daher sind meine Linux-Kenntnisse wahrscheinlich etwas veraltet. Aber das scheint einfach genug zu sein.

Auf einem Red Hat Linux-System, auf dem ich kein Root-Konto habe (es wird von der IT-Abteilung des Unternehmens verwaltet), möchte ich meine Anmeldeshell ändern können. Laufen chsh gibt mir:

$ chsh -s /bin/bash
chsh: can only change local entries; use ypchsh instead.

Also habe ich stattdessen ypchsh ausgeführt:

$ ypchsh userid
ypchsh: can't find the master ypserver: Internal NIS error

Was gibt? Hat jemand andere Ideen?


3
Verwenden Sie wirklich NIS? Oder ist es so etwas wie LDAP?
Ignacio Vazquez-Abrams

Ich bin mir ziemlich sicher, dass unser Netzwerk LDAP verwendet, da NIS derzeit ziemlich veraltet ist.
Oger Psalm33

Antworten:


8
  • NIS: ypchsh

  • LDAP:

    $ ldapmodify <<EOF
    dn: YOUR_DN
    changetype: modify
    replace: loginShell
    loginShell: /bin/bash
    -
    EOF
    

    ( YOUR_DN könnte in der Form sein uid=$USER,ou=people,dc=example,dc=org; versuchen Sie ldapwhoamizu sehen)

  • Hesiod: Fragen Sie den Systemadministrator.

  • Active Directory : Fragen Sie den Systemadministrator.


Ein Mitarbeiter sagte mir, dass er dachte, es sei LDAP, aber ldapwhoami gibt "ldap_sasl_interactive_bind_s: Unbekannte Authentifizierungsmethode (-6) zusätzliche Informationen: SASL (-4): kein Mechanismus verfügbar:", daher schätze ich Active Directory an dieser Stelle. Ich muss es fragen.
Oger Psalm33

@Ogre: Überprüfen Sie /etc/nsswitch.conf (Zeile 'passwd'), um sicherzugehen.
user1686

5

Ich habe eine Problemumgehung verwendet, um meine Shell beim Anmelden zu ändern. Ich habe gerade gesetzt, bashwas verwendet wird, um die Shell in meiner .profileDatei zu ändern .

Sie finden es .profileim Home-Verzeichnis des Benutzers - verwenden Sie ls -la, um es anzuzeigen.

Ihre .profileDatei enthält möglicherweise Folgendes:

PATH=/usr/bin
export PATH
#Add this to go bash at login
bash
#end

7
Dies ist eine faire Problemumgehung. Es wäre jedoch einfacher, nur / usr / bin / bash in einer einzelnen Zeile zu haben. Außerdem ist es wahrscheinlich besser, die neue Shell auszuführen und damit den aktuellen Prozess zu ersetzen.
Peter Jenkins

Ich mache dasselbe mit dem .shellrc(in den richtigen Dateinamen geändert), deklariere aber auch vorher eine Umgebungsvariable und exec bashnur, wenn sie nicht festgelegt ist, um die manuelle Ausführung der Shell zu ermöglichen und unglückliche Schleifen zu verhindern. Beachten Sie, dass Sie keinen bestimmten Shell-Dialekt verwenden müssen, da Sie einfach ein Skript mit dem richtigen Shebang ausführen können, um diese Vorgänge auszuführen.
MayeulC

4

Die eigentliche Antwort in meinem Fall ist also, dass die Systemadministratoren (IT) die Standardkonfiguration sperren möchten, sodass Sie sie fragen müssen. Im Prozess habe ich jedoch einige weitere hilfreiche Befehle zum Herausfinden Ihrer LDAP-Konfiguration entdeckt (falls dies so ist, wie Sie konfiguriert sind), nur für den Fall, dass Ihr System denselben SASL-Fehler meldet: "ldap_sasl_interactive_bind_s: Unbekannte Authentifizierungsmethode (-6) Zusätzliche Informationen : SASL (-4): kein Mechanismus verfügbar: "

Listen Sie die SASL-Authentifizierungsmethoden auf, die Ihr System unterstützt:

 ldapsearch -x -LLL -s "base" -b "" supportedSASLMechanisms

Die Ergebnisse könnten ungefähr so ​​aussehen:

dn:
supportedSASLMechanisms: EXTERNAL
supportedSASLMechanisms: DIGEST-MD5

Sie können die Authentifizierungsmethode dann mit der folgenden Option an LDAP-Befehle übergeben:

ldappasswd -Y DIGEST-MD5
ldapmodify -Y DIGEST-MD5

4

Eine andere Lösung besteht darin, Ihre YP-Shell einfach zu überschreiben:

Fügen Sie diese Zeile zu Ihrem hinzu /etc/passwd:

+<USERNAME>::::::/bin/bash

Beispiel:

+psalm33::::::/bin/bash

Und fügen Sie Folgendes hinzu /etc/nsswitch.conf:

passwd: compat

passwd_compat: nis

Wie bereits erwähnt, habe ich kein Root-Verzeichnis auf meinem System (daher sind Dateien in / etc für die Bearbeitung nicht zulässig). Diese Antwort kann jedoch jemand anderem bei einem ähnlichen Problem helfen.
Oger Psalm33

0

Eine andere Möglichkeit, die Anmeldeinformationen für die Top-Antwort anzuzeigen, ist ldapsearch -x

ldapsearch -x uid=$(whoami)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.