Αποστολέας Θέμα: Αυτόματη μαζική εγγραφή των νέων μαθητών (Α' Τάξη) στον server του σχολικού εργ.  (Αναγνώστηκε 1550 φορές)

denix

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 137
Έφτιαξα ένα σκριπτάκι για την αυτόματη εγγραφή από το αρχείο excel του Διευθυντή των νέων μαθητών (άνοιγμα λογαριασμών) στον server του εργαστηρίου, αλλά αντιμετωπίζω το εξής πρόβλημα:
Ενώ οι λογαριασμοί δημιουργούνται κανονικά και γίνεται το login σε νέο λογαριασμό όταν κάποιος κάθεται στο server, δεν μπορεί να γίνει login από τα workstation!
  • Ο server τρέχει OpenSUSE 11.0, όπως και τα workstations
  • Πιστοποίηση στο server: local files, στα ws: NIS
  • Το σκριπτάκι χρησιμοποιεί την useradd
Για την ακρίβεια:
Κώδικας: [Επιλογή]
useradd -m -c $PLHRESONOMA -d ${HOME_BASE}${ONOMAXRHSTH} -g ${OMADA} -p ${PASS} $ONOMAXRHSTH
Έχω την υποψία ότι η useradd δεν ενημερώνει το NIS αλλά δεν κατάφερα να βρω περισσότερα.

WORKAROUND:
Προσθέτοντας ένα νέο χρήστη μέσω YAST2 ενεργοποιούνται και λειτουργούν (και μέσω NIS) κανονικά όλοι οι χρήστες που προστέθηκαν με το σκριπτάκι!
Το "τρελό" είναι πως, αν κάνεις edit με το YAST2 έναν χρήστη που προστέθηκε με το σκριπτάκι και αποθηκεύσεις τις αλλαγές, ΠΑΛΙ ΔΕΝ γίνεται login από τους ws μέσω NIS!! Πρέπει να προστεθεί οπωσδήποτε νέος χρήστης!!

Κάθε βοήθεια καλοδεχούμενη!...

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5437
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Παράθεση από: man useradd
CAVEATS
       You may not add a user to a NIS or LDAP group. This must be performed on the corresponding server.

       Similarly, if the username already exists in an external user database such as NIS or LDAP, useradd will deny the user account creation request.

...επομένως απ' όσο καταλαβαίνω τυχερός (!) είσαι που το Yast2 συγχρονίζει τους χρήστες από το /etc/passwd με το NIS όταν προσθέτεις νέο χρήστη. Θα μπορούσε να μην τους προσθέτει καν...

Το πρόβλημα δυστυχώς είναι βαθύτερο, θα έπρεπε τα NIS και LDAP να υποστηρίζονται απευθείας από την glibc και τα pam* modules, αλλά δεν. Αν έχεις όρεξη δες μια σχετική συζήτηση που κάναμε στο #edubuntu:
http://irclogs.ubuntu.com/2009/09/08/%23edubuntu.html - ψάξε για τη λέξη putXXent και διάβασε από εκεί και κάτω, ο sbalneav έψαχνε να δει πόσο δύσκολο θα ήταν να προστεθεί υποστήριξη LDAP/NIS στην glibc και κατά προέκταση στην useradd.

Άρα το μόνο που μπορώ να σκεφτώ είναι να ψάξεις να βρεις πώς θα πεις στο Yast2 να κάνει συγχρονισμό όταν τελειώνει το script σου. Μπορεί να γίνεται με κάποια κλήση dbus, δεν έχω ιδέα όμως από OpenSUSE, πέρα από το ότι ξέρω ότι είναι υπέροχο. :)

ʼσχετο: εάν θες μπορείς αντί για το δικό σου script να χρησιμοποιήσεις το συνημμένο, το οποίο (θα) είναι μέρος των sch-scripts. Παίζει δοκιμασμένα σε Ubuntu, αλλά επειδή είναι σε Python ελπίζω ότι θα σου παίξει και στο OpenSUSE. Υποστηρίζει εισαγωγή μαθητών από .csv και από το ΠΣΔ (λογαριασμοί email μαθητών), και μόλις βρω αρχεία - υποδείγματα θα υποστηρίξει και Νέστορα και e-school ή ότι άλλο πρόγραμμα χρησιμοποιείται στα σχολεία (όποιος έχει υποδείγματα ας μου στείλει).


denix

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 137
Ευχαριστώ Άλκη! Νομίζω με έδωσες μια τρελή  :D ιδέα για το Yast... Θα το ψάξω λίγο και θα ξαναποστάρω.

denix

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 137
To man yast2 λέει:

MODULES WITH COMMAND LINE INTERFACE
       This is a list of YaST modules currently supporting command line inter‐
       face:

       answering_machine,  bootloader,  ca_mgm,  dhcp-server, dns, dns-server,
       fax, firewall, groups, host, http-server,  idedma,  inetd,  irda,  ker‐
       beros-client,   keyboard,   lan,  language,  ldap,  mail,  mouse,  nfs,
       nfs_server, nis, nis_server, ntp-client, power-management,  powertweak,
       printer,  profile-manager,  proxy,  remote,  routing,  runlevel, samba-
       client, samba-server, security, sound,  sysconfig,  tftp-server,  time‐
       zone, tv, users

...και νομίζω το "ζουμί" είναι στο τελευταίο module...
Έτσι, # yast2 users help

Μονάδα Ρύθμισης του YaST users
-------------------------------

Μονάδα ρύθμισης χρήστη

Βασική Σύνταξη:
    yast2 users interactive
    yast2 users <εντολή> [verbose] [επιλογές]
    yast2 users help                       
    yast2 users longhelp                   
    yast2 users xmlhelp                     
    yast2 users <εντολή> help               

Εντολές:
    add     Προσθήκη νέου χρήστη
    delete  Διαγραφή χρήστη. (Ο προσωπικός κατάλογος δεν θα διαγράφει.)
    edit    Επεξεργασία προϋπάρχοντος χρήστη                         
    list    Λίστα των διαθέσιμων χρηστών                             
    show    Εμφάνιση πληροφοριών για τον προεπιλεγμένο χρήστη         

Εκτελέστε 'yast2 users <εντολή> help' για να εμφανιστεί μια λίστα των διαθέσιμων επιλογών.

και # yast2 users add help

Μονάδα Ρύθμισης του YaST users
-------------------------------

Εντολή 'add'
    Προσθήκη νέου χρήστη

    Επιλογές:
        username       [string]  Όνομα σύνδεσης του χρήστη
        uid            [string]  UID του χρήστη         
        cn             [string]  Πλήρες όνομα χρήστη     
        password       [string]  Κωδικός για τον χρήστη 
        home           [string]  Προσωπικός Κατάλογος του χρήστη
        no_home                  Δεν μπορώ να δημιουργήσω τον προσωπικό κατάλογο για το νέο χρήστη                                                             
        shell          [string]  Κέλυφος σύνδεσης χρήστη                       
        gid            [string]  GID του χρήστη της προεπιλεγμένης ομάδας     
        grouplist      [string]  Λίστα των ομάδων που ο χρήστης είναι μέλος (διαχωρισμένες με κόμμα)                                                           
        type           [string]  Τύπος του χρήστη (τοπικός, συστήματος, nis, ldap)                                                                             
        ldap_password  [string]  Κωδικός πρόσβασης για τον Διακομιστή LDAP.   
        help                     Εκτύπωση της βοήθειας για αυτήν την εντολή   
        verbose                  Εμφάνιση πληροφοριών προόδου                 

    Οι επιλογές για τον τύπο του [string] θα πρέπει να γράφονται στην μορφή 'option=value'.

Πράγμα που σημαίνει ότι μάλλον υπάρχει λύση!
Ευχαριστώ για την ιδέα Άλκη!!
Θα το προσπαθήσω  :)