Εχετε 2 ή περισσότερα PCs, στο ένα έχετε Linux και θέλετε να μπορείτε να βλέπετε τα shares (τους διαμοιραζόμενους φακέλους) από το ένα στο άλλο. Να οι βασικές ρυθμίσεις.
Κατ' αρχάς υποθέτουμε ότι τρέχετε Samba Server στο Linux μηχάνημα (σε αυτό από το οποίο θα μοιράζετε τους φακέλους). Για την εγκατάσταση του Samba server, στο Ubuntu, π.χ., αρκεί να δώσετε:
sudo apt-get install samba
Ενώ στο Fedora:
yum -y install samba samba-client system-config-samba
Αντίστοιχες είναι οι εντολές στις άλλες διανομές.
Εναλλακτικά για εγκατάσταση από το γρ. περιβάλλον χρησιμοποιήστε το Synaptic/Yumex/YaST κλπ, κλπ.
Επίσης θα πρέπει να έχετε εγκαταστήσει το samba-common ή smb-client στα υπόλοιπα Linux PCs. Από εδώ και πέρα, όλες οι εντολές που ακολουθούν είναι ίδιες ανεξάρτητα αν έχετε Ubuntu, Fedora, SUSE, Mandriva ή οτιδήποτε άλλο. Προτιμάμε την κονσόλα, ως ελάχιστη κοινή συνισταμένη, επειδή κάθε διανομή έχει τα δικά της παραθυρικά εργαλεία για τα ίδια πράγματα. Για παράδειγμα στο Fedora αρκεί να πάτε στο Σύστημα > Διαχείριση > Server > Samba. Αν δεν υπάρχει στο Fedora σας, εγκαταστήστε το με
yum install system-config-samba
ΣΤΟΙΧΕΙΩΔΗΣ ΡΥΘΜΙΣΗ ΤΟΥ SAMBA SERVER
H ρύθμιση του Samba γίνεται από το αρχείο /etc/samba/smb.conf. Το ανοίγετε ως root δίνοντας π.χ. sudo nano /etc/samba/smb.conf και προσθέτετε το/τους φάκελο-oυς που θέλετε να κάνετε share.
Να ένα παράδειγμα:
[temp]
path = /media/hda9
available = yes
browsable = yes
public = yes
writable = yes
Εδώ μοιράζω με το όνομα temp όλον τον φάκελο /media/hda9, σε όλους με δικαιώματα εγγραφής (writable=yes). Το τελευταίο μπορεί να το κάνετε no, αν δεν θέλετε να δώσετε δικαιώματα εγγραφής.
Προσοχή: για να μπορούν να έχουν πρόσβαση άλλοι χρήστες στον κοινόχρηστο φάκελο, θα πρέπει το /media/hda9 να έχει δικαιώματα πρόσβασης 755 τουλάχιστον. Αυτό γίνεται με την εντολή:
sudo chmod -R 755 /media/hda9
Στο ίδιο αρχείο βρείτε την επιλογή workgroup και βάλτε το όνομα του workgroup στο οποίο θα ανήκει το PC με το Samba Server.
workgroup = LINUX
Καλό είναι όλα τα μηχανήματα που θα μοιράζονται πόρους να είναι στο ίδιο workgroup. Διαφορετικά δεν θα μπορείτε να δείτε τα Linux μηχανήματα από το Network Neighborhood (ή κάτι τέτοιο) των Windows.
Πιο κάτω θα βρείτε μια επιλογή
; security = user
Το ερωτηματικό μπροστά σημαίνει "απενεργοποιημένο". Αν το βγάλετε τότε για να συνδεθείτε με τον Samba server θα πρέπει να έχετε λογαριασμό σε αυτόν.
Οι λογαριασμοί δημιουργούνται ως root με την εντολή:
sudo smbpasswd -a usernameκαι θα σας ζητήσει κωδικό.
Επειδή το παραπάνω share είναι public, το smbpasswd δεν ισχύει εδώ. Οι πάντες θα μπορούν να συνδεθούν. Ουσιαστικά το public είναι συνώνυμο του guest ok = yes (δείτε παρακάτω).
Aφού ρυθμίσετε το smb.conf, δώστε
sudo /etc/init.d/samba restart
ή
sudo /etc/init.d/smb restart #για Fedora
για να (ξανα) ξεκινήσει ο Samba server.
Λογικά, θα μπορείτε να δείτε το shared φάκελο από κάθε άλλο PC. Στο Fedora, θα πρέπει να τρέξετε το εργαλείο διαχείρισης Firewall (Σύστημα > Διαχείριση > Firewall> και να κάνετε trusted την υπηρεσία Samba (θύρες 137/udp,138/udp, 139/tcp και 445/tcp), ώστε να μην μπλοκάρει το firewall την πρόσβαση από άλλους υπολογιστές. Κάτι παρόμοιο πρέπει να κάνετε αν έχετε εγκαταστήσει το Samba σε διαφορετική διανομή Linux, στην οποία υπάρχει και Firewall.
Επίσης στο Fedora, πρέπει να προσθέσετε μια ετικέτα "samba-share_t" στον κοινόχρηστο φάκελο για να επιτρέπει την πρόσβαση το SELinux (το εσωτερικό σύστημα ασφαλείας του Fedora). Δείτε τις ετικέτες του κάθε φακέλου με την εντολη:
ls -ldZ /fakelos
και προσθέστε την ετικέτα με την εντολη (ως root!):
chcon -t samba_share_t /fakelos
ΠΡΟΣΒΑΣΗ ΣΕ ΚΟΙΝΟΧΡΗΣΤΟΥΣ ΦΑΚΕΛΟΥΣ
Η προσβαση στο τοπικό δίκτυο και τους κοινόχρηστους φακέλους γίνεται είτε από το Ναυτίλο (όπου πατάτε Ctrl+L και δίνετε την διεύθυνση του Samba server, π.χ. smb://192.168.1.2) είτε από το Τοποθεσίες > Εξυπηρετητές Δικτύου του Gnome είτε από το τερματικό/κονσόλα με την εντολή:
mount -t smbfs -o username=USER,password=PASS //IP-address/temp /mnt/temp
όπου username, password είναι αυτά που ορίσατε με την smbpasswd. Αν δεν ορίσατε τέτοια και ο φάκελος είναι public = yes στο smb.conf μπορείτε να τα παραλείψετε:
mount -t smbfs //IP-address/temp /mnt/temp
Αν δεν δουλεύει με την παράμετρο smbfs, δοκιμάστε με την cifs.
Εναλλακτικά μπορείτε να δοκιμάσετε την εντολή
smbmount //IP-address/temp /mnt/temp [-o username=USER,password=PASS]
Προσοχή! Εννοείται ότι πρέπει να έχετε δημιουργήσει το φάκελο /mnt/temp. Δεν δημιουργείται μόνος του...
TROUBLESHOOTING
Στην περίπτωση που θέλετε να αντιγράψετε από το remote μηχάνημα στο Server αρχεία πάνω από 2Gb, τότε θα πρέπει να προσθέσετε την επιλογή lfs στην εντολή:
smbmount //IP-address/temp /mnt/temp -o lfs
Αν μπορείτε να δείτε τον κοινόχρηστο φάκελο, αλλά όταν μπαίνετε μέσα σας βγάζει το μήνυμα "Permission Denied" τότε τα έχετε κάνει θάλασσα με τα δικαιώματα του φακέλου που μοιράζετε. Δώστε από το μηχάνημα που τρέχει ο Samba Server:
chmod -R 755 /path/to/shared/folder
για να μπορεί ο κάθε απομακρυσμένος χρήστης να μπαίνει και να βλέπει το φάκελο. Αν θέλετε να μπορεί και να γράφει τότε αντικαταστήστε το 755 με 777.
Αν δεν μπορείτε να δείτε με καμία δύναμη τα κοινόχρηστα αρχεία, τότε:
α) ελέγξτε ότι κάνετε ping από το απομακρυσμένο μηχάνημα (απ όπου θέλετε να κάνετε mount) σε εκείνο με το Samba Server, π.χ.:
$ ping IP-address
β) ελέγξτε ότι το μηχάνημα με το Samba Server δεν τρέχει κανένα firewall του στυλ firestarter (ή στο Fedora, μενου Σύστημα > Διαχείριση > Firewall). Αν τρέχετε Firestarter, κάντε "allow incoming connections" για την IP του απομακρυσμένου μηχανήματος από το οποίο συνδέεστε.
γ)
Ελέγξτε ότι στο απομακρυσμένο μηχάνημα τρέχετε το module smbfs:
lsmod | grep smbfs
Αν δεν τρέχει τότε φορτώστε το:
sudo insmod smbfs
και ξαναδοκιμάστε.
Αν τα τσεκάρετε όλα αυτά και πάλι τζίφος (πράγμα όχι απίθανο.....) υπάρχει η εναλλακτική επιλογή του smbclient. Αυτό είναι ένα FTP-like client.
Κατ' αρχάς, χρησιμοποιήστε το για να δείτε τι μοιράζει ο Samba Server:
smbclient -L //IP-address
Πατήστε Enter στον κωδικό. Λογικά θα σας εμφανίσει μια λίστα σαν κι αυτή:
Domain=[LINUX] OS=[Unix] Server=[Samba 3.0.22]
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
temp Disk
IPC$ IPC IPC Service (ypatia server (Samba, Ubuntu))
ADMIN$ IPC IPC Service (ypatia server (Samba, Ubuntu))
HP-Laser Printer HP-Laser
Anonymous login successful
Domain=[LINUX] OS=[Unix] Server=[Samba 3.0.22]
Server Comment
--------- -------
YPATIA ypatia server (Samba, Ubuntu)
Workgroup Master
--------- -------
CPRESS VPN
LINUX YPATIA
Παρατηρήστε ότι το temp φαίνεται μια χαρά. Τώρα μπορείτε να συνδεθείτε με τον client σε αυτό με την εντολή:
smbclient \\IP-address\temp
Προσοχή! Αν έχετε βάλει public=no στο /etc/samba/smb.conf για το συγκεκριμένο shared folder τότε θα πρέπει να δώσετε
smbclient \\IP-address\temp -U username
όπου usernaname είναι εκείνο που ορίζετε με την εντολή
smbpasswd -a username
Διαφορετικά θα δείτε το μήνυμα:
tree connect failed: NT_STATUS_ACCESS_DENIED
Τέλοσπάντων, κάποια στιγμή θα συνδεθείτε σωστά και θα δείτε κάτι σαν κι αυτό:
dimitris@ypatia:/$ smbclient //10.1.2.135/temp
Password:
Anonymous login successful
Domain=[LINUX]
OS=[Unix]
Server=[Samba 3.0.22]
smb:>
Εκεί δώστε dir για να δείτε τα περιεχόμενα του φακέλου και help για να δείτε τις άλλες εντολής. Με
put /path/to/filename
στέλνετε/ανεβάζετε ένα local αρχείο ενώ με
get filename
παίρνετε/κατεβάζετε ένα αρχείο από το Samba server στο μηχάνημα που βρίσκεστε.
ΑΝΩΝΥΜΗ ΠΡΟΣΒΑΣΗ ΣΕ SAMBA SHARES
Ένα κλασικό ζήτημα όταν έχετε κοινόχρηστα αρχεία στο Linux τα οποία θέλετε να βλέπουν οι χρήστες Windows είναι ότι ο Samba server ζητάει όνομα και κωδικό για να επιτρέψει την πρόσβαση - ακόμα κι αν έχετε το φάκελο ως Public = yes.
Για να επιτρέψετε ανώνυμη πρόσβαση (χωρίς να ζητείται κωδικός ή όνομα, όπως γίνεται σε workgroups των Windows) κάνετε τα εξής...
Στο τέλος του Browsing/Identification τμήματος του smb.conf προσθέστε τις εξής δύο γραμμές:
guest account = nobody
map to guest = bad user
Η πρώτη ορίζει ότι ο guest λογαριασμός είναι ο 'nobody' (θα τον φτιάξουμε σε λίγο).
Η δεύτερη γραμμή χρειάζεται για να μην ρωτάει καν ο server τον κάθε χρήστη για το ποιος είναι. Αν δεν υπήρχε αυτή η γραμμή, ο κάθε guest χρήστης θα έπρεπε να συνδέεται ως 'nobody'. Βάζοντας την όμως ο server θα αντιστοιχεί αυτόματα κάθε άγνωστο όνομα χρήστη στο λογαριασμό guest (άρα στο nobody).
Στο τμήμα Authentication βεβαιωθείτε ότι υπάρχει η γραμμή (χωρίς ερωτηματικό στην αρχή):
security = user
Τώρα πηγαίνουμε στο τέλος του αρχείου smb.conf εκεί όπου έχουμε τα shared φακέλους μας και δημιουργούμε έναν όπως φαίνεται παρακάτω. Αν έχετε φτιάξει ήδη έναν από το Gnome/KDE, αυτό το βήμα δεν χρειάζεται. Χρειάζεται όμως όπωσδήποτε το guest ok = yes!
[myshare]
path = /home/dimitris/myshare
available = yes
browsable = yes
public = yes
writable = yes
guest ok = yes
Τέλος, σώζουμε το αρχείο smb.conf και στη γραμμή εντολών δίνουμε:
sudo smbpasswd -an nobody
για να δημιουργηθεί ο χρήστης nobody - θα μας πει κάτι σαν κι αυτό:
User nobody password set to none.
Τώρα κάνουμε restart τον Samba και είμαστε ΟΚ.
Σημειώστε ότι για να έχετε read/write access σε ένα φάκελο, εκτός από τα παραπάνω, θα πρέπει επίσης να έχετε αλλάξει τα δικαιώματα του για όλους τους χρήστες (αυτό γίνεται με δεξί κλικ > Ιδιότητες > Δικαιώματα στον εκάστοτε φάκελο στο Gnome)
ΠΕΡΙΟΡΙΣΜΟΣ ΠΡΟΣΒΑΣΗΣ ΑΝΑ ΧΡΗΣΤΗ ΣΕ SAMBA SHARES
Για να περιορίσετε την πρόσβαση σε έναν ή περισσότερους χρήστες ανά φάκελο στο samba server μπορείτε να χρησιμοποιήσετε την μεταβλητή
valid users = user1, user2
με την προυπόθεση ότι έχετε προσθέσει τους αντίστοιχους χρήστες user1 και user2 με τους κωδικούς τους στον server με την εντολή
sudo smbpasswd -a user1
Προσοχή: Πρέπει ο λογαριασμός χρήστη να υπάρχει και στο σύστημα.
Για παράδειγμα, πρώτα προσθέτετε τον χρήστη dimitris (που έχετε προσθέσει και στο Linux), δίνοντας από την κονσόλα:
sudo smbpasswd -a dimitris
και δίνετε έναν κωδικό γι' αυτόν. Αν ο χρήστης δεν υπάρχει και στο Linux, θα βγάλει λάθος. Μετά στο αρχείο /etc/smb.conf, όπου π.χ. έχετε το κοινό φάκελο myshare, προσθέτε την valid users:
[myshare]
path = /home/dimitris/myshare
available = yes
browsable = yes
writable = yes
valid users =dimitris
και κάνετε επανεκκίνηση στον server.
Καλό βόλι και χαρούμενα σπασμένα νεύρα...
Fedora έ; Εμ, πρέπει να τσεκάρεις δύο πράγματα:
α) σωστή ρύθμιση του firewall
β) σωστή ρύθμιση του SELinux.
Όπως γράφει παραπάνω:
Λογικά, θα μπορείτε να δείτε το shared φάκελο από κάθε άλλο PC. Στο Fedora, θα πρέπει να τρέξετε το εργαλείο διαχείρισης Firewall (Σύστημα > Διαχείριση > Firewall> και να κάνετε trusted την υπηρεσία Samba (θύρες 137/udp,138/udp, 139/tcp και 445/tcp), ώστε να μην μπλοκάρει το firewall την πρόσβαση από άλλους υπολογιστές. Κάτι παρόμοιο πρέπει να κάνετε αν έχετε εγκαταστήσει το Samba σε διαφορετική διανομή Linux, στην οποία υπάρχει και Firewall.
Επίσης στο Fedora, πρέπει να προσθέσετε μια ετικέτα "samba-share_t" στον κοινόχρηστο φάκελο για να επιτρέπει την πρόσβαση το SELinux (το εσωτερικό σύστημα ασφαλείας του Fedora). Δείτε τις ετικέτες του κάθε φακέλου με την εντολη:
ls -ldZ /fakelos
και προσθέστε την ετικέτα με την εντολη (ως root!):
chcon -t samba_share_t /fakelos
--
Where is the ripcord, the trap door, the key?
Where is the cartoon escape-hatch for me?