Home Dokumentacje Wprowadzenie do Samby, Część trzecia
21 | 10 | 2019
Wprowadzenie do Samby, Część trzecia
Wpisany przez Daniel Robbins   

Uwaga: Oryginalna wersja tego artykułu została opublikowana w IBM developerWorks i jest własnością Westtech Information Services. Poniższy dokument jest poprawioną przez zespół GDP wersją oryginalnego tekstu i nie jest już aktualizowany.

Wprowadzenie do Samby, Część trzecia

Daniel Robbins Autor
Kuba Bożanowski Tłumaczenie

Zaktualizowano 8 października 2005

1. Nauczmy się Samby: Etap konfiguracji

Krótkie przypomnienie

Oto zawartość pliku smb.conf, z którym do tej pory pracowaliśmy:

Listing 1.1: /etc/smb.conf

[global]

# Należy zmienić NASZAGRUPAROBOCZA na właściwą nazwę naszej grupy roboczej

workgroup = NASZAGRUPAROBOCZA
security = user
encrypt passwords = yes
guest account = guest

# należy odkomentować *jedną* z następujących dwóch linii
# pierwszą, jeśli chcemy użyć istniejącego serwera WINS
# naszej podsieci, w przeciwnym wypadku należy odkomentować
# drugą linię.

# wins server = adres IP serwera WINS
# wins support = yes

local master = yes
os level = 99
domain master = yes
preferred master = yes

# nieobowiązkowe opcje bezpieczeństwa. Należy dostosować je do własnych potrzeb.

# hosts allow = 192.168.1. 127.
# interfaces = eth1

[tmp]
path=/tmp
writeable=yes

Dodawanie kilku zasobów

Mimo iż powyższy plik smb.conf działa, to tak naprawdę jedynie udostępnia systemowi Windows katalog /tmp, tworząc zasób dzielony o nazwie "tmp". Nic ciekawego. Stwórzmy zatem bardziej użyteczny zasób. Dodajmy następujące linijki do pliku smb.conf i zrestartujmy Sambę.

Listing 1.2: Dodawanie zasobu FTP

[ftp]
path=/ścieżka/do/katalogu/głównego/ftp
writeable=no

Jeśli posiadamy na naszym serwerze usługę ftp lub jakieś inne archiwum plików, możemy w ten oto sposób udostępnić te dane w sieci. Parametr writeable=no informuje Sambę, że nikt nie powinien uzyskać uprawnień tworzenia i modyfikacji plików w tym zasobie. Dostęp do niego uzyska każdy posiadający konto Samby.

Ciekawy zasób

Zgadzam się, to nie było jeszcze zbyt ciekawe. Może zatem spróbujmy udostępnić katalog domowy? Oto jak tego dokonać:

Listing 1.3: Udostępnianie katalogu domowego

[drobbins]
comment=Katalog domowy użytkownika drobbins
path = /home/drobbins
force user = drobbins
read only = no
valid users = drobbins administrator

To jest już bardziej interesujące. Dodanie powyższych linijek do naszego pliku smb.conf umożliwi nam udostępnienie katalogu domowego. W tym przypadku tworzony jest zasób "drobbins", który udostępnia w sieci zawartość katalogu /home/drobbins. Na szczęście dzieki linijce valid users nie każdy może uzyskać do niego dostęp. Polecenie to powoduje, że Samba nie dopuszcza nikogo oprócz użytkowników "drobbins" i "administrator". Używając systemu Windows NT często jestem zalogowany jako administrator. W takich sytuacjach wygodnie jest wciąż mieć dostęp do zasobu "drobbins". Dzięki linijce valid users powyżej jest to możliwe.

Zauważmy także parametr read only. Nietrudno zgadnąć, że jego działanie jest przeciwne do działania parametru writeable. Równie dobrze moglibyśmy napisać w tym miejscu writeable=yes. Spowoduje to, że Samba zezwoli na zapis w tym konkretnym zasobie, oczywiście jeśli posiadamy odpowiednie uprawnienia. Jednak ponieważ użytkownik Samby o nazwie "drobbins" odpowiada uniksowemu użytkownikowi o nazwie "drobbins", który z kolei jest właścicielem katalogu /home/drobbins, zapis i modyfikacja plików będzie możliwa.

Prawdopodobnie wielu z nas często zdarza się utworzyć plik w naszym katalogu domowym z konta roota, później bezskutecznie próbując zmodyfikować go z naszego konta użytkownika. Mi w każdym razie zdarza się to bardzo często. Aby sobie z tym poradzić, muszę użyć polecenia su, następnie chown drobbins.drobbins nazwapliku i jeszcze exit, aby opuścić konto administratora. Dopiero wtedy mogę zmodyfikować plik.

Wspominam o tym, ponieważ możemy napotkać podobny problem podczas udostępniania katalogów domowych i korzystaniu z nich za pomocą różnych kont użytkowników Samby. Rozważmy następującą sytuację. Jako administrator tworzę plik w jednym z zasobów. Zwykle właścicielem tego pliku byłby administrator i niemożliwa byłaby jego modyfikacja przez użytkownika "drobbins". Każda próba modyfikacji zaowocowałaby komunikatem o braku dostępu. Na szczęście Samba posiada opcję force user, dzięki której możemy uniknąć tego problemu. Opcja ta spowoduje, iż każda operacja wykonana na plikach (tego konkretnego zasobu SMB/CIFS Samby) zostanie przeprowadzona z pojedynczego konta użytkownika Unix. Na przykładzie zasobu "drobbins" oznacza to, że pliki utworzone przez administratora będą w rzeczywistości należeć do użytkownika "drobbins", zapobiegając konfliktom własności. Zasób "drobbins" udostępnia zawartość mojego katalogu domowego, więc wolę gdy wszystko co się w nim znajduje jest własnością użytkownika "drobbins".

Zanim przejdziemy do następnego zagadnienia, powinienem wspomnieć o parametrze comment. Pozwala on na opatrzenie każdego zasobu widocznym w systemie Windows komentarzem.

Udostępnianie wielu katalogów domowych.

Omówiliśmy zatem udostępnianie pojedynczego katalogu domowego. Może się jednak zdarzyć, że będziemy musieli udostępnić setki katalogów domowych użytkowników serwera, którym administrujemy. Na szczęście Samba posiada specjalny zasób dzielony właśnie na taką okazję. Nazywa się "homes", a konfiguruje się go w następujący sposób:

Listing 1.4: Udostępnianie wielu katalogów domowych

[homes]
comment=Katalog domowy użytkownika %S
path=/home/%u
valid users = %u administrator
force user=%u
writeable = yes
browseable = no

Jak już wspomniałem, jest to "specjalny" zasób, nie działa tak jak pozostałe. Samba rozpoznaje oznaczenie [homes] i na tej podstawie traktuje go inaczej.

Jedną z ciekawszych cech tego zasobu jest użycie parametru browseable=no. Powoduje on, że zasób ten jest niewidoczny w Otoczeniu Sieciowym, a zwykle używa się go, aby zapobiec możliwości przejrzenia zasobów przez ciekawskich użytkowników o niekoniecznie dobrych zamiarach. Jednak czemu użyliśmy go tutaj?

Odpowiedź wymaga dodatkowych wyjaśnień. Otóż zasób "homes" rzeczywiście tworzy zasób o nazwie "homes", jednakże jest on dla nas bezużyteczny, dlatego zostanie ukryty. W rzeczywistości pełni on dość niebanalną funkcję, mianowicie instruuje Sambę aby utworzyła automatycznie katalogi domowe każdemu użytkownikowi. Na przykład przyjmijmy, że nasz zasób o nazwie "drobbins" nie został zdefiniowany w pliku smb.conf i przeglądamy Otoczenie Sieciowe jako użytkownik systemu NT o nazwie "drobbins". Znaleźlibyśmy wówczas zasób o nazwie "drobbins", który miałby identyczne właściwości jak nasz pierwotny zasób o tej nazwie. Jeśli zaś bylibyśmy zalogowani jako użytkownik "jimmy", znaleźlibyśmy prawidłowo skonfigurowany zasób o nazwie "jimmy". Właśnie tak działa zasób "homes". Dodanie jednego specjalnego zasobu spowoduje prawidłowe utworzenie wszystkich zasobów z katalogami domowymi użytkowników.

Jak to działa? Gdy zostanie utworzony zasób "homes", Samba wykryje jaki użytkownik NT przegląda jej zasoby. Utworzy wówczas zasób domowy dostosowany do tego konkretnego użytkownika. Pokaże się on w Otoczeniu Sieciowym jako zwykły, statyczny zasób. Użytkownik NT nie będzie zdawał sobie sprawy, że zasób ten został stworzony w locie. Przyjrzyjmy się co robią poszczególne parametry.

Parametr "comment" używa makra %S, które zamienia się we właściwą nazwę zasobu. Dzięki temu zasób "drobbins" będzie opisany tekstem "Katalog domowy użytkownika drobbins", a przy zasobie "jimmy" zobaczymy komentarz "Katalog domowy użytkownika jimmy" i tak dalej. Parametr "path" zawiera makro %u, które zamieni się w nazwę użytkownika osoby, która przegląda zasób. W tym przypadku %u zamieni się w to samo co %S, więc równie dobrze moglibyśmy napisać path=/home/%S. Dzięki użyciu tego parametru Samba dynamicznie przypisze zasób do odpowiedniego położenia na dysku.

Po raz kolejny używamy makra w linijce valid users=, dzięki czemu jedynie właściciel zasobu oraz administrator będą mieli do niego dostęp. Opcja force user także używa makra, co spowoduje, iż wszystkie zapisy do plików będą wykonywane z jednego konta. No i oczywiście umożliwiamy zapis do zasobu wszystkim uprawnionym użytkownikom. Pomimo iż używamy parametru browseable=no, zasoby utworzone dynamicznie będzie można przeglądać. Ta opcja ukrywa jedynie zasób "homes".

2. Parametry zasobów

Zapoznaliśmy się już z kilkoma przydatnymi przy tworzeniu zasobów sztuczkami. W tym rozdziale omówię kilka popularnych opcji, dzięki którym będziemy mogli dostosować funkcjonalność Samby do naszych potrzeb na poziomie każdego zasobu z osobna. Jednakże wszystkie opcje, które dotyczą indywidualnego zasobu można również umieścić w sekcji [globals], aby ustawić je jako domyślne dla wszystkich zasobów.

comment=

Parametr comment= przydaje się, jeśli chcemy aby nasz system oparty o Sambę oglądany od strony systemu Windows wyglądał bardziej profesjonalnie. Dzięki tej opcji mamy możliwość zdefiniowania komentarza, który będzie pojawiał się przy każdym zasobie, opisując jego zawartość. Używając tego parametru (szczególnie gdy używam zasobu "homes") często stosuję makro %S, które zostanie zamienione w nazwę zasobu.

path=

Jednym z najważniejszych parametrów Samby jest opcja path=. Dzięki niej możemy podać ścieżkę do katalogu, który ma zostać udostępniony. Należy zauważyć, że domyślnie każde dowiązanie symboliczne w udostępnionym katalogu będzie działać zgodnie ze swoim przeznaczeniem, a więc możliwe będzie "wyskoczenie" przez użytkownika z udostępnionego katalogu. Po stronie systemu Windows użycie dowiązania będzie niezauważalne. Będzie ono wyglądało tak samo jak inny plik lub katalog. Wkrótce przyjrzymy się kilku parametrom, które mogą zmienić to zachowanie i uczynić Sambę bardziej bezpieczną.

force user=

Parametr force user= jest jednym z moich ulubionych. Wymusza on wykonywanie wszelkich zmian w plikach z konta jednego użytkownika. Często będziemy chcieli użyć razem z nim również opcji valid users=, dzięki czemu ograniczymy dostępność zasobu jedynie do wybranych użytkowników. Ponieważ wszystkie operacje plikowe wykonywane są z poziomu pojedynczego konta użytkownika, jednym ze skutków ubocznych opcji force user= jest brak możliwości sprawdzenia kto co zrobił, patrząc na uprawnienia pliku w systemie Unix. Z tego względu jeśli mamy do czynienia z zasobem, do którego zapis jest dozwolony, musimy poważnie potraktować kwestię bezpieczeństwa, używając opcji force user=. Bez niej wszystkie operacje na plikach będą wykonywane przez tego użytkownika Samby, który korzysta w danej chwili z zasobu.

Listing 2.1: Przykład użycia opcji force user

force user=drobbins

browseable=

Jednym z prostszych sposobów na zwiększenie bezpieczeństwa jest ukrycie niektórych zasobów. Domyślnie wszystkie zasoby można przeglądać z Otoczenia Sieciowego. Jeśli będą niewidoczne, udaremnimy część złych zamiarów. Nie należy jednak stosować tego parametru jako jedynego zabezpieczenia. To, że zasób jest niewidoczny z poziomu Windows nie oznacza, że jest zabezpieczony przed dostępem. Zmniejsza to jedynie ilość informacji, które przekazujemy potencjalnie niebezpiecznemu użytkownikowi. Aby uzyskać dostęp do ukrytego zasobu wystarczy podać jego nazwę UNC w oknie dialogowym Uruchom.... Na przykład do ukrytego zasobu o nazwie 'test', który znajduje się na serwerze 'mojserwer' dostaniemy się, wpisując \\mojserwer\test.

Listing 2.2: Przykład użycia opcji browseable

browseable=no

available=

Opcja available=, której domyślną wartością jest 'yes', jest tylko przydatnym sposobem na wyłączenie zasobu bez usuwania lub wykomentowania go z pliku smb.conf. Podanie parametru available=no spowoduje, że dany zasób stanie się nieaktywny gdy tylko ponownie uruchomimy Sambę.

Listing 2.3: Przykład użycia opcji available

available=no

valid users=

W celu ograniczenia dostępu do niektórych zasobów należy użyć opcji valid users=. Domyślnie każdy użytkownik, który zostanie uwierzytelniony będzie mógł uzyskać dostęp do zasobu Samby. Aby odwołać się do grupy sieciowej NIS lub grupy systemu Unix, należy dodać znak "@" przed nazwą grupy.

Listing 2.4: Przykład użycia opcji valid users

Poniższa linijka umożliwi dostęp użytkownikowi "drobbins" i członkom
grupy "wheel":

valid users = drobbins @wheel

dont descend=

Parametr dont descend= określa katalogi, znajdujące się w udostępnionym zasobie, do których Samba nie pozwoli wejść. Dzięki temu można łatwo uniemożliwić dostęp do katalogu zawierającego dowiązania symboliczne lub nieistotnych dla użytkownika katalogów takich jak /proc lub /dev. Należy zawsze przetestować nasze ustawienia parametru dont descend=, ponieważ przykładowo koniecznym może okazać się napisanie dont descend= ./dev zamiast dont descend= /dev.

follow symlinks=

Opcja follow symlinks= zwykle ma wartość domyślną 'yes' i powoduje, że Samba zezwala na podążanie za wszystkimi dowiązaniami symbolicznymi, nawet jeśli prowadzą one poza udostępnioną strukturę katalogów. Ustawienie tej opcji na 'no' wyłączy tę funkcjonalność i podążanie za dowiązaniami stanie się niemożliwe. Wyłączenie tej opcji może potencjalnie znacznie poprawić bezpieczeństwo i należy to zrobić zawsze, o ile nie mamy potrzeby korzystać z dowiązań symbolicznych.

Listing 2.5: Przykład użycia opcji follow symlinks

follow symlinks=no

volume=

Ustawienie parametru volume= spowoduje, że Samba przypisze "nazwę woluminu" danemu udostępnionemu zasobowi. Może się przydać szczególnie gdy używamy zasobu Samby w celu udostępnienia zawartości CD-ROM-u. Wiele programów instalacyjnych oczekuje określonej nazwy woluminu dla płyty CD, bez której nie będą działać.

Listing 2.6: Przykład użycia opcji volume

volume=Moja Ulubiona Płyta CD

create mask=

Samba wykorzystuje parametr create mask w celu ustawienia odpowiednich uprawnień dla nowo utworzonych plików. Opcja create mask określa jakie uprawnienia będą dozwolone przy tworzeniu nowych plików. Podany numer w systemie ósemkowym zostanie połączony z pożądanymi uprawnieniami za pomocą logicznego operatora i. Spowoduje to, że uprawnienia, których nie obejmuje maska bitowa zostaną odrzucone i nie będą dodane do uprawnień nowego pliku.

Listing 2.7: Przykład użycia opcji create mask

create mask= 0755

directory mask=

Parametr directory mask= działa analogicznie do parametru create mask=, tylko dotyczy nowo tworzonych katalogów.

Mnogość opcji pliku smb.conf

W niniejszym rozdziale omówiliśmy tylko te spośród opcji pliku smb.conf, które są najistotniejsze przy konfigurowaniu użytecznego i bezpiecznego systemu opartego na Sambie. Jednakże Samba ma wiele innych przydatnych opcji. Można się z nimi zapoznać, czytając stronę dokumentacji systemowej man dla smb.conf, w której wszystkie opcje są wymienione i szczegółowo opisane. (Więcej szczegółów w rozdziale Zasoby).

3. Drukowanie za pomocą Samby

Możliwość drukowania za pośrednictwem Samby jest często bardzo przydatna. W ramach przypomnienia: Samba pozwala na udostępnienie drukarek skonfigurowanych uprzednio pod lpd, dzięki czemu mogą z nich korzystać komputery klienckie z systemem Windows. Układ ten ma taką zaletę, że cały kod potrzebny drukarce jest generowany po stronie systemu Windows. Oznacza to, że nasz system Unix nie musi idealnie obsługiwać danego modelu drukarki. Dopóki system Unix potrafi przesłać nieobrobione dane bezpośrednio do drukarki, możliwe będzie prawidłowe drukowanie. Pozwala to nam nawet na udostępnianie i użytkowanie drukarek, które nie są w pełni funkcjonalne w środowisku Uniksowym, tak jak moja oparta o technologię Adobe Printgear drukarka NEC SuperScript 870.

Jak działa drukowanie w Sambie

Aby umożliwić drukowanie, najpierw musimy prawidłowo skonfigurować usługę lpd. Wprawdzie opis lpd nie jest celem niniejszego przewodnika, to jednak konfiguracja nie powinna przysporzyć wielu problemów, a opisana jest dokładnie w artykule Printing FAQ, który można pobrać ze strony tldp.org. (Więcej szczegółów w rozdziale Zasoby). Powinniśmy skonfigurować drukarkę tak, aby domyślnie działała w trybie "surowym" (ang. raw), dzięki czemu wszelkie dane wysłane do drukarki przez komendę lpr zostaną jej podane bez jakiejkolwiek obróbki czy filtrowania. Łatwo jest sprawdzić czy demon lpd jest skonfigurowany w trybie "surowym". Po stronie systemu Windows należy zainstalować sterownik drukarki, który drukuje do pliku. Wydrukujmy stronę z dowolnego edytora tekstu, zapisując wydruk do pliku. Następnie skopiujmy plik do komputera z systemem Unix i wydrukujmy za pomocą polecenia lpr. Jeśli wydruk będzie prawidłowy, możemy skonfigurować Sambę w celu automatycznej obsługi drukarki.

Globalne ustawienia drukowania

Aby Samba mogła poprawnie drukować w systemie Linux, powinniśmy dodać następujące parametry do sekcji [global]:

Listing 3.1: Edytujemy plik smb.conf, aby umożliwić drukowanie

printcap name=/etc/printcap
printing=bsd

Jeśli nasz plik printcap znajduje się gdzie indziej, należy odpowiednio poprawić powyższą linijkę, zawierającą parametr printcap name=. Jeśli używalibyśmy innego systemu wydruku niż standardowy demon lpd z BSD, należałoby zapoznać się opisem opcji printinf= w podręczniku systemowym man do pliku smb.conf. Tam można przeczytać jak skonfigurować Sambę z naszym systemem wydruku.

Nadszedł czas na skonfigurowanie zasobu drukarki. Oto fragment mojego pliku smb.conf, który dotyczy drukarki. Użyjemy go jako przykładu:

Listing 3.2: Przykładowy zasób drukarki

[nec]
#moja drukarka NEC SuperScript 870
path=/var/spool/smb
print command=/usr/bin/lpr %s
lprm command=/usr/bin/lprm -P%p %j
printer=lp
public=yes
printable=yes

Ważne jest, aby zrozumieć najpierw parametr "path". Gdy Samba przyjmuje zadanie wydruku z systemu Windows, musi przechować je gdzieś na dysku, zanim wyśle je za pomocą lpr. Katalog podany w parametrze path= powinien posiadać uprawnienia 1777, dzięki czemu każdy będzie miał w nim prawo zapisu. Parametry print command= i lprm= nie są zwykle wymagane. Należy je dołączyć, jeśli chcemy podać dokładną ścieżkę dla poleceń wydruku lub jeśli musimy przekazać parametry do polecenia lpr. Powyższe makra można potraktować jako przykład. Makro %s zostanie zamienione w nazwę pliku tymczasowego, %p w nazwę drukarki, a %j w numer zadania.

Jak nietrudno się domyślić, opcja printer= informuje Sambę jakiej drukarki uniksowej należy użyć do wydruku. Powinniśmy upewnić się, że drukarka ta jest skonfigurowana w trybie "surowym". Opcja public=yes umożliwia dostęp do drukarki nawet użytkownikom bez hasła. Później być może będziemy chcieli usunąć tę linię, aby poprawić bezpieczeństwo (poprawimy je jeszcze bardziej, podając zamiast tej opcji odpowiedni parametr users=). Dzięki opcji printable=yes informujemy Sambę, że niniejszy zasób powinien być skonfigurowany jako drukarka oraz że może on przyjmować polecenia wydruku.

Nowa drukarka powinna być widoczna z systemu Windows po zrestartowaniu Samby. W tym momencie powinno nam się udać zainstalować tę drukarkę po stronie Windowsa i wydrukować za jej pomocą stronę testową. (Windows poinformuje nas, że instalujemy sterownik dla drukarki NULL. Nie należy się tym przejmować i po prostu wybrać odpowiedni sterownik z listy). Jeśli jednak drukowanie nie powiedzie się, należy przejrzeć komunikaty błędu w pliku /var/log/log.smb. Nie można przy okazji nie wspomnieć o istnieniu bardzo wielu przydatnych opcji konfiguracyjnych dotyczących drukowania, które można umieścić w pliku smb.conf. Tutaj omówiliśmy jedynie kilka najczęściej używanych. Z wszystkimi można się zapoznać w dokumentacji man do pliku smb.conf.

4. Podsumowanie

W niniejszym artykule omówiliśmy kluczowe elementy funkcjonalności Samby, w tym udostępnianie katalogów domowych i drukarek. Moim celem było także naświetlić kilka zagadnień dotyczących bezpieczeństwa. Nie należy jednak sądzić, że to wszystko, co Samba ma nam do zaoferowania. Jest to bowiem nie tylko potężna, ale również wysoce konfigurowalna usługa. Pozwala nam -- administratorom -- zdecydować w jaki sposób i do jakiego stopnia zostanie wykorzystana w naszym miejscu pracy. Pomimo iż wymagana jest ręczna konfiguracja poprzez edycją pliku smb.conf, rezultaty są tego warte, ponieważ dzięki temu wszystko działa dokładnie tak, jak sobie tego życzymy.

Samba posiada jeszcze funkcjonalność, o jakiej nawet tu nie wspomnieliśmy, w tym możliwość stania się częścią (a nawet kontrolerem!) domeny Windows NT. Zachęcam do samodzielnego odkrycia potencjału tego znakomitego narzędzia.

Zasoby

  • Strona główna Samby.
  • frgpasswrd to narzędzie do synchronizowania uniksowych haseł shadow i haseł Samby.
  • SambaLink/Q to niezależny od wersji Samby edytor pliku smb.conf.
  • Dokument "Printing FAQ" można znaleźć na stronie tldp.org.
  • Samba według Eda Weinberga.
  • Książka Using Samba (Wydawnictwo O'Reilly Publishing; 1999) to szczegółowy przewodnik, wprowadzający nas w arkana administracji Sambą. Zawiera opis niedawno dodanych funkcji, takich jak integracja z domenami Windows NT, oraz przedstawia graficzne narzędzie konfiguracji SWAT.
  • Strona główna narzędzia SWAT.
  • Warto także polecić zestaw programów Samba/iX, dzięki którym komputer HP e3000 z systemem operacyjnym MPE/iX może zostać wykorzystany jako serwer usług Microsoft Message Block (SMB).
  • Książka Samba Unleashed. Autor: Steve Litt, współautor: Daniel Robbins.

 

 
Linki sponsorowane

W celu realizacji usług i funkcji na witrynach internetowych ZUI "ELPRO" stosujemy pliki cookies. Korzystanie z witryny bez zmiany ustawień dotyczących plików cookies oznacza, że będą one zapisywane w urządzeniu wyświetlającym stronę internetową. Więcej szczegółów w Polityce plików cookies.

Akceptuję pliki cookies z tej witryny.