Διαχείριση χρηστών
Το Linux, όπως έχουμε αναφέρει αρκετές φορές, ανήκει στην οικογένεια των λειτουργικών συστημάτων UNIX, τα οποία σχεδιάστηκαν εξαρχής ως πολυχρηστικά. Πριν ακόμη γίνουν διαδεδομένοι οι οικιακοί υπολογιστές, τέτοια συστήματα υπήρχαν στα πανεπιστήμια και στις μεγάλες εταιρείες και φιλοξενούσαν έως και αρκετές χιλιάδες χρήστες. Η διαχείριση ενός τέτοιου αριθμού χρηστών ήταν αρκετά δύσκολη και η ανάγκη οδήγησε στην ανάπτυξη αρκετών εντολών και εργαλείων για αυτό το σκοπό. Το Linux, φυσικά υποστηρίζει όλες αυτές τις εντολές και προσφέρει και νέες δικές του. Επίσης, με την άνθηση των γραφικών περιβάλλοντων, εμφανίστηκαν και αντίστοιχα εργαλεία που σκοπό έχουν να βοηθήσουν στην διαχείριση των χρηστών με κάποιο πιο φιλικό τρόπο από την γραμμή εντολών του κελύφους.
Ένα πρώτο βήμα στην διαχείριση των χρηστών είναι η καταμέτρηση των συνδεδεμένων χρηστών την κάθε στιγμή. Δύο απλές εντολές που χρησιμοποιούνται για αυτόν το σκοπό είναι η w και η who. Πρακτικά λειτουργούν με τον ίδιο τρόπο, αν και η w παρέχει κάπως πιο συνεκτική πληροφορία. Ακολουθούν δύο παραδείγματα:
# w 12:12:47 up 1 day, 12:52, 2 users, load average: 1.29, 1.22, 1.13 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT feanor tty1 - Sat23 36:51m 1.36s 0.03s /bin/sh /usr/bin/X11/startx root tty2 - 12:12 9.00s 0.05s 0.05s -bash
Στο πεδίο FROM, εμφανίζεται το hostname του απομακρυσμένου συστήματος, αν ο χρήστης είναι συνδεδεμένος με κάποιο σύστημα όπως telnet ή ssh.
Η who είναι αρκετά πιο απλή στην βασική της μορφή:
# who feanor tty1 Jul 12 23:21 root tty2 Jul 14 12:12
Με την επιλογή -a εμφανίζει όλες τις διαθέσιμες πληροφορίες, ενώ με την -H εμφανίζει την κεφαλίδα στην πρώτη γραμμή:
# who -aH
NAME LINE TIME IDLE PID COMMENT EXIT
Jul 14 21:57 8 id=si term=0 exit=0
system boot Jul 14 21:57
run-level 2 Jul 14 21:57 last=S
Jul 14 21:57 237 id=l2 term=0 exit=0
feanor - tty1 Jul 14 21:57 01:21 820
LOGIN tty2 Jul 14 21:57 821 id=2
LOGIN tty3 Jul 14 21:57 822 id=3
LOGIN tty4 Jul 14 21:57 823 id=4
LOGIN tty5 Jul 14 21:57 824 id=5
LOGIN tty6 Jul 14 21:57 825 id=6
Οι διεργασίες LOGIN αντιστοιχούν στις προτροπές login: σε κάθε εικονική κονσόλα (virtual console) του συστήματος (θυμίζουμε ότι μπορούμε να μεταβούμε σε κάποια εικονική κονσόλα με το συνδυασμό πλήκτρων [CTRL]-[ALT]-([F1] έως [F7]).
Μια αρκετά χρήσιμη εντολή (ειδικά για χρήση σε σενάρια κελύφους) είναι η whoami). Η μοναδική της χρήση είναι να επιστρέψει το όνομα του χρήστη που είναι συνδεδεμένος αυτή τη στιγμή και εκτελεί την εντολή. Έχει το ίδιο αποτέλεσμα με την κλήση της εντολής id -un.
# whoami root
Αντίστοιχη πληροφορία αλλά πιο αναλυτική μπορούμε να λάβουμε με την εντολή ταυτότητας id (identity), μόνο που η id δέχεται και επιπλέον παραμέτρους.
# id uid=0(root) gid=0(root) groups=0(root),102(lpadmin) # id feanor uid=1000(feanor) gid=100(users) groups=100(users),6(disk),7(lp),24(cdrom),29(audio),30(dip)
Οι πληροφορίες που μας προσφέρει η id είναι ο αριθμός ταυτότητας του χρήστη (uid), ο αριθμός και το όνομα της κύριας ομάδας (gid) και οι αριθμοί και ονόματα των δευτερευουσών ομάδων (groups).
Ένας άλλος τρόπος να μάθουμε τις ομάδες στις οποίες ανήκει ένας χρήστης είναι η εντολή groups. Η πρώτη ομάδα είναι και η κύρια ομάδα του χρήστη.
# groups feanor feanor : users disk lp cdrom audio dip
Αντίστροφα, μπορούμε να μάθουμε ποιους χρήστες έχει μια ομάδα με την εντολή members (παρέχεται στο ομώνυμο πακέτο):
# members users feanor gimli gandalf bilbo
Πρόσθεση, διαγραφή και μεταβολή χρηστών
Για την πρόσθεση, διαγραφή χρηστών μπορούμε να χρησιμοποιήσουμε μία από τις εντολές useradd και adduser (η adduser περιλαμβάνεται στο ομώνυμο πακέτο). Η useradd είναι πιο κατάλληλη για χρήση σε σενάρια κελύφους ενώ η adduser μπορεί να τρέξει και διαλογικά χωρίς παραμέτρους. Για παράδειγμα, οι δύο ακόλουθες εντολές είναι ισοδύναμες:
# useradd -g users -m guest
και
# adduser --ingroup users --home /home/guest --disabled-password guest
Adding user guest...
Adding new user guest (1004) with group users.
Creating home directory /home/guest.
Copying files from /etc/skel
Changing the user information for guest
Enter the new value, or press ENTER for the default
Full Name []: Guest user
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [y/n] y
Η adduser μπορεί να εκτελεστεί και χωρίς παραμέτρους:
# adduser
Enter a username to add: guest
Adding user guest...
Adding new group guest (1004).
Adding new user guest (1004) with group guest.
Creating home directory /home/guest.
Copying files from /etc/skel
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for guest
Enter the new value, or press ENTER for the default
Full Name []: Guest
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [y/n] y
Οι επιλογές που δέχονται οι δύο εντολές είναι παρόμοιες:
|
Επιλογές (useradd)
|
Επιλογές(adduser)
|
Λειτουργία
|
| -u uid | --uid ID | Ορίζει τον αριθμό ταυτότητας του νέου χρήστη. Αν δεν δοθεί η εντολή επιλέγει τον επόμενο διαθέσιμο. |
| -g group | --ingroup GROUP --gid ID |
Ορίζει την κύρια ομάδα στην οποία θα ανήκει ο νέος χρήστης. |
| -G group,... | - | Η εντολή useradd επιτρέπει τον ορισμό και δευτερευουσών ομάδων. |
| -d homedir | --home homedir | Ορίζει τον κατάλογο HOME του χρήστη. |
| -s SHELL | --shell SHELL | Ορίζει το προτιμώμενο κέλυφος για το χρήστη. Το προκαθορισμένο είναι το /bin/sh (Το Bourne Again Shell). |
| -c comment | - | Ορίζει κάποιο σχόλιο για το χρήστη. Για την adduser το σχόλιο δημιουργείται απο τις πληροφορίες που δίνονται στο τέλος της προσθήκης του χρήστη. |
| -m | --no-create-home | Οι δύο επιλογές έχουν αντίθετη λειτουργία σε κάθε εντολή. Στην useradd η -m είναι απαραίτητη για τη δημιουργία του καταλόγου HOME, αν δεν υπάρχει, ενώ στην adduser η --no-create-home απενεργοποιεί την δημιουργία του. |
| -f N | Απενεργοποιεί τονλογαριασμό του χρήστη N μέρες μετά τη λήξη του κωδικού πρόσβασης (password) ή καθόλου αν το N έχει τιμή -1. | |
| -e expire | Απενεργοποιεί το λογαριασμό την ημερομηνία expire (σε μορφή YYYYMMDD). | |
| -p passwd | --disabled-login | Ορίζει τον κωδικό πρόσβασης του χρήστη. ΠΡΟΣΟΧΗ: ο κωδικός πρόσβασης δίνεται σε κωδικοποιημένη μορφή με την crypt και όχι ως απλό κείμενο. Η --disabled-login απενεργοποιεί το λογαριασμό εώς ότου καθοριστεί χειροκίνητα κατάλληλος κωδικός πρόσβασης. Και σε αυτήν την περίπτωση οι επιλογές έχουν αντίθετη λειτουργία σε κάθε εντολή. Η απουσία της -p στην useradd, απενεργοποιεί το λογαριασμό. |
Αντίστοιχα παρέχονται και οι εντολές userdel και deluser, των οποίων οι επιλογές αναγράφονται στον παρακάτω πίνακα:
|
Επιλογές (userdel)
|
Επιλογές(deluser)
|
Λειτουργία
|
| r | --remove-home | Διαγράφει τον κατάλογο HOME του χρήστη. |
| - | --remove-all-files | Αναζητά. και διαγράφει όλα τα αρχεία που ανήκουν στο χρήστη. Η αναζήτηση γίνεται σε όλο το σύστημα αρχείων του υπολογιστή. |
| - | --backup | Αντιγράφει τα αρχεία του χρήστη σε μια αρχειοθήκη .tar.gz στον τρέχοντα κατάλογο, πριν διαγράψει το λογαριασμό του και τον κατάλογό του. |
Παράδειγμα:
# userdel -r guest # deluser --remove-home --backup guest
Οι παραπάνω εντολές θα διαγράψουν από το σύστημα το χρήστη guest μαζί με τον κατάλογο HOME του, αλλά η deluser θα δημιουργήσει μια αρχειοθήκη των αρχείων του στον τρέχοντα κατάλογο με το όνομα guest.tar.gz.
Για τροποποίηση των στοιχείων ενός χρήστη υπάρχει η εντολή usermod. Δέχεται τις ίδιες ακριβώς επιλογές με την useradd με μερικές επιπλέον:
|
Επιλογές
|
Λειτουργία
|
| -l login_name | Αλλάζει το όνομα του χρήστη σε login_name. |
| -L | Κλειδώνει (lock) τον κωδικό πρόσβασης του χρήστη τοποθετώντας το χαρακτήρα “!” στην αρχή του. Αυτό έχει σαν αποτέλεσμα ο χρήστης να μη μπορεί να συνδεθεί πλέον. |
| -U | Ξεκλειδώνει (unlock) τον κωδικό πρόσβασης του χρήστη που κλειδώθηκε με την -L. |
Παραδείγματα:
# usermod -L guest
Κλειδώνει τον κωδικό πρόσβασης του χρήστη guest, απενεργοποιώντας έτσι το λογαριασμό του.
# usermod -s /bin/pdksh guest
Αλλάζει το προτιμώμενο κέλυφος του χρήστη guest στο pdksh (public domain Korn shell).
# usermod -d -m /newhome/guest guest
Αλλάζει τον κατάλογο HOME του χρήστη guest στον κατάλογο /newhome/guest. Με την παράμετρο -m δημιουργεί τον κατάλογο αν δεν υπάρχει ήδη και πραγματοποιεί τη μεταφορά των δεδομένων από τον παλιό στο νέο κατάλογο.
kuser 1
Με παρόμοιο τρόπο, μπορούμε να προσθέσουμε μια ομάδα χρηστών στο σύστημα με τις εντολές groupadd και addgroup, να διαγράψουμε μια ομάδα με τις εντολές groupdel και delgroup ή να τροποποιήσουμε τα στοιχεία μιας ομάδας χρηστών με τη groupmod.
Όλες αυτές οι λειτουργίες μπορούν να γίνουν και μέσα από γραφικό περιβάλλον KDΕ με το εργαλείο kuser (στο ομώνυμο πακέτο).
Λογιστική χρηστών (user accounting)
Όπως ακριβώς και με τη λογιστική διεργασίων, το Linux παρέχει και λογιστική χρηστών, δηλαδή πληροφορίες για τη σύνδεση του κάθε χρήστη στον υπολογιστή. Για να ακριβολογούμε η λογιστική χρηστών χρησιμοποιεί απλώς ένα υποσύνολο των πληροφοριών που βρίσκονται στα αρχεία /var/log/wtmp και συγκεκριμένα την εκτέλεση των εντολών login και logout. Δύο αρκετά χρήσιμες εντολές είναι η last και η lastlog, στα πακέτα sysvinit και login αντίστοιχα.
# lastlog Username Port From Latest root tty2 Mon Jul 14 21:55:19 +0300 2003 daemon **Never logged in** bin **Never logged in** sys **Never logged in** sync **Never logged in** games **Never logged in** man **Never logged in** lp **Never logged in** mail **Never logged in** news **Never logged in** uucp **Never logged in** proxy **Never logged in** majordom **Never logged in** postgres **Never logged in** www-data **Never logged in** backup **Never logged in** operator **Never logged in** list **Never logged in** irc **Never logged in** gnats **Never logged in** feanor tty1 Mon Jul 14 21:57:54 +0300 2003 sshd **Never logged in** distccd **Never logged in** bind **Never logged in** mysql **Never logged in** kannel **Never logged in**
Η lastlog εμφανίζει την τελευταία φορά σύνδεσης όλων των χρηστών του συστήματος. Δέχεται τις επιλογές -u ή --user, που ζητάει πληροφορίες μόνο για συγκεκριμένο χρήστη, και -t ή --time που εμφανίζει μόνο τις συνδέσεις που είναι νεώτερες από τις ημέρες που δίνουμε ως παράμετρο.
Η εντολή last δίνει τις τελευταίες συνδέσεις, εμφανίζοντας και ως ψευδοχρήστη reboot την εκκίνηση του συστήματος (και με την επιλογή -x, τον τερματισμό και την αλλαγή του runlevel). Δέχεται τις εξής επιλογές:
|
Επιλογές
|
Λειτουργία
|
|
-NUM -n NUM |
Εμφανίζει τις τελευταίες NUM συνδέσεις χρηστών στο σύστημα. |
| -d | Εμφανίζει το όνομα του υπολογιστή (ή αν δεν είναι διαθέσιμο, την διεύθυνση IP) του συστήματος από το οποίο συνδέθηκε ο χρήστης. |
| -i | Εμφανίζει την διεύθυνση IP του συστήματος από το οποίο συνδέθηκε ο χρήστης. |
| -a | Εμφανίζει το όνομα ή την διεύθυνση IP στην τελευταία στήλη. |
| -x | Εμφανίζει τους κανονικούς τερματισμούς του συστήματος ως ψευδοχρήστη shutdown και τις αλλαγές του συστήματος ως runlevel. |
Παραδείγματα:
# last feanor tty1 Mon Jul 14 21:57 still logged in reboot system boot 2.4.20 Mon Jul 14 21:57 (16:55) root tty2 Mon Jul 14 21:55 - down (00:00) feanor tty1 Mon Jul 14 16:15 - down (05:39) reboot system boot 2.4.20 Mon Jul 14 16:14 (05:40) reboot system boot 2.4.20 Mon Jul 14 16:13 (00:00) root tty2 Mon Jul 14 12:12 - crash (04:00) wtmp begins Mon Jul 14 12:12:38 2003
Εμφανίζει τις τελευταίες συνδέσεις στο σύστημα μαζί και με τις πληροφορίες για απότομο τερματισμό (crash). Η παρακάτω εμφανίζει και τους κανονικούς τερματισμούς του συστήματος.
# last -aix feanor tty1 Mon Jul 14 21:57 still logged in 0.0.0.0 runlevel (to lvl 2) Mon Jul 14 21:57 - 14:59 (17:02) 0.0.0.0 reboot system boot Mon Jul 14 21:57 (17:02) 0.0.0.0 shutdown system down Mon Jul 14 21:56 - 14:59 (17:03) 0.0.0.0 runlevel (to lvl 0) Mon Jul 14 21:55 - 21:56 (00:00) 0.0.0.0 root tty2 Mon Jul 14 21:55 - down (00:00) 0.0.0.0 feanor tty1 Mon Jul 14 16:15 - down (05:39) 0.0.0.0 runlevel (to lvl 2) Mon Jul 14 16:14 - 21:55 (05:40) 0.0.0.0 reboot system boot Mon Jul 14 16:14 (05:40) 0.0.0.0 shutdown system down Mon Jul 14 16:13 - 21:55 (05:41) 0.0.0.0 runlevel (to lvl 0) Mon Jul 14 16:13 - 16:13 (00:00) 0.0.0.0 reboot system boot Mon Jul 14 16:13 (00:00) 0.0.0.0 root tty2 Mon Jul 14 12:12 - crash (04:00) 0.0.0.0 wtmp begins Mon Jul 14 12:12:38 2003
Χρήσιμα πακέτα: adduser, members, kuser.
Active forum topics
- Wake up from suspend mode failed
- Οργάνωση στις μεταφράσεις των ελληνικών στο Debian.
- απορια σχετικα με nvidia440
- πρόβλημα εγκατάστασης nvidia driver GTS250.
- kernel 2.6.38 για squeeze
- Gnome3
- 2 μήνες σπασμένο το upgrade σε unstable [SOLVED]
- Οι χρήστες του Internet Explorer είναι χαζοί;
- Debian Lenny + Nvidia drivers
- εγκατασταση usb cosmote
New forum topics
Νέοι χρήστες
- kountp
- Adonthegreat
- giorgos_m
- prodromos
- airmaik
Οι πιο πρόσφατες καταχωρίσεις blog.
- Fosscomm 2012
- armhf officially into Debian!
- back from UDS/Linaro Connect...
- FTF is over, Linaro Interview
- straight from FTF 2011, San Antonio...
- Όσο μεγαλώνεις μαθαίνεις...
- Emdebian 2011 Sprint report, Genesi Europe store goes online...
- Θεσσαλονίκη - open source ERP workshop
- Χρήσιμο URL για Flash Cards και Linux filesystems
- Cambridge, UK, ARM HQ for Emdebian 2011 Sprint