Login via Linux User & PW (/etc/shadow)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Login via Linux User & PW (/etc/shadow)

    Hi,

    Ich möchte einen Login für einen Userbereich auf meinem Server realisieren. Die Authentifizierung soll direkt über den "realen" Useracount auf dem Server erfolgen, sprich über Username und Passwort die in /etc/shadow hinterlegt sind.

    Allerdings möchte ich aus Sicherheitsgründen natürlich keine Kopie der /etc/shadow unter anderen Zugriffsrechten an einem anderen Ort speichern oder gar dem Apache+PHP Root Rechte geben

    Geht das überhaupt mit PHP ?

    Welche Funktion(en) kann man dafür nutzen ?

    Ich kann zwar php programmieren, aber in diesem Fall finde ich einfach keinen Punkt an dem ich ansetzen kann. Zum Thema Login findet man eine ganze Menge, aber dieser Fall is halt sehr "speziell"

    Gruß,
    Jan

  • #2
    Hallo!

    Normalerweise kann die Datei /etc/shadow nur von root gelesen/geändert werden.
    Da Apache aber normalerweise unter einem anderen Benutzer läuft, hast du somit keine Chance, die Datei zu lesen. Es sei denn, du läßt den Apache unter root laufen oder du vergibst entsprechende Rechte für die Datei /etc/shadow. Von beiden Möglichkeiten rate ich dir aber ab, da es ein zu großes Sicherheitsrisiko darstellt.

    Cheerz Mirandus

    Kommentar


    • #3
      Re: Login via Linux User & PW (/etc/shadow)

      @Mirandus

      Original geschrieben von Elko

      Allerdings möchte ich aus Sicherheitsgründen natürlich keine Kopie der /etc/shadow unter anderen Zugriffsrechten an einem anderen Ort speichern oder gar dem Apache+PHP Root Rechte geben
      Das hatte ich selbst auch schon festgestellt, ich möchte auch nicht auf die Datei zugreifen.

      Die Frage is ob es eine Möglichkeit der User Authentifizierung gibt ohne das PHP direkten Zugriff auf die /etc/shadow hat, weils aufgrund der User Zugriffsrechte ganz einfach nicht möglich ist.

      Trotzdem danke für deine Antwort

      Hat jemand einen Tip wo ich ansetzen kann ?

      Gruß,
      Jan

      Kommentar


      • #4
        Hallo!

        Ok, ich wollte es auch nur noch einmal deutlich machen. Soweit ich weiss gibt es keine Möglichkeit.

        Die spannende Frage ist doch, wieso du überhaupt direkt/indirekt auf
        /etc/shadow zugreifen willst und nicht wie sonst üblich den Login über eine Datenbank realisierst .

        Cheerz Mirandus

        Kommentar


        • #5
          Hallo!

          Ich glaube, ich muss mich korrigieren ;-)

          Vielleicht hilft dir ja dieser Link weiter....



          Wieder etwas gelernt...

          Cheerz Mirandus

          Kommentar


          • #6
            pam: da muß auch wieder lesend auf shadow zugegriffen werden....

            Um zu prüfen, ob der User mit dem Passwort überhaupt existiert, könntest du dir mit fsockopen() einen mini Telnet clienten basteln..

            Oder eine SSH Geschichte
            Zuletzt geändert von combie; 28.06.2006, 16:16.
            Wir werden alle sterben

            Kommentar


            • #7
              @ Mirandus

              Original geschrieben von Mirandus

              Die spannende Frage ist doch, wieso du überhaupt direkt/indirekt auf
              /etc/shadow zugreifen willst und nicht wie sonst üblich den Login über eine Datenbank realisierst .
              Dann müßte ich ja 2x die Daten pflegen, einmal wären die Daten in der /etc/shadow und einmal müßten sie in eine Datenbank. Hier müßte ständig ein abgleich stattfinden. Ändert der User sein Paßwort auf dem Server müßte der Eintrag in der Datenbank auch aktualisiert werden. Außerdem kommt es ja nicht wirklich in Frage, die Daten aus der /etc/shadow in einer anderen Datei mit anderen Zugriffsrechten, geschweige denn in einer Mysql Datenbank, zu speichern.

              Der User soll keine 2 Zugangsdaten haben, daher kommt es nicht wirklich in Frage im für den Login im Interface einen extra Usernamen & PW zuzuweisen.

              Gruß,
              Jan

              Kommentar


              • #8
                Original geschrieben von Mirandus
                Hallo!

                Ich glaube, ich muss mich korrigieren ;-)

                Vielleicht hilft dir ja dieser Link weiter....



                Wieder etwas gelernt...

                Cheerz Mirandus

                Das werd ich mir mal genauer anschaun ! Danke


                Original geschrieben von combie
                pam: da muß auch wieder lesend auf shadow zugegriffen werden....

                Um zu prüfen, ob der User mit dem Passwort überhaupt existiert, könntest du dir einen Telnet clienten basteln..

                Oder eine SSH Geschichte

                Hmm, ein kurzer Login per ssh. Klappt der, ist Username & PW in Ordnung. Ja das wär auch ne möglichkeit.

                Ich werd jetzt mal rumprobieren, wenn jemand noch eine Idee/Tip hat ... immer posten

                Schonmal Danke im voraus

                Gruß,
                Jan

                Kommentar


                • #9
                  Original geschrieben von Mirandus
                  Hallo!

                  Ich glaube, ich muss mich korrigieren ;-)

                  Vielleicht hilft dir ja dieser Link weiter....



                  Wieder etwas gelernt...

                  Cheerz Mirandus

                  Original geschrieben von pam_auth/FAQ
                  By default, most Linux and Solaris systems are configured to only allow the root
                  user to read the shadow file. The recommended
                  way around this is to change permissions on the shadow file so that it is group
                  readable, and chgrp the file to the a group that the webserver is in. Before
                  doing this, you should give it some serious thought as allowing your webserver
                  to read the shadow file gives hackers another way to crack away at your system.

                  Leider unschön

                  Kommentar


                  • #10
                    Original geschrieben von combie
                    pam: da muß auch wieder lesend auf shadow zugegriffen werden....

                    Um zu prüfen, ob der User mit dem Passwort überhaupt existiert, könntest du dir mit fsockopen() einen mini Telnet clienten basteln..

                    Oder eine SSH Geschichte

                    Ich hab mir libssh2 installiert und in PHP eingebunden, das ermöglicht eine Authentifizierung mit nur 2 Zeilen und ohne Sicherheitsprobleme

                    PHP-Code:

                    $connection 
                    ssh2_connect('127.0.0.1'22);
                      
                    if (@
                    ssh2_auth_password($connection$_POST['login_user'], $_POST['login_pw'])) {

                      echo 
                    "Authentication Successful!\n";
                      } else { 

                        die(
                    'Authentication Failed...');
                      } 
                    Danke für den Gedankenanstubser Combie


                    Ps.: Die nicht benötigten SSH Funnktionen hab ich übrigens gesperrt

                    Gruß,
                    Jan
                    Zuletzt geändert von Elko; 28.06.2006, 22:01.

                    Kommentar


                    • #11
                      Original geschrieben von Elko
                      @ Mirandus



                      Dann müßte ich ja 2x die Daten pflegen, einmal wären die Daten in der /etc/shadow und einmal müßten sie in eine Datenbank. Hier müßte ständig ein abgleich stattfinden.
                      du kannst die Linux Kiste die Logins auch gegen eine mysql DB abgleichen lassen,
                      die Benutzer müssen nicht in der in der passwd mit Passwort in der shadow angelegt sein
                      TBT

                      Die zwei wichtigsten Regeln für eine berufliche Karriere:
                      1. Verrate niemals alles was du weißt!


                      PHP 2 AllPatrizier II Browsergame

                      Kommentar

                      Lädt...
                      X