Samba – udostępnianie plików w domowej sieci – cz. 3

Uwaga: Ten wpis został utworzony ponad rok temu. Informacje w nim zawarte mogą być nieaktualne!

W trzeciej części może trochę odbiegnę od tematu, bo nie o plikach a o drukarkach (i nie tylko). Sposób na udostępnienie drukarki w Ubuntu jest z automatu dosyć prosty, po prostu klikologia, jednak często mamy w sieci rożne systemy, więc aby się dogadały odnośnie drukowania, prezentuję przykładową konfigurację.
W najnowszej wersji samba bardzo mocno (i domyślnie) współpracuje z Common Unix Printing System (CUPS), więc do poprawnego działania będzie nam on potrzebny:

sudo apt-get install cups

Zaczynamy od dodania wpisów w pliku konfiguracyjnym samby /etc/samba/smb.conf. W sekcji [global] dodajemy:

printcap name = cups
printing = cups
load printers = yes

Następnie dodajemy sekcję, której nazwa będzie taka sama, jak nazwa drukarki dodanej później w CUPS:

[HPLaserJet1018]
comment = HP LaserJet 1018
printable = yes
path = /var/spool/samba
public = yes
guest ok = yes
printer admin = root

Jeśli nie chcemy, aby root był jedynym administratorem, po przecinku możemy dodać innego usera. Kolejna sekcja, którą musimy dodać traktuje ogólnie o udostępnianiu:

[printers]
comment = All Printers
browseable = yes
printable = yes
writable = no
public = yes
guest ok = yes
path = /var/spool/samba
printer admin = root

Ponownie możemy dodać usera jako administratora.

Kolejnym krokiem jest utworzenie katalogów koniecznych do poprawnego działania udostępnionej drukarki. Tego do końca pewny nie jestem, znalazłem to gdzieś w sieci jako rozwiązanie problemu, który napotkałem i o dziwo zadziałało :)

sudo mkdir /etc/samba/printer
sudo mkdir /var/spool/samba
sudo mkdir /home/samba/public

Do poprawnego zainstalowania drukarki potrzebny jest co najmniej jeden user, oczywiście jak już wspominałem we wcześniejszych artykułach, konieczne jest aby user ten istniał w systemie, zanim dodamy go do samby (hasła nie muszą być takie same).

smbpasswd -a nazwaużytkownika

Kolejnym krokiem jest skonfigurowanie CUPS. Plik konfiguracyjny znajduje się w /etc/cups/cupsd.conf.
Przykładowa, działająca konfiguracja:

>ServerName serwer_wydruku
ServerAdmin root@serwer_wydruku
AccessLog /var/log/cups/access_log
ErrorLog  /var/log/cups/error_log
LogLevel  info
MaxClients 100
BrowseAddress @IF(eth0)

<Location />
Order Deny,Allow
Deny From All
Allow From 192.168.1.*
</Location>

<Location /admin>
AuthType Basic
AuthClass System
Allow From 192.168.1.*
Deny From All
</Location>

Konfiguracja jest raczej czytelna, zwracam uwagę na atrybut LogLevel, którego wartość w razie problemów można zmienić na debug aby uzyskać więcej informacji w logach. W wartości atrybutu BrowseAddress należy podać właściwy interfejs sieciowy. Kolejne wpisy ustawiają pozwolenie na łączenie z serwerem z określonej podsieci, można adresy zmieniać wg potrzeb (oba takie same).

Należy następnie sprawdzić czy w pliku /etc/cups/raw.convs znajduje się wpis:

application/octet-stream        application/vnd.cups-raw        0

oraz czy w pliku /etc/cups/rav.types znajduje się wpis:

application/octet-stream

Po szczęśliwym przebrnięciu przez pliki konfiguracyjne przyszła kolej na dodanie drukarki w CUPS. Można to zrobić na dwa sposoby, opiszę ten prostszy, a więc z pomocą interfejsu dostarczanego przez CUPS. w tym celu wchodzimy w przeglądarce na adres http://localhost:631/ i ukazuje nam się strona CUPS. Możemy zostać poproszeni o autoryzację, logujemy się więc albo na konto root, albo naszego usera w systemie (nie w sambie). Klikamy w Dodawanie drukarek i klas potem w Dodawanie drukarki i prostym kreatorem dodajemy drukarkę. W moim przypadku była to drukarka hp, więc problemów nie miałem, zaznaczałem opcje recommended i działało.

Dla innym drukarek polecam zajrzeć na stronę http://www.openprinting.org/printers, wybrać swoją drukarkę i przez kliknięcie Show this printer sprawdzić jaki sterownik jest zalecany. Ściągamy następnie plik .ppd tego sterownika i możemy go użyć aby dodać drukarkę (wrzucamy do katalogu /usr/share/cups/model – jeśli go nie ma, to tworzymy). W tym przypadku, aby nie walczyć z wyznaczaniem poprawnego URI dla drukarki, polecam skorzystać z polecenia lpadmin.

sudo lpadmin -p HPLaserJet1018 -E -v usb:/dev/[port_usb] -m HP-LaserJet_1018.ppd

Powyższe polecenie należy oczywiście dostosować do swoich potrzeb, akurat ta drukarka korzysta ze sterownika foo2zjs.
Zwracam uwagę na nazwę (po parametrze -p), która musi być taka sama jak w konfiguracji samby.

Po restarcie samby i cups możemy sprawdzić, czy drukarka drukuje lokalnie oraz czy jest wykrywana np. na komputerach z systemem Windows.

Jeżeli powyższy artykuł nie rozwiązał lub rozwiązał częściowo Twój problem, dodaj swój komentarz opisujący, w którym miejscu napotkałeś trudności.
Mile widziane komentarze z uwagami lub informacjami o rozwiązaniu problemu.
  • Jas

    „Kolejnym krokiem jest skonfigurowanie CUPS. Plik konfiguracyjny znajduje się w /etc/cpus/cupsd.conf. ”
    Chyba raczej /etc/cups/cupsd.conf

    • Szmitas

      Poprawione, dzięki.

  • RafciX

    Po restarcie samby i cups

    Dobra, ale co mam wpisać w terminalu, żeby zrestartować cups i jak sprawdzić czy jest on w ogóle uruchomiony?

    Dodatkowo mam taki problem, że nie mogę wejść na stronę http://localhost:631/ Jakby co to na początku mogłem to zrobić, ale później już nie mogłem (wyskakiwał od razu, błąd wczytywania strony).
    Postanowiłem zrobić reinstall cups. Usunąłem wszystko z folderu /etc/cups (oprócz folderu ssl). Wpisuję w terminalu sudo apt-get remove cups i po pozwoleniu na kontynuowanie wyskakuje mi jakaś licencja EULA (do czcionki chyba) w ramce. Po prostu nie mogę tego kontynuować, ponieważ nie wiem co nacisnąć, a naciskanie Esc, lub Enter nic nie daje.

    • http://www.ubuntu-pomoc.org Szmitas

      Najlepszym sposobem na ponowne uruchomienie czegokolwiek jest restart systemu ;)

      Co do licencji – użyj klawisza TAB, strzałek i spacji do przejrzenia jej treści, a następnie zaakceptuj.

      • RafciX

        Aha to musiałem nacisnąć Tab, żeby zaznaczyć przycisk OK. Juz mi się udało usunąć cups. Teraz spróbuję go zainstalować i sprawdzić, czy działa nie zmieniając nic w konfiguracji.
        Właśnie, przy tej konfiguracji co podałeś to w logu cups wywala błąd zpierwszej lini (chodzi mu o > na początku)