6.2 Προσθήκη Χρηστών Samba
Είπαμε και νωρίτερα, κατά την προσθήκη χρηστών στον server μας (Κεφάλαιο Δ), ότι ένας χρήστης του πρωτοκόλλου Samba θα πρέπει πρωτίστως να έχει τοπικό λογαριασμό στον server μας, ώστε στη συνέχεια να μπορεί να έχει πρόσβαση σε αυτόν μέσω Samba. Αφού λοιπόν δημιουργήσαμε όπως παραπάνω είπαμε, τους χρήστες μας στον server, τώρα θα πρέπει να τους προσθέσουμε και ως χρήστες samba, ως χρήστες δηλαδή που θα έχουν δικαίωμα απομακρυσμένης πρόσβασης στον server μέσω samba.
Η προσθήκη αυτή γίνεται φυσικά από το τερματικό, με την εντολή
Κώδικας:
sudo smbpasswd -a username
Επισημαίνονται τα εξής:
1) Ο χρήστης μας θα πρέπει να έχει το ίδιο username τόσο στην samba, όσο και στον απομακρυσμένο υπολογιστή από τον οποίο θα έχει πρόσβαση, π.χ. από υπολογιστή Windows.
2) Υπάρχουν όπως καταλάβατε, τρεις (3) λογαριασμοί για κάθε χρήστη, τους οποίους θα πρέπει να έχουμε υπόψη μας: Ο λογαριασμός Unix στον server, ο λογαριασμός Samba στον server και ο λογαριασμός στον απομακρυσμένο υπολογιστή Windows. Για αποφυγή οποιασδήποτε απροσδόκητης δυσκολίας, το username πρέπει να είναι το ίδιο και στους τρεις λογαριασμούς. Ο κωδικός Unix δεν είναι απαραίτητο να είναι ίδιος με τους άλλους δύο, ωστόσο ο γράφων προτείνει να είναι ο ίδιος, προς αποφυγή δυσκολιών στο μέλλον.
3) Ενώ οι λογαριασμοί Unix είναι case sensitive, δηλαδή τα κεφαλαία γράμματα λογίζονται ως διαφορετικά από τα μικρά και επιτρέπονται μόνο μικρά, δεν συμβαίνει το ίδιο κατά την αντιστοίχιση λογαριασμού samba με λογαριασμού Windows. Επειδή στα Windows οι λογαριασμοί είναι case insensitive, η samba ακολουθεί το ίδιο μοτίβο και επομένως δεν έχει σημασία αν ο λογαριασμός χρήστη στα Windows έχει και κεφαλαία γράμματα, ενώ ο λογαριασμός samba δεν έχει.
Με την παραπάνω εντολή λοιπόν και για τις ανάγκες του οδηγού, προσθέσαμε τους χρήστες μας user1, user2 και user3 στην samba:
Για να ελέγξουμε ποιους χρήστες έχουμε προσθέσει, χρησιμοποιούμε την εξής εντολή:
ενώ αν προσθέσουμε και τον διακόπτη -v (verbose) μας δίνει πολύ περισσότερες πληροφορίες:
Τέλος, για να διαγράψουμε κάποιο χρήστη από την samba, χρησιμοποιούμε την εντολή
Κώδικας:
sudo smbpasswd -x username
Σημείωση: Φυσικά, αν θέλουμε και ο διαχειριστής να έχει πρόσβαση σε shares, πρέπει να προστεθεί και αυτός ως χρήστης samba, με την εντολή:
Κώδικας:
sudo smbpasswd -a adminuser
6.3 Προσθήκη Samba Shares
6.3.1 Προετοιμασία
Και φθάνουμε επιτέλους και ουσιαστικά στην καρδιά αυτού του οδηγού, αφού τα samba shares (διαμοιραζόμενοι φάκελοι) ήταν ο πρωταρχικός σκοπός μας εξ αρχής, όταν αποφασίσαμε να φτιάξουμε έναν File Server!
Όλες οι ρυθμίσεις για τα Samba Shares βρίσκονται σε ένα και μόνο αρχείο, το smb.conf το οποίο βρίσκεται στη διαδρομή /etc/samba/smb.conf:
Εάν ανοίξουμε αυτό το αρχείο, θα δούμε ότι είναι γεμάτο με σχόλια, έρχεται δηλαδή εξ αρχής έτσι, με την εγκατάσταση του λειτουργικού. Τα σχόλια αυτά έχουν σκοπό να βοηθήσουν τον χρήστη στη ρύθμισή του:
Επειδή όμως εμείς θα έχουμε μελετήσει τον παρόντα οδηγό :) , τα σχόλια αυτά περισσότερο περιπλέκουν τα πράγματα, παρά βοηθούν, αφού μας εμποδίζουν να έχουμε μια καθαρή εικόνα για τις ρυθμίσεις μας. Έτσι, είναι προτιμότερο αφενός μεν να πάρουμε ένα backup του αρχείου smb.conf, αφετέρου δε να έχουμε ένα καθαρό αρχείο, χωρίς σχόλια.
Τα παραπάνω θα τα πετύχουμε εκτελώντας διαδοχικά τις εξής εντολές:
Κώδικας:
sudo -i
cd /etc/samba
mv smb.conf smb.conf.master
touch smb.conf
testparm -s smb.conf.master > smb.conf
Με τις παραπάνω εντολές μεταβήκαμε στο φάκελο samba, μετονομάσαμε το αρχείο smb.conf σε smb.conf.master και στη συνέχεια φτιάξαμε ένα νέο αρχείο smb.conf χωρίς σχόλια:
Πολύ καλύτερα, δεν νομίζετε;
Tip: η παραπάνω εντολή testparm -s ενδεχομένως να μην δουλεύει με το πρόθεμα sudo μπροστά. Γι’ αυτό αναχθήκαμε εξ ολοκλήρου σε χρήστη root, με την εντολή sudo -i.
6.3.2 Η δομή του αρχείου smb.conf
Πριν προσθέσουμε τα πρώτα shares μας, θα πρέπει να πούμε δυο λόγια για τη δομή του αρχείου smb.conf:
1) Το αρχείο χωρίζεται σε sections (τομείς), οι οποίοι διακρίνονται με την ένταξή τους σε αγκύλες [ ], όπως μπορείτε να δείτε στο παραπάνω screenshot. Το πρώτο section, με όνομα [global], περιέχει γενικές ρυθμίσεις, οι οποίες αφενός μεν περιέχουν γενικές ρυθμίσεις για τον samba server, αφετέρου εφαρμόζονται σε όλα τα shares.
2) Κάθε share έχει το δικό του section. Το όνομα μέσα στις αγκύλες [ ], είναι και αυτό που θα βλέπουμε ως όνομα share από τον απομακρυσμένο υπολογιστή, από τον οποίο θα έχουμε πρόσβαση στον server.
3) Οι ρυθμίσεις δίνονται πάντα με την μορφή «Ρύθμιση = προτίμηση», δηλαδή μετά το όνομα της ρύθμισης ακολουθεί κενό, το σύμβολο =, μετά κενό και μετά η προτίμησή μας. Προσοχή διότι αν δεν τεθεί ακριβώς αυτή η μορφή, η ρύθμιση δεν θα ληφθεί υπόψιν.
4) Για διευκόλυνσή μας, πριν από κάθε ρύθμιση πατάμε το tab, ώστε οι ρυθμίσεις να είναι ευθυγραμμισμένες και να ξεχωρίζουν εύκολα τα share sections.
5) Το ελάχιστο προαπαιτούμενο για κάθε share είναι το όνομά του και η διαδρομή του συστήματος αρχείων στην οποία θα βρίσκεται (δηλαδή θα αντιστοιχεί). Σε όλες σχεδόν τις ρυθμίσεις υπάρχουν defaults επιλογές, οι οποίες χρησιμοποιούνται από τον samba server, αν εμείς δεν τις διευκρινίσουμε. Καλό είναι όμως κάποιες βασικές να τις περιλαμβάνουμε, όπως θα δούμε παρακάτω.
6) Τα ονόματα των groups τα οποία θέλουμε να περιλάβουμε σε κάποια ρύθμιση, τίθενται με το σύμβολο @ μπροστά, δηλαδή @groupname.
6.3.3 Βασικές και χρήσιμες επιλογές (ρυθμίσεις) στο αρχείο smb.conf
[Το σύμβολο | σημαίνει διάζευξη, δηλαδή μόνο μία ρύθμιση τίθεται πάντοτε]
6.3.3.1 GLOBAL SECTION
workgroup = WORKGPOUPNAME
Καθορίζει το Workgroup στο οποίο θα ανήκει ο samba server. Διευκολύνει φυσικά να είναι το ίδιο με όλους τους υπολογιστές Windows.
security = user | share
Καθορίζει τον τρόπο που ο samba server θα ενεργεί την πιστοποίηση των απομακρυσμένων χρηστών. Για τις ανάγκες του server μας, η σωστή ρύθμιση είναι η user.
usershare allow guests = yes | no
Καθορίζει αν χρήστες στους οποίους θα έχουμε επιτρέψει να δημιουργούν shares, θα μπορούν να επιτρέπουν σε αυτά τα shares, πρόσβαση από τρίτους που δεν έχουν λογαριασμό samba user.
6.3.3.2 SHARES SECTION
comment = (όποιο σχόλιο θέλουμε)
Εμφανίζει μια περιγραφή του share όταν ο απομακρυσμένος χρήστης φέρνει το ποντίκι (hover) πάνω από το share.
path = /some/directory
Η διαδρομή στο file system του server όπου βρίσκεται το share.
browsable = yes | no
Καθορίζει αν το share θα φαίνεται στον απομακρυσμένο υπολογιστή, ανεξαρτήτως αν ο απομακρυσμένος χρήστης έχει ή όχι δικαίωμα πρόσβασης στο share. Default: browsable = yes.
read only = yes | no
Καθορίζει αν το share θα είναι μόνο για ανάγνωση ή θα επιτρέπεται και η εγγραφή. Η ίδια ακριβώς ρύθμιση επιτυγχάνεται και με την επόμενη, αλλά από την αντίθετη σκοπιά. Default: read only = yes.
writable = yes | no
Καθορίζει αν το share θα είναι εγγράψιμο ή μόνο για ανάγνωση. Το ίδιο με την αμέσως παραπάνω ρύθμιση, αλλά από την αντίθετη σκοπιά. Default: writeable = no.
guest ok = yes | no
Καθορίζει αν τρίτοι, χωρίς να έχουν λογαριασμό samba user, θα έχουν πρόσβαση στο share. Default: guest ok = no.
valid users = username, @groupname
Καθορίζει ποιοι χρήστες ή ομάδες χρηστών (groups) και μόνο, θα έχουν πρόσβαση στο share.
invalid users = username, @groupname
Καθορίζει σε ποιους χρήστες ή groups ονομαστικά, θα απαγορεύεται η πρόσβαση.
read list = username, @groupname
Καθορίζει χρήστες ή groups ονομαστικά, οι οποίοι θα έχουν μόνο δικαίωμα ανάγνωσης, ακόμα και αν το share είναι εγγράψιμο (writable).
write list = username, @groupname
Καθορίζει χρήστες ή groups ονομαστικά, οι οποίοι θα έχουν δικαίωμα εγγραφής, ακόμα και αν το share είναι μόνο για ανάγνωση (read only).
create mask = 664
Καθορίζει τα δικαιώματα με τα οποία θα δημιουργείται ένα νέο αρχείο από τον απομακρυσμένο χρήστη. Ανατρέξτε στο κεφάλαιο 6.1 του παρόντος οδηγού για περισσότερες πληροφορίες. Default: create mask = 0744.
Προσοχή: Η ρύθμιση που θα θέσουμε εδώ, δεν υπερκεράζει (ξεπερνά) την ρύθμιση unix που έχει ο server μας στον φάκελο του συγκεκριμένου share. Δηλαδή αν από την unix πλευρά τα δικαιώματα είναι πιο περιορισμένα από την ρύθμιση που θέτουμε ή και την default, θα ισχύσουν τα περιορισμένα unix δικαιώματα.
directory mask = 775
Καθορίζει τα δικαιώματα με τα οποία θα δημιουργείται ένας νέος φάκελος (directory) από τον απομακρυσμένο χρήστη. Ανατρέξτε στο κεφάλαιο 6.1 του παρόντος οδηγού για περισσότερες πληροφορίες. Default: directory mask = 0755.
Προσοχή: Η ρύθμιση που θα θέσουμε εδώ, δεν υπερκεράζει (ξεπερνά) την ρύθμιση unix που έχει ο server μας στον φάκελο του συγκεκριμένου share. Δηλαδή αν από την unix πλευρά τα δικαιώματα είναι πιο περιορισμένα από την ρύθμιση που θέτουμε ή και την default, θα ισχύσουν τα περιορισμένα unix δικαιώματα.
force user = username
Ορίζει ότι οποιοσδήποτε χρήστης και αν συνδέεται στο share, θα θεωρείται ότι συνδέεται σε αυτό ο χρήστης που τίθεται στη ρύθμιση. Έτσι όλοι όσοι συνδέονται στο share, θα έχουν τα δικαιώματα πρόσβασης του χρήστη που τίθεται στη ρύθμιση.
force group = groupname
Ορίζει ότι σε οποιοδήποτε πρωταρχικό (primary) group και αν ανήκει ο χρήστης που συνδέεται στο share, θα θεωρείται ότι ανήκει στο primary group που τίθεται στη ρύθμιση. Έτσι όλοι όσοι συνδέονται στο share, θα έχουν τα δικαιώματα πρόσβασης του primary group που τίθεται στη ρύθμιση. Πολύ χρήσιμη ρύθμιση σε περιπτώσεις ομαδικών shares. Εννοείται ότι ο χρήστης θα πρέπει πράγματι να ανήκει και στο συγκεκριμένο group, από την πλευρά των unix groups.
Για περισσότερες πληροφορίες σχετικά με τις ατελείωτες πραγματικά ρυθμίσεις του smb.conf, μπορείτε να ανατρέξετε
στην επίσημη τεκμηρίωση. Το ίδιο αρχείο υπάρχει και στο λειτουργικό μας, στο οποίο έχουμε πρόσβαση με την εντολή
6.3.4 Δημιουργία shares
Ας δημιουργήσουμε λοιπόν μερικά shares στον server μας!
Πρώτα αποφασίζουμε σε ποιο φάκελο θα βρίσκεται το share μας. Δημιουργούμε στον φάκελο disk1data του server μας (βλέπετε κεφάλαιο 5.2 του οδηγού) ένα νέο φάκελο με την ονομασία Share1Docs:
Παρατηρούμε ότι τα δικαιώματα του φακέλου είναι rwxrwxr-x, δηλαδή οι τρίτοι πλην του owner του φακέλου (αφού και το primary group είναι το ίδιο με του owner), δεν θα έχουν δικαίωμα εγγραφής στο φάκελο, όπως ακριβώς θα έπρεπε να είναι, με βάση την ρύθμιση umask που εξετάσαμε παραπάνω (κεφάλαιο 6.1):
Προς το παρόν όμως θέλουμε, στο share που θα δημιουργήσουμε, να έχουμε πρόσβαση μόνο εμείς. Έτσι δεν αλλάζουμε κάτι, αλλά προχωρούμε στη δημιουργία του share.
Ανοίγουμε το αρχείο smb.conf με δικαιώματα root με την εντολή:
Κώδικας:
gksudo leafpad /etc/samba/smb.conf
Προσθέτουμε στις global ρυθμίσεις
Κώδικας:
workgroup = WORKGPOUP
security = user
Δημιουργούμε ένα share με τις εξής ρυθμίσεις
Κώδικας:
[Documents Admin]
comment = Admin’s Documents
path = /disks/disk1data/Share1Docs
browsable = yes
read only = no
guest ok = no
valid users = adminuser
Αφού αποθηκεύσουμε και κλείσουμε το αρχείο, ελέγχουμε με την εντολή testparm αν υπάρχει σφάλμα:
Κώδικας:
cd /etc/samba
testparm
Αν μας πει ότι “Loaded services file OK”, τότε όλα είναι εντάξει με τις ρυθμίσεις μας, τουλάχιστον από τυπικής πλευράς.
Επανεκκινούμε την υπηρεσία samba με την παρακάτω εντολή, ώστε να σιγουρευτούμε ότι ενσωματώθηκαν οι ρυθμίσεις που θέσαμε προηγουμένως:
Κώδικας:
sudo systemctl restart smbd.service nmbd.service
Και στη συνέχεια βλέπουμε ότι υπάρχει ελεύθερη πλέον η πρόσβαση από τον χρήστη adminuser, από υπολογιστή Windows. Ο χρήστης AdminUser έχει δημιουργήσει το αρχείο Test.txt:
Το οποίο όπως βλέπουμε, έχει δημιουργηθεί με δικαιώματα 744, όπως θα έπρεπε, ακολουθώντας την default ρύθμιση της samba για την create mask που εξετάσαμε παραπάνω:
Υπενθυμίζουμε για άλλη μια φορά ότι πιο πριν, έχουμε προσθέσει και τον adminuser στους samba users.
6.3.5 Το Homes Share
Με παρόμοιο τρόπο με τον παραπάνω μπορούμε να δημιουργήσουμε και άλλα shares. Όμως στον samba server υπάρχει και το ειδικό share [homes], το οποίο αν το θέσουμε σε λειτουργία, δημιουργεί αυτόματα ένα share για κάθε χρήστη, το οποίο είναι ο home folder του στον server. Με αυτό τον απλό τρόπο και με μια απλή ρύθμιση, κάθε χρήστης τον οποίο έχουμε προσθέσει όπως παραπάνω, αποκτά το δικό του share και έτσι δεν χρειάζεται να φτιάχνουμε ατομικά shares, εφόσον ο home folder στον server μας έχει επαρκή χωρητικότητα για τους χρήστες μας και τη χρήση που προβλέπουμε ότι θα γίνει.
Το ειδικό αυτό share ενεργοποιείται θέτοντας στο smb.conf τις εξής ρυθμίσεις:
Κώδικας:
[homes]
comment = Home of %S
valid users = %S
read only = no
browsable = no
Η παράμετρος %S παίρνει το όνομα του εκάστοτε χρήστη που ζητεί πρόσβαση στον server, και έτσι με την επιλογή valid users ο κάθε χρήστης έχει πρόσβαση μόνο στο δικό του home share. Επίσης θέτουμε no στην browsable, ώστε ο κάθε χρήστης να βλέπει μόνο το δικό του share.
Έτσι βλέπουμε ότι ο AdminUser αμέσως απέκτησε και το δικό του home share:
Στο επόμενο επεισόδιο, θα δούμε με ποιο τρόπο δημιουργούμε κοινόχρηστα shares μεταξύ χρηστών, οπότε και πιθανότατα θα ολοκληρωθεί ο οδηγός αυτός…
Linux Mint KDE laptop, Linux Mint Mate netbook, Lubuntu old desktop, Windows 7 main desktop, Ubuntu File Server