• moderiert von:
  • Arktur3.4Admin,
  • Arktur3.5Admin
Zum aktuellsten Beitrag
re: [schan-user] kennwort selbst =?iso-8859-15?q?=e4ndern?=
  • verfasst: 13.06.2008, 23:00
     
    registriert:
     Februar 2006
    Status:
    offline
    letzter Besuch:
    05.02.09
    Beiträge:
    5816
    Absender: hans-dietrich kirmse
    1. Hallo,
    2.  
    3. PeterLüdecke schrieb:
    4. > Hallo,
    5. >
    6. > Hans-Dietrich Kirmse schrieb:
    7. >
    8. >> Ist mit Universalzugang ein Platznutzer gemeint?
    9. >
    10. > Ja
    11. >
    12. >>
    13. >> ich habe eine Vermutung, woran das liegt.
    14.  
    15. Ich habe das an dem bereitgestellten LDIF-File (Version beta43d) und meinen
    16. Versionen RC1 (Schule) und RC5 (Testrechner) überprüft und es hat sich
    17. bestätigt, dass das Attribut "sambaPwdCanChange" denselben Wert bekommt
    18. wie das Attribut "sambaPwdLastSet", nämlich die aktuelle Zeit zu dem der
    19. Account erstellt wird. Das bedeutet natürlich, dass das Passwort auch ab dem
    20. Moment geändert werden kann.
    21.  
    22. Da die Routine von Reiner auf eine Routine von OpenLDAP zur Passwortänderung
    23. zurückgreift (im Quelltext steht dort "das ist Politik", weil damit nicht nur
    24. das Passwort gesetzt wird, sondern auch gleich alle dazugehörigen Attribute),
    25. ist das also so völlig richtig und auch so gewollt.
    26.  
    27. Aber da du es (durchaus verständlich) anders haben willst, stelle ich dir ein
    28. kleines Script bereit, welches einfach bei "sambaPwdCanChange" (nur) bei den
    29. Platznutzern die Zahl 1600000000 einträgt. Das bedeutet, dass bis zum
    30. 13.9.2020 14:26:40 kann dann das Passwort nicht mehr geändert werden. ;)
    31. Die aktuelle Zeit in Sekunden liegt ungefähr bei 1213388000.
    32.  
    33. Das bedeutet, von setze die Passwörter auf den Wert, den du haben willst und
    34. dann lass das Script laufen. Dann ist das Passwort solange 'fest'.
    35.  
    36. Der Vorschlag von Thorsten hat m.E. einen kleinen Haken. Man kann dann die
    37. Accounts ohne Passwort benutzen, man muss es aber nicht. Bedeutet, man kann
    38. dir dann immernoch den Streich spielen und mal den Account blockieren.
    39.  
    40. Da ich hier nur eine einzelne Testmaschine ohne Netz und damit ohne Clients
    41. habe, kann ich leider nicht wirklich testen. (Das Script macht aber bei mir
    42. das, was es soll.) Würde mich deswegen über Rückmeldung sehr freuen (auch per PM).
    43.  
    44. Mit freundlichen Grüßen
    45. Hans-Dietrich
    46.  
    47. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    48. #!/usr/bin/perl
    49. use warnings;
    50. use strict;
    51.  
    52. use Net::LDAP;
    53.  
    54. my ($ldap_base, $pass, $ldap, $mesg, $our_time);
    55.  
    56. $our_time = 1600000000;           # entspricht dem 13.9.2020 14:26:40
    57.  
    58. # da wir in den LDAP schreiben, holen wir uns zuerst das LDAP-Passwort
    59. open DATEI, '<', '/etc/ldap.secret'
    60.    or die "konnte ldap.secret nicht oeffnen, $!\n";
    61. $pass = <DATEI>;
    62. chomp($pass);     # falls Zeilenumbruch, diesen entfernen
    63. close DATEI;
    64.  
    65. # wir holen uns die Suchbasis
    66. open DATEI, '<', '/etc/ldap.conf'
    67.    or die "konnte ldap.conf nicht oeffnen, $!\n";
    68. while (my $zeile = <DATEI>) {
    69.    if ($zeile =~ m/^\s*base\s+(\w.*\w)\s*$/) {
    70.      $ldap_base = ;
    71.      last;
    72.    }
    73. }
    74. close DATEI;
    75.  
    76. # wir verbinden uns mit dem LDAP
    77. $ldap = Net::LDAP->new('127.0.0.1', version => 3) or die "$@";
    78. $ldap->bind( dn       => "cn=admin,$ldap_base",
    79.               password => $pass )
    80.    or die "konnte mich nicht mit dem Server verbinden, $!\n";
    81.  
    82. # Wir holen uns alle Logins von den Platzaccounts
    83. $mesg = $ldap->search(base => "ou=PLATZNUTZER,o=SCHULE,$ldap_base",
    84.                        filter => 'gidNumber=100',
    85.                        attrs  => 'uid'); # Dummy-Funktion! Wir brauchen
    86. $mesg->code and die $mesg->error;       # den DN, der wird immer geliefert
    87.  
    88. # Wir setzen jetzt bei allen Platzaccounts das Attribut 'sambaPwdCanChange'
    89. foreach my $entry ($mesg->entries) {
    90.    $ldap->modify( $entry->dn,
    91.                   replace => { sambaPwdCanChange => $our_time } );
    92. }
    93.  
    94. # wir trennen uns vom LDAP
    95. $ldap->unbind;
    96.  
    97. # wir geben jetzt noch an, bei welchen Accounts geaendert wurde
    98. print "Bei folgenden Accounts das Attribut sambaPwdCanChange geaendert:\n";
    99. foreach my $entry ($mesg->entries) {
    100.    print $entry->get_value('uid'), ' ';
    101. }
    102. print "\nBin fertig! \n";
    103.  
    104. __END__
    105.  
    106.  
    107.  
    108.  
    109. _______________________________________________
    110. schan-user mailing list
    111. schan-user@listserv.heise.de
    112. http://www.heise.de/bin/newsletter/listinfo/schan-user

 Suchen:


 Umfrage

(Nur für angemeldete Benutzer)

Was wird hier am meisten vermisst?

[ Ergebnis | Umfragen ]

Stimmen: 621
Kommentare: 0

 Zitate

CTRL-ALT-DEL. Auch STRG-ALT-ENTF genannt

-- anonymous