Η δημιουργία χρηστών και ομάδων στο OS X 10.5.x μέσω του τερματικού μπορεί να προκαλέσει εύκολα πονοκέφαλο. Πρέπει να γίνει πολλαπλή χρήση του Directory Service command line utility όπως περιγράφεται εδώ. Τα συμάζεψα λίγο σε ένα απλό script μαζί με τη δυνατότητα διαγραφής του χρήστη, καθώς και δημιουργία και διαγραφή ομάδων.
#!/bin/bash function reconfDirServ() { killall -HUP DirectoryService } echo "|-----------------------------------|" echo "| OS X Users and Groups |" echo "|-----------------------------------|" echo "| 1. Add a user -----------------|" echo "| 2. Delete user -----------------|" echo "| 3. Add a group -----------------|" echo "| 4. Delete group -----------------|" echo "|-----------------------------------|" echo echo -n "Option : "; read input iif [ $input -eq 1 ]; then echo -n "Username : "; read username dscl . -create /Users/$username echo -n "Default shell [/bin/bash]: "; read defaultshell if [ -z $defaultshell ]; then defaultshell="/bin/bash"; fi dscl . -create /Users/$username UserShell $defaultshell echo -n "Full name: "; read fullname dscl . -create /Users/$username RealName "$fullname" echo -n "User ID: "; read userid dscl . -create /Users/$username UniqueID $userid dscl . -create /Users/$username PrimaryGroupID 20 echo -n "Will $username to be an administrator (Y/N) [N]: "; read adminfunc if [ -z $adminfunc ]; then adminfunc="n";fi if [ "$adminfunc" == "y" ] || [ "$adminfunc" == "Y" ]; then dscl . -append /Groups/admin GroupMembership $username fi mkdir /Users/$username dscl . -create /Users/$username NFSHomeDirectory /Users/$username passwd $username chown $userid:staff /Users/$username reconfDirServ elif [ $input -eq 2 ]; then echo -n "Username: "; read username dscl . -delete /Users/$username rm -Rf /Users/$username reconfDirServ elif [ $input -eq 3 ]; then echo -n "Group name: "; read groupname dscl . -create /Groups/$groupname echo -n "Group ID: "; read groupid dscl . -create /Groups/$groupname GroupID $groupid reconfDirServ exit 0 elif [ $input -eq 4 ]; then echo -n "Group name: "; read groupname dscl . -delete /Groups/$groupname reconfDirServ else echo "Select from options 1 - 4" fi
Τα XML αρχεία των χρηστών και των ομάδων βρίσκονται στο /var/db/dslocal/nodes/Default/users και /var/db/dslocal/nodes/Default/groups αντίστοιχα.
Πολύ καλογραμμένο το script σου αλλά δεν καταλαβαίνω πως σου δημιουργήθηκε η ανάγκη να κάνεις add user από CLI σε MacOSX εκτός κι αν έχεις XServer ή χρησιμοποιείς MacOSX ως Server.
Γνώμη μου είναι ότι τα BSD & Linux-based συστήματα είναι σαφώς ανώτερα σε αυτόν τον τομέα κι ότι ο XServer εκτός από ελάχιστες περιπτώσεις είναι αποτυχία σκέτη…
Σ’ευχαριστώ Παναγιώτη:) Χρησιμοποιώ OS X περιστασιακά απομακρυσμένα με SSH και συνήθως όταν βρίσκομαι μπροστά πάντα θα υπάρχουν 3-4 τερματικά ανοιχτά. Ήθελα να δημιουργώ χρήστες και ομάδες για διάφορες δοκιμές, χωρίς πολλά πέρα δώθε στο GUI. Δε γίνεται να έχεις ένα UNIX (certified κι όλας και BSD based) σύστημα και να σου βγάζει τη πίστη για να δημιουργήσεις έναν χρήστη, πέρνει περισσότερο χρόνο απ’ ότι στο GUI.
Ο XServer σίγουρα κάτι θα έχει να προσφέρει αλλά δεν έχω ασχοληθεί καθόλου. Έχεις “παίξει” μαζί του;
Όχι, δεν έχω καμιά εμπειρία με τον XServer. Πρέπει να έχει σχετικά εύκολο menu αλλά το installation ας πούμε ενός server lighttpd+ruby+mysql είναι παρόμοια διαδικασία με έναν linux server και γίνεται μέσω τον ports.
Απλά προσφέρει πολλές υπηρεσίες μέ one-click install νομίζω. Σκέφτομαι να το περάσω σε ένα mac mini G4 από όσο μου είπαν τρέχει άνετα, και να παίξω λίγο μαζί του εκεί πάνω, αλλά δεν έχω τόσο χρόνο τελευταία!
Καλησπέρα, είδες που ροδα είναι και γυρίζει! 🙂 Τελικά μετά από τόσο καιρό, έχω ανάγκη το script σου!
Τώρα ίσως καταλαβαίνεις πως μου δημιουργήθηκε η ανάγκη 😉
Μιας και το ‘dscl’ είναι λίγο χάος, εάν είναι να χρησιμοποιήσεις κάτι που δεν υπάρχει στο script, βάλτο αν θες και στείλτο…