172 γραμμές
19 KiB
Markdown
172 γραμμές
19 KiB
Markdown
|
+++
|
|||
|
title = 'SAMBA made easy\...'
|
|||
|
date = '1998-02-01T00:00:00Z'
|
|||
|
description = ''
|
|||
|
author = 'Μιχάλης Καμπριάνης'
|
|||
|
issue = ['Magaz 02']
|
|||
|
issue_weight = 4
|
|||
|
+++
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
*Για αυτό το δεύτερο τεύχος του Magaz σας ετοίμασα ένα case study. Πως μπορεί το Linux box που προφανώς έχετε, να επικοινωνήσει με τα Win 95 που έχουν οι
|
|||
|
συνάδελφοι / φίλοι σας στον ίδιο χώρο (και προφανώς στο ίδιο ethernet).*
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
Ας μην μπερδευτούμε. Αυτό δεν είναι ένα HOW-TO (εξάλλου υπάρχει πολύ documentation για το SAMBA, σε αυτό θα αναφερθώ). Αυτό θέλω να είναι ένα dummy\'s guide.
|
|||
|
Όχι, δεν θεωρώ κανένα dummy. Μόνο εμένα που πολλά από αυτά που γράφω με δυσκόλεψαν :-) Μία λύση είναι να στήσετε το πρωτόκολλο TCP/IP και στα Win95. Μετά με τα
|
|||
|
γνωστά (Telnet, Ftp) μπορείτε να έχετε την ίδια σύνδεση με τα Win95 όπως και με τα άλλα Linux/Unix μηχανήματα. Για να κάνετε όμως mount τους δίσκους τους (και
|
|||
|
να κάνουν αυτοί mount τους δικούς σας), χρειάζεται NFS. NFS server καθώς και NFS client έχετε στο Linuxακι σας. Τα ίδια προγράμματα για Win95 δεν υπάρχουν παρά
|
|||
|
μόνο Shareware. Και η χρήση τους προϋποθέτει ρυθμίσεις στα μηχανήματα με Win95. Επειδή όμως εσείς είστε οι ειδήμονες και όχι οι Win95 users, ας δούμε πως
|
|||
|
μπορείτε να έχετε σύνδεση, χωρίς πολλές παράξενες ρυθμίσεις στα Win95. Μπορείτε λοιπόν να χρησιμοποιήσετε το πρωτόκολλο για Peer-to-Peer σύνδεση που έχουν τα
|
|||
|
Win95. Αυτό \"χρησιμοποιεί\" τις λέξεις SMB, NETBeui και NETBIOS. Το τι είναι τι, είναι λίγο μπερδεμένο. Όπως λέει το documentation του Samba, το NETBeui είναι
|
|||
|
ένα low-level πρωτόκολλο, και το NetBIOS είναι ένα high-level πρωτόκολλο, που μπορεί να δουλέψει είτε πάνω από TCP/IP, ή πάνω από NETBeui, ή ακόμα και πάνω από
|
|||
|
IPX/SPX. Η υλοποίηση που θα δούμε, χρησιμοποιεί το TCP/IP ως underlaying layer. Το πρόγραμμα που σας δίνει αυτή τη δυνατότητα λέγεται
|
|||
|
[Samba](http://www.dlr.de/fresh/linux/src/samba-1.9.18.tar.gz). Οι ρυθμίσεις του είναι εύκολες, αν γίνουν με τη σωστή σειρά. (Εδώ υποθέτουμε ότι έχουν ρυθμιστεί
|
|||
|
σωστά τα TCP/IP στο Linux και στα Windows 95).
|
|||
|
|
|||
|
Στο σημείο αυτό θα ήθελα να ευχαριστήσω το [Χρήστο Ρικούδη](mailto:ricudis@paiko.gr), ο οποίος μου έλυσε πολλές απορίες κατά τη διάρκεια μιας αντιπαράθεσης που
|
|||
|
είχαμε πρόσφατα στην linux-greek-users λίστα. Χρήστο ευχαριστώ, ελπίζω να τα κατάλαβα επιτέλους :-)
|
|||
|
|
|||
|
**1. Στάδια εγκατάστασης\...**
|
|||
|
--------------------------------------------------------
|
|||
|
|
|||
|
**2. Έλεγχος σωστής λειτουργίας\...**
|
|||
|
---------------------------------------------------------------
|
|||
|
|
|||
|
**3. Χρήση**
|
|||
|
--------------------------------------
|
|||
|
|
|||
|
|
|||
|
### [1. Στάδια εγκατάστασης\...]{#s1}
|
|||
|
|
|||
|
- Θα χρειαστεί να ξαναδημιουργήσουμε τον πυρήνα (recompile του kernel), ενεργοποποιώντας στα Filesystems, τα SMB support και SMB Win95 bug workaround. Καλό θα
|
|||
|
ήταν επίσης να ενεργοποιηθεί το Win95 vfat. Αυτό δεν είναι για να δούνε τα Win95 μηχανήματα τους δίσκους μας, αλλά για να δούμε εμείς τους δικούς τους. Θα
|
|||
|
επανέλθουμε σε αυτό αργοτερα.
|
|||
|
- Κάνουμε extract το [Samba](http://www.dlr.de/fresh/linux/src/samba-1.9.18.tar.gz) στο \"smbtar\" directory. Στο Makefile που βρίσκεται στο directory
|
|||
|
\"smbtar\"/source πρέπει (αν θέλουμε να μην κάνουμε πολλές ρυθμίσεις αργότερα) να δηλώσουμε ως workgroup αυτό στο οποίο θέλουμε να ανήκουμε (δηλαδή αυτό στο
|
|||
|
οποίο ανήκουν οι πιο συχνά χρησιμοποιούμενοι PC). Επίσης ορίζουμε το default guest account, το οποίο εξ ορισμού είναι το nobody (μάλλον όχι και τόσο καλή
|
|||
|
ιδέα, όπως λέει και το ίδιο το Makefile, αφού αυτό το account στα Unix μηχανήματα δεν έχει δυνατότητα εκτύπωσης). Το default guest account είναι αυτό που
|
|||
|
χρησιμοποιείται όταν κάποιος συνδεθεί στο μηχάνημά μας χωρίς username και password. Προσοχή, πρέπει να υπάρχει αυτό το account στο μηχάνημά μας (ένας
|
|||
|
έλεγχος στο /etc/passwd θα σας επιβεβαιώσει την ύπαρξή του ή όχι).
|
|||
|
- Οι υπόλοιπες ρυθμίσεις στο Makefile (directories, compiler κλπ) είναι θέμα του κάθε μηχανήματος. Έστω ότι ορίζουμε εγκατάσταση στο \"smbinst\" directory.
|
|||
|
- Μετά τα (τυπικά) make, make install, έχουμε τα αρχεία που χρειαζόμαστε στο directory που ορίσαμε, εκτός από το smb.conf, το οποίο δεν υπάρχει και πρέπει να
|
|||
|
δημιουργήσουμε. Για αρχή, είναι αρκετό να αντιγράψουμε το smb.conf από το directory \"smbtar\"/examples/simple στο \"smbinst\"/lib, και να αλλάξουμε το
|
|||
|
guest account (το οποίο έχει ένα όνομα pcguest), σε αυτό που δηλώσαμε στο Makefile.
|
|||
|
- Από το \"smbinst\"/bin, εκτελούμε to testparm, το οποίο ελέγχει το \"smbinst\"/lib/smb.conf για λάθη. Φυσιολογικά δεν πρέπει να υπάρχουν λάθη, οπότε
|
|||
|
μπορούμε να συνεχίσουμε. Αν υπάρχουν όμως λάθη, μπορούμε απλά να κάνουμε comment τις γραμμές που μας δημιουργούν πρόβλημα. Αν χρειαζόμαστε όμως αυτές τις
|
|||
|
υπηρεσίες, πρέπει να βρούμε που είναι το λάθος.
|
|||
|
|
|||
|
|
|||
|
### [2. Έλεγχος σωστής λειτουργίας\...]{#s2}
|
|||
|
|
|||
|
- Στο directory \"smbinst\"/bin υπάρχουν τα αρχεία nmbd και smbd. Αυτά είναι οι servers. Το μεν nmbd είναι ο NETBios Name server ενώ το smbd είναι ο SMB
|
|||
|
server. Αυτοί οι servers, πρέπει να αρχίζουν όποτε καλούνται για να έχουμε πάντα σύνδεση. Συνεπώς πρέπει να τους προσθέσουμε στο γνωστό /etc/inetd.conf,
|
|||
|
όπου ήδη υπάρχουν (ως comments) οι απαραίτητες γραμμές. Αν δεν υπάρχουν, είναι οι εξής:
|
|||
|
|
|||
|
netbios-ssn stream tcp nowait root "smbinst"/bin/smbd smbd
|
|||
|
netbios-ns dgram udp wait root "smbinst"/bin/nmbd nmbd
|
|||
|
|
|||
|
- Καιρός να δοκιμάσουμε άλλη μία εντολή από το \"smbinst\"/bin. Γράφουμε
|
|||
|
|
|||
|
nmblookup -B <linux-name> __SAMBA__
|
|||
|
|
|||
|
Το αποτέλεσμα πρέπει να είναι η IP διεύθυνση του μηχανήματος.
|
|||
|
|
|||
|
π.χ. 192.168.0.2 __SAMBA__
|
|||
|
|
|||
|
Αν δεν πάρουμε αυτή την απάντηση, κάτι δεν πάει καλά με το nmbd (NETBios nameserver). Aν οι αναφορές στο inetd.conf είναι όπως γράφονται παραπάνω, δεν
|
|||
|
πρέπει να έχουμε πρόβλημα. Ένα συνηθισμένο πρόβλημα είναι ότι το port 137 είναι κατηλειμμένο. Ας το εξακριβώσουμε. Με την εντολή netstat -a \| grep netbios
|
|||
|
μπορούμε να ελέγξουμε ότι πράγματι το netbios-ssn είναι σε LISTEN mode, καθώς και ότι τα netbios-ns και netbios-dgm είναι ενεργοποιημένα (αυτά δεν πρέπει να
|
|||
|
είναι σε LISTEN mode).
|
|||
|
|
|||
|
tcp 0 0 *:netbios-ssn *:* LISTEN
|
|||
|
udp 0 0 *:netbios-ns *:*
|
|||
|
udp 0 0 *:netbios-dgm *:*
|
|||
|
|
|||
|
Αν κάποια γραμμή από τις παραπάνω λείπει, πράγματι μία από τις υπηρεσίες δεν λειτουργεί. Γι\' αυτό ελέγχουμε το αρχείο /etc/services στο οποίο πρέπει να
|
|||
|
υπάρχουν δηλωμένα τα sockets στα οποία ακούν αυτοί οι daemons.
|
|||
|
|
|||
|
netbios-ns 137/tcp # NETBIOS Name Service
|
|||
|
netbios-ns 137/udp
|
|||
|
netbios-dgm 138/tcp # NETBIOS Datagram Service
|
|||
|
netbios-dgm 138/udp
|
|||
|
netbios-ssn 139/tcp # NETBIOS session service
|
|||
|
netbios-ssn 139/udp
|
|||
|
|
|||
|
Με ένα kill -HUP \"pid-of-inetd\" υποχρεώνουμε τον inetd να διαβάσει ότι αλλαγές κάναμε στα /etc/inetd.conf και /etc/services. Αν δοκιμάσουμε τώρα να
|
|||
|
γράψουμε
|
|||
|
|
|||
|
nmblookup -B "win95-pc" '*'
|
|||
|
|
|||
|
πρέπει να δούμε την IP διεύθυνση του WIN95 μηχανήματος.
|
|||
|
|
|||
|
π.χ. 192.168.0.1 *
|
|||
|
|
|||
|
Tip \#1: Αν όλα τα παραπάνω πήγαν καλά, είμαστε σίγουροι ότι το nmdb (Netbios name-server) δουλεύει σωστά. Αν δεν δουλεύει σωστά, θα μπορούμε πάλι να
|
|||
|
χρησιμοποιήσουμε το SMB αλλά με κάποιους περιορισμούς (στη χρήση των ονομάτων των μηχανημάτων). Εν ολίγοις, αν πρόκειται να δουλέψετε μόνο με IP διευθύνσεις,
|
|||
|
δεν το χρειάζεστε.
|
|||
|
|
|||
|
Tip \#2: Αν κάνετε accounts στο Linux, με username τα ονόματα των Win95 μηχανημάτων, το SMB θα ζητάει και password (το password του account) για τη σύνδεση από
|
|||
|
τα Win95 στο Linux. To εύκολο σε αυτό είναι ότι ο χρήστης μπορεί να κάνει login στα Windows95 με το username του account που έχει στο Linux.
|
|||
|
|
|||
|
Tip \#3: Δεν θα ήταν άσχημο εδώ, να ρίξουμε μια ματιά στο /etc/hosts.allow για να μην κάνουμε διαθέσιμους τους δίσκους μας σε όλο το Internet :-)
|
|||
|
|
|||
|
### [3. Χρήση]{#s3}
|
|||
|
|
|||
|
- Τώρα που έχουμε σωστά στημένους τους daemons, καιρός να δούμε πως θα χρησιμοποιήσουμε την υπηρεσία αυτή. Ένα άλλο αρχείο που υπάρχει στο \"smbinst\"/bin
|
|||
|
είναι το smbclient, το οποίο μας δίνει τα shares που υπάρχουν σε συγκεκριμένο host. Η σύνταξή του στην απλή της μορφή είναι smbclient -L \"hostname\" και οι
|
|||
|
πληροφορίες που δίνει είναι αρκετές: Domain, OS, Server, User, Workgroup, Shares, όλα στα χέρια μας. Η αλήθεια είναι ότι ήδη ξέρουμε τα Domain, OS, Server,
|
|||
|
User και Workgroup (αφού εμείς τα ορίσαμε) αλλά είναι καλό να δίνονται αυτές οι πληροφορίες για troubleshooting. Τα shares τα οποία αναφέρονται είναι μία
|
|||
|
καινούρια πληροφορία, η οποία έρχεται από το αρχείο \"smbinst\"/lib/smb.conf. Ήρθε λοιπόν η ώρα να \"πειράξουμε\" το αρχείο αυτό.Αυτό το αρχείο αποτελείται
|
|||
|
από δηλώσεις, χωρισμένες σε sections. Το section \"global\" έχει τις επιλογές:\
|
|||
|
browsable = {yes/no} αν θα μπορεί κάποιος να δει το PC μας από το Network Neighborhood. Για να δουλέψει αυτό, πρέπει να δουλεύει σωστά το nmbd.\
|
|||
|
printing = {sysv/bsd/aix} ανάλογα με το πως έχουμε στήσει την υπηρεσία printing στο μηχάνημά μας (για Linux με ή χωρίς /etc/printcap, η επιλογή είναι bsd,
|
|||
|
εκτός αν έχετε εσείς αλλάξει κάτι).\
|
|||
|
printcap name = {/etc/printcap} μόνο για bsd, το full path για το αρχείο printcap.\
|
|||
|
load printers = {yes/no} αν θα υπάρχει υπηρεσία εκτύπωσης από τα Win95 μηχανήματα.\
|
|||
|
guest account = {guest} Το account που δηλώσαμε στο Makefile (στάδιο 2), το οποίο ανταποκρίνεται σε οποιονδήποτε συνδέεται στο PC μας χωρίς account. Πρέπει
|
|||
|
αυτό το account να υπάρχει στο μηχάνημα (συνήθως χωρίς δυνατότητα login και με πολύ λίγα δικαιώματα).\
|
|||
|
log file = {\"smbinst\"/log.%m} μία επιλογή για να γίνεται διαφορετικό logging για κάθε μηχάνημα που συνδέεται (%m).\
|
|||
|
lock directory = {\...} share modes = yes Αυτά τα δύο πρέπει να οριστούν αν θέλετε πολλοι χρήστες να χρησιμοποιούν τα ίδια αρχεία. Το lock directory πρέπει
|
|||
|
να είναι world readable.\
|
|||
|
Το section \"Homes\" έχει τις επιλογές:\
|
|||
|
comment = {\...} Το όνομα με το οποίο θα εμφανίζεται το home directory του κάθε χρήστη στον υπολογιστή του (στο Network Neghborhood).\
|
|||
|
browsable = {yes/no} Όπως και στο section global. Μπορεί να γίνει και comment, για να χρησιμοποιηθούν οι ρυθμίσεις του global\
|
|||
|
read only = {yes/no} Αυτονόητο\
|
|||
|
create mode = {\...} Default Mask για νέα αρχεία (όχι umask, όπως σε standard Unix)\
|
|||
|
Το section \"printers\" έχει τις επιλογές\
|
|||
|
comment = {\...} Όπως ανωτέρω\
|
|||
|
browsable = {yes/no} Όπως ανωτέρω\
|
|||
|
printable = {yes/no} Δυνατότητα εκτύπωσης\
|
|||
|
public = {yes/no} αν θα μπορούν να έχουν δυνατότητα και guests (εκτός από normal users).\
|
|||
|
Για τα ανωτέρω sections, υπάρχουν και άλλες επιλογές, λιγότερο συχνά χρησιμοποιούμενες. Η ανάλυσή τους θα ήθελε πολύ χρόνο, οπότε\... man smb.conf Επίσης,
|
|||
|
καλό θα ήταν να προστεθεί ένα section \"tmp\" για άτομα χωρίς account.
|
|||
|
|
|||
|
"tmp"
|
|||
|
comment = Temporary file space
|
|||
|
path = /tmp
|
|||
|
read only = yes
|
|||
|
public = yes
|
|||
|
|
|||
|
To νέο smb.conf θα διαβαστεί την επόμενη φορά που θα ξεκινήσει ο smbd.
|
|||
|
|
|||
|
- Το εκτελέσιμο \"smbinst\"/bin/smbstatus μας δίνει τις \"ανοιχτές\" συνδέσεις Το εκτελέσιμο \"smbinst\"/bin/smbrun χρησιμοποιείται από το smbd. Το εκτελέσιμο
|
|||
|
\"smbinst\"/bin/smbtar έχει ακριβώς την ίδια χρήση όπως το tar, αλλά για SMB shares.
|
|||
|
|
|||
|
- Για να κάνετε και εσείς mount τα shares (δίσκους ή directories από Win95) θα χρειαστείτε το πακέτο
|
|||
|
[smbfs](ftp://ftp.gwdg.de/pub/linux/misc/smbfs/smbfs.tgz), ενώ για να τυπώσετε σε SMB shared printer, θα χρειαστείτε το \"smbinst\"/bin/smbprint. Με το
|
|||
|
πακέτο smbfs, τα πράγματα είναι απλά. Αυτό, μετά το compile θα σας δώσει δύο αρχεία: smbmount και smbumount. Η χρήση τους είναι η αυτονόητη:
|
|||
|
|
|||
|
smbmount (smbumount) //"win95"/"share" "mount-point" [options]
|
|||
|
|
|||
|
Συνήθως δεν χρειάζονται options, αλλά ένα smbmount -h θα σας δείξει τις πιθανές επιλογές. Το smbprint ωστόσο, δεν είναι εκτελέσιμο αλλά ένα script το οποίο
|
|||
|
πρέπει εμείς να φτιάξουμε σύμφωνα με το δίκτυό μας. Νομίζω ότι οι οδηγίες που δίνονται στο αρχείο (ως comments) είναι πολύ κατατοπιστικές, οπότε δεν θα
|
|||
|
ασχοληθώ μια που το καλύτερο που μπορώ να κάνω είναι μια\... μετάφραση.
|
|||
|
|
|||
|
Σίγουρα υπάρχουν πολλά ακόμα πράγματα σχετικά με το Samba. Αυτό που προσπάθησα να κάνω είναι να δείξω πως \"στήνουμε και τρέχουμε\" ένα Samba server-client στο
|
|||
|
Linuxάκι μας. Το σημαντικό βημα όμως, το οποίο θα πρέπει να κάνετε μόνοι σας, είναι το γνωστό \"finetuning\". Βελτιστοποίηση της λειτουργίας (και ασφάλειας)
|
|||
|
αυτού του server. Καλή τύχη.
|
|||
|
|