Dwa komputery z Linuksami przez Sambę?

Życie (czyt. mąż) mnie zmusiło do wysiłku umysłowo - klawiaturowego:

Sytuacja:

Dwa komputery na Debianie testowym i stabilnym, połączone routerem z dynamicznym nadawaniem numerów IP przez tenże router. Do jednego (nazwijmy go pecet) jest podłączona drukarka HP LaserJet 1100, która ma złącze równoległe LPT, a drugi komputer to laptop (niech mu będzie laptop), który złącza równoległego nie ma, ponieważ obecna moda na USB na takie fanaberie nie pozwala. Dodatkowo, laptop nie ma napędu dyskietki, a pecet nie ma gniazd USB.

Jak uprzejmie poprosić obydwa komputery, aby zezwoliły na wzajemne podglądanie użytkownikom swoich katalogów domowych na dyskach, ewentualnie kopiowanie plików, a na dodatek, jak rozwiązać sprawę drukowania z laptopa? Przy okazji chciałabym zachować zalety niemyślenia o numerach IP, które miałyby się zmieniać według woli routera.

Mądrzy ludzie mało piszą o łączeniu dwóch Linuksów Sambą, ale ja się uparłam i jako, że gdzie diabeł nie może, tam babę pośle, to i doszłam do kilku wniosków i skutków. Oczywiście zajęło mi to masę czasu i energii, mądrzy ludzie w internecie opisali rozwiązania wcześniej, ale przynajmniej chyba od tego nie zgłupiałam, nawet, jeśli kilka siwych włosów mi przybyło. Aby inni już nie musieli siwieć, napisałam ten tekst.

Na początek trzeba poaktualizować system, aby uniknąć większych niespodzianek. Na przykład przejście z x-serwera XFree86 na Xorg jest bardzo emocjonujące i lepiej tych emocji nie mieszać z połączeniem dwóch komputerów.

Potem zostaje zainstalować na obu komputerach wszystko, co ma jakikolwiek rozsądny związek z Sambą:

Potem trzeba zainstalować inne dodatki sieciowe, których brak paskudnie utrudnia wykonanie zadania, szczególnie rozpoznawania się komputerów po swoich nazwach, nie po numerach:

Ja używałam do tego menedżera pakietów Synaptic, ale można używać, tego, co kto lubi.

Potem należy wykonać pracę ręczną na obydwu komputerach po zalogowaniu się jako root.

W pliku /etc/hosts.allow trzeba dopisać:
ALL:pecet lub ALL:laptop (w zależności od maszyny)

W pliku /etc/nsswitch.conf zmienić
z:
hosts: files dns
na:
hosts: files dns wins

z:
networks: files
na:
networks: files dns wins

plik /etc/hosts skopiować jako /etc/lmhosts (skopiować, nie zmienić nazwę!)
Sprawdzić zawartość pliku /etc/lmhosts - nie powinno w nim być do zewnętrznego adresu IP routera - nas interesują tylko wewnętrzne adresy w naszej sieci. A poza tym nagle by się okazało, że 2 komputery powołują się na ten sam numer IP i chyba by system zgłupiał.

Zostaje nam główna zabawa: Samba właściwa.

/etc/samba/smb.conf - trochę przegrzebany debianowy standard. Co jest ciekawe: obydwa komputery mają udawać, że są serwerami wins. To samo można uzyskać chyba przez okienkowy SWAT.

[global]

workgroup = BASIA
netbios name = pecet
server string = pecet

wins support = yes

dns proxy = yes
 name resolve order = lmhosts host wins bcast

log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
security = user

# encrypt passwords = true
passdb backend = smbpasswd
   unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .

   load printers = yes

# lpr(ng) printing. You may wish to override the location of the
# printcap file
;   printing = bsd
;   printcap name = /etc/printcap

# CUPS printing.  See also the cupsaddsmb(8) manpage in the
# cupsys-client package.
;   printing = cups
;   printcap name = cups

# When using [print$], root is implicitly a 'printer admin', but you can
# also give this right to other users to add drivers and set printer
# properties
;   printer admin = @ntadmin

socket options = TCP_NODELAY 
restrict anonymous = yes
domain master = yes
ldap ssl = No
server signing = Auto

[homes]
comment = Home Directories
browseable = yes
create mask = 0775
directory mask = 0775

[printers]
comment = All Printers
browseable = yes
path = /tmp
printable = yes
create mask = 0700

[print$]
comment = Printer Drivers
path = /var/lib/samba/printers

Teraz na obu maszynach trzeba dodać użytkowników Samby, którzy powinni mieć oprócz tego swoje normalne konta na maszynach, do i z których chcieliby się łączyć:

smbpasswd -a basia
        New SMB password: ********
        Retype new SMB password:********

Po restarcie (wiem, mądrzy użytkownicy Linuksa NIGDY nie restartują swoich maszyn, ale...) powinno się udać zamontowanie zdalnego katalogu domowego użytkownika. Do tego świetnie służy moja ulubiona obrazkowa przeglądarka smb4k. A jeśli nie? To znaczy, że trzeba pogrzebać w konfigach i w Google.


Przykrości, które mnie spotykały po drodze:

Dzielona Neostrada - po drodze 2 rutery, w tym jeden o ograniczonych możliwościach - nie mogłam znaleźć, jak wpisać numer serwera DNS TePSA, a to powodowało, że łączność z internetem była tylko po numerach IP, system nie rozpoznawał nazw.
Przy działającym internecie z DHCP ręczne grzebanie w pliku /etc/resolv.conf nie miało sensu, bo plik był tworzony (i ewentualnie nadpisywany) automatycznie.

Znalazłam rozwiązanie: w pliku /etc/dhcp3/dhcp3.conf odkomentowałam opcję "prepend" i wpisałam numer serwera DNS o który mi chodziło.
Zadziałało jak należy - po restarcie sieci ten numer pojawił się w /etc/resolv.conf i dostęp do nazw w internecie był prawidłowy.


pecet:/home/basia# nmblookup laptop
querying laptop on 192.168.2.255
192.168.2.169 laptop
Niby działa, ale:
ping -c4 laptop
daje w rezultacie:
---192.168.5.23 ping statistics---
4 packets transmitted, 0 packet received, 100% packet loss


Inna, zbliżona przykrość:
mount error: could not find target server. TCP name laptop not found

Czyli komputery rozpoznają się po numerach, ale nie po nazwach.
Proponuję wrócić do początku tego tekstu i sprawdzić, czy wszystko jest zrobione.

Tak się kończyła wersja z końca roku 2008, ale życie przyniosło nowe przygody w postaci nowych uaktualnień...


Wiosną 2009 nasze komputery po uaktualnieniach praktycznie przestały się między sobą komunikować. Przyczyny były różne:
/etc/inetd.conf miał wyłączony netbios
samba miała nowy zestaw domyślnych opcji, a ostatnie uaktualnienia wymieniały /etc/samba/smb.conf na nowy
w /etc/cups/printers.conf z jakiegoś powodu pojawiło się żądanie autoryzacji przy drukowaniu do niektórych drukarek.

Muszę przyznać, że zanim doszłam do rozsądnego rozwiązania, wykonałam wiele chaotycznych czynności, gdzieś na pograniczu szamaństwa, bo z powodu braku możliwości zrestartowania całej sieci w pracy, wyniki eksperymentów poznawałam dopiero następnego dnia.

Na wszelki wypadek nawet zastosowałam radę:
http://blog.dhampir.no/content/cifs-vfs-no-response-for-cmd-n-mid.
Przynajmniej nie zaszkodziła.

Plik /etc/samba/smb.conf po przejściach:

# Samba config file created using SWAT
# from 127.0.0.1 (127.0.0.1)
# Date: 2007/12/27 15:20:57

[global]
	workgroup = BASIA
	netbios name = PECET
	server string = %h server
	obey pam restrictions = Yes

	passdb backend = smbpasswd
	passwd program = /usr/bin/passwd %u
	passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .
	syslog = 0
	log file = /var/log/samba/log.%m
	max log size = 1000
	dns proxy = yes
	wins support = Yes

	panic action = /usr/share/samba/panic-action %d

	include = /etc/samba/dhcp.conf
printing = cups
printcap name = cups
load printers = yes
use client driver = yes

# options for smbclient

client lanman auth = yes
client ntlmv2 auth = yes
client plaintext auth = yes

[homes]
	comment = Home Directories
	valid users = %S
	create mask = 0777
	directory mask = 0777
#	browseable = No
browseable = yes

[printers]
	comment = All Printers
	path = /var/spool/samba
	create mask = 0775
	printable = Yes
	browseable = Yes
#	guest ok = yes

[print$]
	comment = Printer Drivers
	path = /var/lib/samba/printers

Rozwiązanie problemu z hasłem przy drukowaniu:

http://brainextender.blogspot.com/2009/01/ubuntu-intrepid-too-many-failed.html

Ufff... Na razie wszystko działa...


Powodzenia :-)
Basia 20.05.2009

============================== Great Seal of
Gdansk with mediewian ship

index do spisu treści / to the site content list