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?

Oger Psalm33
quelle
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.

user1686
quelle
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
Kishor Raskar
quelle
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
Oger Psalm33
quelle
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
Hooman
quelle
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)
serv-inc
quelle