Script για διαχείρηση χρηστών

Ξεκίνησε από ChrsMel, 15 Ιαν 2009, 09:37:50 ΜΜ

« προηγούμενο - επόμενο »

ChrsMel

Scripts για διαχείριση των χρηστών του εργαστηρίου .
Chris Meladianos
IAN 2009
OS: Edubuntu 8.10

Δημιουργούμε το αρχείο κειμένου users.txt με μορφή username password group
π.χ.
kostakis 1804 users
giorgakis 8469 users
maritsa 1681 users
markos 1714 users
.....

script για Προσθήκη χρηστών. O κάθε χρήστης έχει και φάκελο στο /var/www/users άρα αρχικά δίνουμε
sudo mkdir  /var/www/users

Δημιουργούμε το αρχείο κειμένου addusers και κάνουμε επικόληση το script.
   Αφού το αποθηκεύσουμε το κάνουμε εκτελέσιμο : chmod +x addusers   
   
#!/bin/bash
# Script to add a user from text file users.txt
if [ $(id -u) -eq 0 ]; then
   NEW_USERS="users.txt"
   HOME_BASE="/home/"

   cat ${NEW_USERS} | \
   while read username password group
   do

   egrep "^$username" /etc/passwd >/dev/null
   if [ $? -eq 0 ]; then
      echo "$username exists!"
      #exit 1
   else
      pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
      useradd -m -p $pass -g $group $username
      if [ $? -eq 0 ]; then
        mkdir /var/www/users/$username
        ln -s /var/www/users/$username /home/$username/www
        chown -R $username:$group /var/www/users/$username
        usermod -a -G fuse $username 
        echo "User $username has been added to system!"
      else
        echo "Failed to add a user!"
      fi
   fi
   done
else
   echo "Only root may add a user to the system"
   exit 2
fi

Δημιουργούμε το αρχείο κειμένου delusers και κάνουμε επικόληση το script.
   Αφού το αποθηκεύσουμε το κάνουμε εκτελέσιμο : chmod +x delusers

#!/bin/bash
# Script to delete users from text file users.txt
if [ $(id -u) -eq 0 ]; then
   NEW_USERS="users.txt"
   HOME_BASE="/home/"

   cat ${NEW_USERS} | \
   while read username password group
   do
      userdel -r  $username
      rm -r -f  /var/www/users/$username
   done
else
   echo "Only root may add a user to the system"
   exit 2
fi


ChrsMel

#!/bin/bash
#
#Εμφάνιση των μελών ενός group του linux
#
#script : listmembers
#Chris Meladianos
#
if test $# -eq 1 ; then
   gstd=`cat /etc/group |grep $1| cut -d ':' -f 3`
   for group in $(cat /etc/passwd); do
      gid=$(echo $group | cut -d ':' -f 4)
      name=$(echo $group | cut -d ':' -f 1)
      if [ "$gid" = "$gstd" ]; then
         echo  $name
      fi
   done
else
   echo Εμφάνιση των μελών ενός group του linux
   echo Σύνταξη εντολής : listmembers groupname
fi


Στη συνέχεια μπορούμε να χρησιμοποιήσουμε το παραπάνω script listmembers για να κάνουμε κάποια εργασία στα μέλη ενός group.
π.χ. να αλλάξουμε τον ιδιοκτήτη των καταλόγων του χρήστη αν κάτι δε πάει καλά :

#!/bin/bash
# Script to chown homedir user
for user in `./listmembers users`; do
  echo $user
  if [ -e /home/$user ]; then
       chown -R $user:users /home/$user
  fi
  if [ -e /var/www/users/$user ]; then
       chown -R $user:users /var/www/users/$user
  fi
done

ChrsMel

To παρακάτω script χρησιμοποιεί το listmembers που έγραψα παραπάνω για να προσθέσει στην επιφάνεια εργασίας
των χρηστών που ανήκουν στο group users ένα σύνδεσμο με το όνομα pub προς το φάκελο /home/public.

#!/bin/bash
#
for user in `./listmembers users`; do
  if [ -e /home/$user ]; then
       ln -s /home/public /home/$user/Επιφάνεια\ εργασίας/pub
  fi
done

ChrsMel

#3
Πολλές φορές είναι απαραίτητο ο χρήστης να ανήκει και σε άλλο group όπως για παράδειγμα στο group fuse για να βλέπει από το client το usb memory stick που έχει.
Μπορούμε να πρσθέσουμε τη γραμμή
usermod -a -G fuse $username
στο addusers που έγγραψα παραπάνω ή να κάνουμε καινούριο script :

#!/bin/bash
# Script to chown homedir user
for user in `./listmembers users`; do
  #echo $user
  usermod -a -G fuse $user
done

ChrsMel

Για να διαχειριστούμε τους χρήστες Samba που βρίσκοντα πάντα στο  αρχείο users.txt  :
Προσθήκη χρηστών :

#!/bin/bash
# Script smbAddUsers (add users from text file users.txt)
#
if [ $(id -u) -eq 0 ]; then
   NEW_USERS="users.txt"
   cat ${NEW_USERS} | \
   while read username password group
   do
       /scripts/smbchpasswd  $username $password
   done
else
      echo "Only root may add a user to the system"
   exit 2
fi

Σημείωση το  smbchpasswd περιέχει τις παρακάτω γραμμές και για να τρέξει πρέπει να εγκαταστήσουμε το πρόγραμμα expect
με την εντολή : sudo apt-get install expect

#!/bin/sh
# \
exec expect -f "$0" ${1+"$@"}
set password [lindex $argv 1]
spawn smbpasswd -a [lindex $argv 0]
sleep 1
expect "assword:"
send "$password\r"
expect "assword:"
send "$password\r"
expect eof