Για την εγκατάσταση
aptitude install samba
Με το sysvconfig ή το ksysv ορίστε την εκτέλεσή της υπηρεσίας κατά την εκκίνηση Προσοχή το nmbd θα πρέπει να ξεκινάει πριν το smbd.
Χρησιμοποιείστε το παρακάτω αρχείο smb.conf και κάντε τροποποιήσεις με βάση το δικό σας δίκτυο. Σημειώστε ότι ο προκαθορισμένος υπερχρήστης λέγεται root και όχι administrator. Αρχικά θα πρέπει να ορίσετε το password του υπερχρήστη με την εντολή
smbpasswd -a root
Για να προσθέσετε ένα μηχάνημα με όνομα CLIENT01 εκτελέστε τις εντολές
useradd CLIENT01\$ smbpasswd -a -m CLIENT01
Το παραπάνω smb.conf αρχείο έχει δυνατότητα αυτόματης εγγραφής μηχανήματος, άρα μπορούμε να παρακάμψουμε την εγγραφή του μηχανήματος με τις παραπάνω εντολές. Μπορεί ούτως η άλλως να χρειαστεί να γίνει έτσι εάν για παράδειγμα εμφανιστεί μήνυμα ότι το όνομα του μηχανήματος χρησιμοποιείται ήδη.
Για να διαγράψουμε ένα μηχάνημα
smbpasswd -x -m CLIENT01 userdel CLIENT01\$
Για να δημιουργήσετε έναν νέο χρήστη με όνομα smbtest αρχικά δημιουργήστε τον ως τυπικό χρήστη linux και στην συνέχεια ως χρήστη samba
adduser smbtest smbpasswd -a smbtest
Για να διαγράψετε έναν υπάρχον χρήστη (και από τους τοπικούς χρήστες του Linux)
smbpasswd -x smbtest
Με την παράμετρο –remove-all-files η εντολή καθυστερεί λίγο αφού ψάχνει για όλα τα αρχεία του χρήστη (από home, samba, shared κτλ) αλλά είναι η καλύτερη. Προτείνεται να εκτελεστεί στο παρασκήνιο.
deluser --remove-all-files smbtest& rm -rf /var/lib/samba/profiles/smbtest
Δημιουργήστε τους φακέλους που θα αποθηκεύσουν τα profiles,netlogon και τους drivers. Για παράδειγμα.
mkdir /var/lib/samba/profiles chmod 1777 /var/lib/samba/profiles/ chgrp users /var/lib/samba/profiles/ mkdir /var/lib/samba/netlogon chmod 775 /var/lib/samba/netlogon chgrp users /var/lib/samba/netlogon mkdir /var/lib/samba/drivers chmod 775 /var/lib/samba/drivers chgrp users /var/lib/samba/drivers/
Δημιούργησε έναν καινούργιο χρήστη π.χ. template και πρόσθεσέ τον στους χρήστες samba
adduser template smbpasswd -a template
Αυτό δούλεψε αλλά δεν έχει δοκιμαστεί ακόμα εκτενώς. Εάν υπάρχουν καθυστερήσεις στην είσοδο των χρηστών γενικότερα μετονόμασε τον φάκελο σε Default User.bak για την περίοδο που δεν προστίθονται νέοι χρήστες.
Ένας γρήγορος τρόπος να ρυθμιστεί η υπηρεσία samba είναι η χρήση ενός τυπικού αρχείου πάνω στο οποίο θα γίνουν αλλαγές που θα το προσαρμόσουν στο δικό σας τοπικό δίκτυο. Παρακάτω είναι ένα τέτοιο τυπικό αρχείο smb.conf για την χρήση samba ως
# Global parameters [global] workgroup = VAGK.LOCAL map to guest = Bad User passdb backend = tdbsam #username map = /etc/samba/smbusers printcap name = cups add machine script = /usr/sbin/useradd -c Machine -d /var/lib/nobody -s /bin/false %m$ logon script = login.bat logon path = \\%L\profiles\%U logon drive = Z: logon home = \\%L\%U domain logons = Yes os level = 51 preferred master = Yes domain master = Yes ldap ssl = no winbind uid = 10000-20000 winbind gid = 10000-20000 #printer admin = @ntadmin, root, administrator cups options = raw [homes] comment = Home Directories path = %H valid users = %S inherit acls = Yes browseable = No readonly = No create mask = 0600 directory mask = 0700 [users] comment = All users path = /home read only = No inherit acls = Yes veto files = /aquota.user/groups/shares/ [groups] comment = All groups path = /home/groups read only = No inherit acls = Yes [printers] comment = All Printers path = /var/tmp create mask = 0600 printable = Yes browseable = No [print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = @ntadmin, root force group = ntadmin create mask = 0664 directory mask = 0775 [netlogon] comment = Network Logon Service path = /var/lib/samba/netlogon write list = root guest ok = Yes browseable = No [profiles] path = /var/lib/samba/profiles read only = No create mask = 0600 directory mask = 0700 [proglinux] comment = Various linux stuff path = /mnt/hda11/programslinux create mask = 0600 directory mask = 0700 guest ok = Yes case sensitive = No msdfs proxy = no [public] path = /root/public guest ok = Yes read only = No
Για να ελέγξουμε την ορθότητα του αρχείου smb.conf εκτελούμε
testparm /etc/samba/smb.conf
Πολλές φορές είναι θεμιτό να μπορούμε να εκτυπώσουμε από τους client υπολογιστές στον εκτυπωτή που είναι συνδεδεμένος στον samba server. Για να το πετύχουμε αυτό, θα πρέπει να ρυθμιστούν κατάλληλα οι υπηρεσίες samba και cups
Στο αρχείο smb.conf θα πρέπει να υπάρχουν τα παρακάτω στον τομέα [global]
[global] .. #Network printer configuration printing = cups printcap name = cups load printers = yes ..
Επίσης θα πρέπει να υπάρχουν τα ακόλουθα shares τουλάχιστον
[printers] comment= All Printers path= /var/tmp create mask= 0600 printable= Yes browseable= Yes public = yes guest ok = yes writable = no printable = yes printer admin = administrator,root [print$] comment= Printer Drivers path= /var/lib/samba/drivers write list= administrator, root force user= administrator, root create mask= 0664 directory mask= 0775
Προσθέτουμε τον εκτυπωτή σε κάθε client ξεχωριστά, αφού συνδεθούμε ως root ή ως administrator στο κάθε μηχάνημα.
Οι χρήστες root και administrator, εάν είναι δικτυακοί θα πρέπει να ανήκουν στην τοπική ομάδα administrator στο κάθε μηχάνημα. Εάν είναι τοπικοί θα πρέπει να ανήκουν στην τοπική ομάδα administrator και να έχουν ίδιο κωδικό με τους δικτυακούς.
Για την διευκόλυνσή μας την ώρα της προσθήκης, μπορούμε να έχουμε το inf αρχείο του οδηγού του εκτυπωτή σε κάποιον κοινόχρηστο φάκελο, ώστε με αναζήτηση να βρεθεί και να εγκατασταθεί ο οδηγός του εκτυπωτή.
Για να δώσουμε μόνο σε ορισμένους χρήστες δυνατότητα εκτύπωσης (βλ. Πολιτικές εκτύπωσης)
Πολύ σημαντικό όταν υπάρχουν 2 ειδών χρήστες (linux και samba) είναι ο συχρονισμός των μεταξύ τους κωδικών.
Αρκεί να προσθέσουμε τις παρακάτω γραμμές στο αρχείο smb.conf
unix password sync = yes pam password change = yes
Πλέον όταν θα τροποποιείται ο κωδικός του windows (samba) χρήστη μέσω της εντολής smbpasswd από τον server ή από κάποιον client, θα τροποποιείται και ο κωδικός του linux χρήστη
Εγκαθιστούμε το πακέτο libpam-smbpass
aptitude install libpam-smbpass
Στο αρχείο /etc/pam.d/common-password χρειάζονται μόνο οι παρακάτω γραμμές
password required pam_unix.so nullok obscure md5 password sufficient pam_smbpass.so nullok use_authtok try_first_pass
Πλέον όταν θα τροποποιείται ο κωδικός του linux χρήστη μέσω της εντολής passwd από τον server θα τροποποιείται και ο κωδικός του linux χρήστη
Στο αρχείο /etc/samba/smb.conf θα πρέπει να έχουμε τις παρακάτω γραμμές
[netlogon] comment = Network Logon Service path = /var/lib/samba/netlogon write list = root guest ok = Yes browseable = No
(βλ. http://wiki.samba.org/index.php/Implementing_System_Policies_with_Samba)
Θα χρειαστούμε το εργαλείο poledit και ένα client μηχάνημα (κατά προτίμηση με ΛΣ windows xp pro).
Για το poledit
Κάποιες από τις επιλογές δεν μπορούν να αλλαχθούν εάν δεν αλλάξουμε πρώτα τα πρότυπα ρυθμίσεων (.adm files).
Τα πρότυπα ρυθμίσεων ορίζονται στο poledit στο μενού Options → Templates
Στο αρχείο c:\windows\inf\winnt.adm υπάρχει η ρύθμιση για το μέγιστο όριο προφίλ σε 30000KB
(Σημ: Για να εμφανιστεί ο φάκελος c:\windows\inf θα πρέπει να ανοίξουμε τον περιηγητή αρχείων των windows. Να επιλέξουμε το μενού Εργαλεία / Επιλογές Φακέλων. Στην καρτέλα Προβολή να επιλέξουμε Εμφάνιση κρυφών αρχείων και φακέλων και να ξετσεκάρουμε την Απόκρυψη προστατευμένων αρχείων του Λειτουργικού Συστήματος)
PART !!ProfileSize NUMERIC REQUIRED SPIN 100 VALUENAME "MaxProfileSize" DEFAULT 30000 MAX 30000 MIN 300 END PART
Αλλάζουμε το MAX 30000 σε MAX 100000.
Επανεκκινούμε το poledit και πλέον έχουμε την δυνατότητα να επιλέξουμε το νέο όριο.
Οι επιλογές που λαμβάνονται από το αρχείο winnt.adm είναι βασικές αλλά λίγες. Προσθέτωντας περισσότερα .adm αρχεία έχουμε πλέον περισσότερες επιλογές στην δημιουργία πολιτικών.
(Για custom .adm αρχεία βλέπε http://www.pcc-services.com/custom_poledit.html)
Αντιγράφουμε τα adm αρχεία στον φάκελο c:\windows\inf και στην συνέχεια από το poledit τα προσθέτουμε από το μενού Options → Templates
Aφού κάνουμε τις όποιες ρυθμίσεις μας με το poledit αποθηκεύουμε το αρχείο ως NTConfig.POL κρατώντας backup οπωσδήποτε εάν έχουμε κάποιο παλιό.
Το NTConfig.POL το αντιγράφουμε στον φάκελο netlogon. Π.χ. /var/lib/samba/netlogon/
ΠΡΟΣΟΧΗ! Εάν θέλουμε να δοκιμάσουμε μια νέα πολιτική στον server παραγωγής, θα πρέπει να αφήσουμε μόνο 1 Η/Υ ανοιχτό στο domain και κατά προτίμηση χωρίς ήδη υπάρχουσα πολιτική. Οι νέες πολιτικές δεν αναιρούν ρυθμίσεις από τις προηγούμενες εκτός εάν το ορίσουμε εμείς.
Προσθέτωντας και το αρχείο custom.adm που βρίσκεται εδώ στο poledit έχουμε πλέον περισσότερες επιλογές πολιτικών. Κάποιες από τις χρήσιμες είναι :
Ένα mandatory profile (υποχρεωτικό προφίλ) είναι ένα σταθερό μη εγγράψιμο προφίλ που εφαρμόζεται στους υπάρχοντες και στους νέους χρήστες. Οποιεσδήποτε αλλαγές γίνονται κατά την διάρκεια μιας συνεδρίας διαγράφονται κατά την αποσύνδεση
Αρχικά θα πρέπει να ρυθμίσουμε έναν νέο χρήστη όπως ακριβώς τον θέλουμε για το υποχρεωτικό προφίλ (βλ 2 διαδικασίες : πολύπλοκη-υποστηρίζεται από MS ή ευκολότερη-χωρίς υποστήριξη από MS).
Μετονομάζουμε το αρχείο ntuser.dat σε ntuser.man
mv /var/lib/samba/profiles/mandprofile/ntuser.dat /var/lib/samba/profiles/mandprofile/ntuser.man
Ορίζουμε πλήρη δικαιώματα για όλους. π.χ.
chmod -R 777 /var/lib/samba/profiles/mandprofile
Στο αρχείο /etc/samba/smb.conf κάνουμε τις ακόλουθες ρυθμίσεις
logon path=\\%N\profiles\mandprofile .. [profiles] .. read only=Yes vfs objects=fake_perms
Επανεκκινούμε την υπηρεσία samba και τον client υπολογιστή
Έστω ότι θέλουμε οι δικτυακοί samba χρήστες που ανήκουν στην ομάδα teachers να έχουν πλήρη δικαιώματα σε κάποιον κοινόχρηστο φάκελο. Στον ίδιο φάκελο θέλουμε να μην έχουν κανένα δικαίωμα οι υπόλοιποι δικτυακοί χρήστες.
Έστω ο χρήστης testteacher. Τον προσθέτουμε στην ομάδα teachers ως εξής
adduser testteacher teachers
Δημιουργούμε έναν φάκελο έστω /mnt/data/teachers
mkdir /mnt/data/teachers
Ορίζουμε την ομάδα του φακέλου ως teachers ώστε να μπορούν οι χρήστες αυτής της ομάδας να δημιουργούν φακέλους και αρχεία. Δεν δίνουμε κανένα δικαίωμα στους υπόλοιπους χρήστες ούτε καν να δουν τα περιεχόμενα
chown -R root.teachers /mnt/data/teachers chmod -R 770 /mnt/data/teachers
Στην συνέχεια τροποποιούμε το αρχείο smb.conf ώστε να δημιουργήσουμε έναν κοινόχρηστο φάκελο έστω με όνομα teachers με τα δικαιώματα που αναφέραμε πριν
[teachers] path = /mnt/data/teachers read only = No create mask = 0660 directory mask = 0770 valid users = @teachers force group = teachers #hosts allow = 192.168.2.0/24 #browseable = no
Αρχικά ακολουθούμε τις οδηγίες ρύθμισης του εκτυπωτή στον server για να εμφανίζεται στην λίστα κοινόχρηστων εκτυπωτών. Εγκαθιστούμε επίσης τον οδηγό σε κάθε client. (βλ. Εκτύπωση μέσω samba).
Στην συνέχεια θα δώσουμε δικαίωμα εκτύπωσης μόνο σε μια συγκεκριμένη ομάδα, έστω στην ομάδα teachers, καθώς και στον χρήστη testuser.
Σταματάμε την υπηρεσία cups
/etc/init.d/cupsd stop
Τροποποιούμε το αρχείο /etc/cups/printers.conf. Βρίσκουμε την δήλωση του εκτυπωτή που μας ενδιαφέρει π.χ. myprinter και προσθέτουμε τις παρακάτω γραμμές
<DefaultPrinter myprinter> .. .. AllowUser @teachers AllowUser testuser .. .. </Printer>
Εκκινούμε πάλι την υπηρεσία cups
/etc/init.d/cupsd start
Εάν τώρα θέλουμε να κάνουμε κοινόχρηστο έναν φάκελο από έναν client υπολογιστή που είναι συνδεδεμένος στο domain μας, στον οποίο φάκελο θέλουμε να έχουν πρόσβαση μόνο οι χρήστες που ανήκουν στην ομάδα teachers τότε:
Εκτελούμε στον server την παρακάτω εντολή η οποία δημιουργεί ένα δικτυακό samba group teachers και το αντιστοιχεί στην ομάδα teachers
net groupmap add rid=2000 ntgroup="teachers" unixgroup=teachers type=d
(Το rid έχει τυχαία τιμή εδώ, αρκεί να μην συγκρούνται με κάποιο προκαθορισμένο χωρίς να το θέλουμε - βλ. http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection)/groupmapping.html#id2597511)
Στην συνέχεια
Πλέον και στον φάκελο αυτό έχουν δικαιώματα μόνο οι χρήστες της ομάδας teachers
Για να αντιστοιχίσουμε ένα group samba σε ένα group unix μπορούμε να εκτελέσουμε π.χ.
net groupmap modify ntgroup="Domain Admins" unixgroup=ntadmin net groupmap modify ntgroup="Domain Users" unixgroup=users net groupmap modify ntgroup="Domain Guests" unixgroup=nobody
Τι θα πρέπει να γίνει για να προστεθούν οι Domain Users στο Power Users group? Το Power Users group είναι ένα τοπικό group σε κάθε μηχάνημα με Windows 2000/XP Professional. Δεν μπορεί να προστεθεί αυτόματα, θα πρέπει να γίνει η διαδικασία σε κάθε μηχάνημα ξεχωριστά ως εξής:
Μπορούμε να δημιουργήσουμε ένα αρχείο login.bat μέσα στον φάκελο /var/lib/samba/netlogon
Θα πρέπει να έχουμε ορίζει να διαβάζεται το αρχείο αυτό κατά το login. Για τον λόγο αυτό προσθέτουμε στην smb.conf στον τομέα [global]
logon script = login.bat
Το αρχείο login.bat μπορεί να περιέχει τις παρακάτω γραμμές
REM Drive Mapping Script net use U: %LOGONSERVER%\upload
Αν λοιπόν έχουμε έναν κοινόχρηστο φάκελο με όνομα upload αυτός θα αντιστοιχηθεί στο γράμμα U: στην πλευρά του client
Για να εμφανιστούν πολύ περισσότερα μηνύματα αποσφαλμάτωσης ανεβάζουμε το log levelπ.χ.
log level = 10 log file = /usr/local/samba/lib/log.%m include = /usr/local/samba/lib/smb.conf.%m
Θα πρέπει να έχει εγκατασταθεί το smbfs
aptitude install smbfs
Απο την κονσολα ως root για να προσαρτήσουμε στον φάκελο /mnt/samba τον δικτυακό φάκελο public (που επιτρέπει πρόσβαση guest) του υπολογιστή sambaserver
mkdir /mnt/samba mount -t smbfs //sambaserver/public /mnt/samba -o username=guest
Στο παραπάνω αρχείο smb.conf υπάρχει μια καταχώρηση public Για να το ενεργοποιήσετε στο αρχείο fstab δείτε το κεφάλαιο Γενικές Ρυθμίσεις /etc/fstab
Εάν μας εμφανιστεί μύνημα ότι δεν υπάρχει καταχώρηση dns στον domain controller, θα πρέπει να ελέγξουμε εάν ο ΗΥ είναι ρυθμισμένος να λαμβάνει ip και ρυθμίσεις από κάποιον router.
Θα πρέπει να απενεργοποιηθεί ο dhcp server στον router και να εγκατασταθεί υπηρεσία dhcp στον linux server
Για να επαληθεύσουμε ότι το πρόβλημα είναι όντως το παραπάνω, αρκεί να τοποθετήσουμε μια σταθερή ip στο μηχάνημα και να ξαναδοκιμάσουμε να το προσθέσουμε στο domain
Πρώτ' απ' όλα δοκιμάστε να επαννεκινήσετε την υπηρεσία samba
/etc/init.d/samba restart
Δοκιμάστε επίσης να εισάγετε το μηχάνημα σε μία τοπική ομάδα (π.χ. workgroup) και όχι περιοχή domain, επανεκκινήστε και ξαναδοκιμάστε
Προβλήματα εμφανίστηκαν μετά από εγκατάσταση php, mysql και apache στο μηχάνημα - πελάτη με τα Windows XP, πιθανόν από τον apache. Σε κάθε είσοδο εμφανίζεται το τοπικό αντίγραφο του προφίλ του χρήστη και όχι το αντίγραφο περιαγωγής. Για το λόγο αυτό καλό είναι να αποφύγετε την εγκατάσταση των προγραμμάτων αυτών, αφού απεγκαταστασή τους μετά δεν λύνει το πρόβλημα.
Προβλήματα μπορεί να εμφανιστούν επίσης εάν ο πελάτης ρυθμίζεται μέσω dhcp. Για το λόγο αυτό πάντα κάντε τις αρχικές δοκιμές με στατικές IPs, dns, κτλ.
Από την πλευρά του πελάτη μπορούμε να δοκιμάσουμε εντολές από την γραμμή εντολών όπως Να αντιστοιχίσουμε το home directory του linux στο drive x
net use x: /home
Επίσης μπορούμε να δούμε πληροφορίες για το πως βλέπει τον χρήστη με τον οποίον έχουμε συνδεθεί η υπηρεσία samba με την εντολή
net user yourusername /domain
Για να δούμε τις διαθέσιμες μεταβλητές περιβάλλοντος σε ένα client μηχάνημα εκτελούμε
set
Αυτές μπορούμε να τις χρησιμοποίησουμε στο login.bat
Το μήνυμα αυτό εμφανίζεται κατά την προσπάθεια να αλλάξει ο κωδικός samba από ένα linux client μηχάνημα με την εντολή
smbpasswd -r [server]
Πηγές
Εάν διαγραφεί και ξαναδημιουργηθεί ένας χρήστης samba με τις εντολές
pdbedit -x -u testuser pdbedit -a -u testuser
Θα αποκτήσει νέο sid. Αυτό μπορεί να δημιουργήσει πρόβλημα στους clients που είχε συνδεθεί ο χρήστης testuser με το παλιό sid
Εάν βρούμε το παλιό sid (έστω S-1-5-21-1367752256-2954819317-735245560-1004) μπορούμε να το χρησιμοποιήσουμε στον server με την εντολή
pdbedit -r -u testuser -U S-1-5-21-1367752256-2954819317-735245560-1004
Για να το βρούμε μπορούμε να εκτελέσουμε το regedit με δικαιώματα system ως εξής: (έστω ότι η ώρα είναι 11:19)
at 11:20 /interactive "regedit.exe"
Ψάχνουμε στην θέση HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Syncmgr\ProgressState. Υπάρχουν υποφακέλοι με τους δικτυακούς χρήστες με την τιμή του SID για τον καθένα
Το swat είναι ένα θαυμάσιο διαδικτυακό εργαλείο για ρύθμιση samba. Η εκκίνηση του γίνεται από το inetd. Θα πρέπει να επεξεργαστούν τα αρχεία /etc/inetd.conf και /etc/services για την ενεργοποίησή του μέσω του inetd. Δείτε για λεπτομέρειες.
man swat
Για εγκατάσταση
aptitude install swat
Στο /etc/inetd.conf θα πρέπει να προστεθεί μία γραμμή όπως η παρακάτω (δεν χρειάζεται να γίνει στο Debian αφού γίνεται αυτόματα κατά την εγκατάσταση. Θα πρέπει όμως να αφαιρεθεί το σχόλιο από αυτήν, που έχει μπει για λόγους ασφαλείας)
swat stream tcp nowait.400 root /usr/sbin/swat swat
Ενεργοποιήστε το inetd να τρέχει σε κάθε εκκίνηση από τα sysvconfig ή ksysv. Για να το δοκιμάσετε άμεσα.
/etc/init.d/inetd start
Στην συνέχεια από τον konqueror
http://localhost:901
Για να συνδεθείς σε ένα pc που μοιράζεται αρχεία από windows ή από Linux μέσω samba κάνε τα παρακάτω : Ξεκίνα το LinNeighborhood. Άλλαξε password και άφησε κενό το workgroup. Μετα προσάρτησε τον κοινό φάκελο. Εάν δεν δουλέψει από το Κέντρο Ελέγχου του KDE Δίκτυο/Τοπική Περιήγηση άλλαξε τις ρυθμίσεις με αυτές του τοπικού σου δικτύου