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
#!/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
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
Πολλές φορές είναι απαραίτητο ο χρήστης να ανήκει και σε άλλο 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
Για να διαχειριστούμε τους χρήστες 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