Samba w skrócie serwer plików i drukarek dedykowany dla środowisk Linux i współpracujący z systemami Windows. Jeśli jako administrator systemów Linux pomyślisz kiedykolwiek o systemach Windows przez myśl przejdzie Ci również hasło SAMBA. Protokołem do transmisji danych wykorzystywanym przez program samba oraz środowiska Windows jest SMB (ang. Server Message Block), ale protokołem transportowym niższej warstwy jest już TCP/IP. Samba jest doskonałą technologią jeżeli zachodzi potrzeba wymiany plików i współpracy pomiędzy systemami Linux, a Windows dając możliwość interakcji z serwerami i klientami Windows. Dzięki temu rozwiązaniu możemy udostępniać katalogi, działać jako serwer wydruku oraz pełnić bardziej zaawansowane funkcję jak kopia bezpieczeństwa dla kontrolera domeny Windows. Strona domowa projektu : http://www.samba.org/
INSTALACJA PAKIETÓW SAMBA
Krok 1 - Instalacja wymaganych pakietów dla programu Samba
# yum install -y samba samba-common samba-client
Krok 2 - Sprawdzenie instalacji pakietów
samba-winbind-clients-3.5.10-114.el6.i686
samba-common-3.5.10-114.el6.i686
samba-3.5.10-114.el6.i686
samba-client-3.5.10-114.el6.i686
Krok 3 - Ustawienie uruchamiania samba przy starcie/restarcie systemu
# chkconfig smb on
Krok 4 - Sprawdzenie poprawności uruchamiania z systemem
# chkconfig --list smb
smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Krok 5 - Ustawienie uruchamianie NetBios z systemem
# chkconfig nmb on
Krok 6 - Sprawdzenie poprawności ustawień
# chkconfig nmb --list
nmb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Krok 5 - Ustawienie uruchamianie NetBios z systemem
# chkconfig nmb on
Krok 6 - Sprawdzenie poprawności ustawień
# chkconfig nmb --list
nmb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
KONFIGURACJA SERWISU SAMBA
Jeżeli nigdy wcześniej nie mieliście do czynienia z SAMBA na początek warto poznać dwie usługi odpowiedzialne za działanie samba.
- smbd - demon usługi samba
- nmbd - demon serwisu NetBIOS
Do dyspozycji mamy również pliki konfiguracyjne :
- /etc/samba/smb.conf - Główny plik konfiguracyjny
- /etc/samba/smbusers - Mapowanie samba i użytkowników Red Hat
- /etc/samba/smbpasswd - Zawiera hasła użytkowników samba
Jak łatwo można się domyślić istnieje również grupa poleceń zarządzających :
- mount.cifs Montowanie zasobów samba z uprawnieniami root
- smbclient Połączenie do zasobów samba
- smbpasswd Konfiguracja haseł dla użytkowników
- smbstatus Wyświetla status połączeń do samba
- testparm Test składni poleceń w pliku głównym
- umount.cifs Od montowanie zasobów samba z uprawnieniami root
Teraz znamy już lokalizację plików konfiguracyjnych oraz polecenia umożliwiające zarządzanie usługami. By rozpocząć konfigurację należy dokonać odpowiednich wpisów w głównym pliku konfiguracyjnym gdzie ustawimy lokalizację zasobów i inne parametry. Tak więc podstawowa konfiguracja znajduje się w pliku
/etc/samba/smb.conf
W sekcji global seting ustawiamy następujące parametry :
workgroup = GRUPA12
server string = Samba Server Version %v
netbios name = host1
interfaces = lo eth0 192.168.0.12
hosts allow = 127. 192.168.0.5
Czyli :
Krok 5 - Ustawienie udostępnienia w pliku /etc/samba/smb.conf
Krok 6 - Sprawdzenie poprawności składniowej pliku konfiguracyjnego
W celu sprawdzenia czy nie występują błędy w składni pliku smb.conf wydajemy polecenie :
W wyniku, którego zobaczymy :
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[samba]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
workgroup = GRUPA12
server string = Samba Server Version %v
interfaces = lo, eth0, 192.168.0.12
log file = /var/log/samba/log.%m
max log size = 50
hosts allow = 127., 192.168.0.5
cups options = raw
[samba]
comment = dla usera sambauser
path = /samba
valid users = sambauser
read only = No
browseable = No
workgroup = GRUPA12
server string = Samba Server Version %v
netbios name = host1
interfaces = lo eth0 192.168.0.12
hosts allow = 127. 192.168.0.5
Czyli :
- workgroup - nazwa grupy domowej
- server string - opis grupy domowej
- netbios name - nazwa pod jaką host będzie widoczny w sieci
- interfaces - interfejsy na jakich nasłuchuje usługa samba
- host allow - hosty, podsieci jakie mają uprawniania do zasobów samba
Kolejną sekcją jest sekcja konfiguracji logów gdzie :
# logs split per machine
log file = /var/log/samba/log.%m
# max 50KB per log file, then rotate
max log size = 50
możliwe jest ustawienie lokalizacji plików logów i ich maksymalnego rozmiaru
UDOSTĘPNIANIE ZASOBÓW
Istotną sekcją określającą i konfigurującą zasoby jakie zastaną udostępnione jest sekcja "Share Definitions" w jakiej znajdują się instrukcję wskazujące na udostępniane zasoby i sposoby ich udostępnienia.
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
valid users = MYDOMAIN\%S
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
[samba]
comment = dla usera sambauser
path = /samba
browsable = yes
writable = yes
public = no
valid users = sambauser
Powyższy wycinek przedstawia trzy udostępnione zasoby jakimi są katalogi domowe użytkowników, drukarki oraz katalog /samba dla użytkownika sambauser.
Krok 1 - By udostępnić katalog /samba rozpoczynamy od jego utworzenia:
# mkdir samba
USTAWIENIA SELINUX DLA SAMBA
Krok 2 -Następnie ustawiamy odpowiedni kontekst SELinux:
# chcon -Rt samba_share_ /samba
Krok 3 - Ustawienie odpowiednich zmiennych SELinux
# getsebool -a | grep -i samba
samba_export_all_ro --> off
samba_export_all_rw --> off
Powyższe zmienne przestawiamy na on
# setsebool -P samba_export_all_ro on
# setsebool -P samba_export_all_rw on
Sprawdzamy :
Powyższe zmienne przestawiamy na on
# setsebool -P samba_export_all_ro on
# setsebool -P samba_export_all_rw on
Sprawdzamy :
# getsebool -a | grep -i samba
samba_export_all_ro --> on
samba_export_all_rw --> on
Krok 4 - Aby użytkownik mógł zapisywać do katalogu nadajemy odpowiednie uprawnienia
# chown sambauser:sambauser samba/
# chmod 777 samba/ - lub inne zgodnie z wymaganiami
Krok 4 - Aby użytkownik mógł zapisywać do katalogu nadajemy odpowiednie uprawnienia
# chown sambauser:sambauser samba/
# chmod 777 samba/ - lub inne zgodnie z wymaganiami
Krok 5 - Ustawienie udostępnienia w pliku /etc/samba/smb.conf
[samba]
comment = dla usera sambauser
path = /samba
browsable = yes
writable = yes
public = no
valid users = sambauser
Powyższe oznacza :
- [samba] - nazwa pod jaką widoczny będzie zasób
- path - ścieżka do katalogu, który udostęniamy
- browsable - czy zasób będzie widoczny czy ukryty
- writable - określenie prawa zapisu yes/no
- public - czy zasób będzie publiczny yes/no
- valid users = udostępnienie dla wybranych użytkowników
Krok 6 - Sprawdzenie poprawności składniowej pliku konfiguracyjnego
W celu sprawdzenia czy nie występują błędy w składni pliku smb.conf wydajemy polecenie :
# testparm
W wyniku, którego zobaczymy :
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[samba]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
workgroup = GRUPA12
server string = Samba Server Version %v
interfaces = lo, eth0, 192.168.0.12
log file = /var/log/samba/log.%m
max log size = 50
hosts allow = 127., 192.168.0.5
cups options = raw
[samba]
comment = dla usera sambauser
path = /samba
valid users = sambauser
read only = No
browseable = No
Wiemy już, że plik jest poprawny i nie zawiera błędów, ale możemy odczytać jakie na tą chwilę mamy ustawienia globalne, oraz różne udostępnienia dla użytkowników. Zanim zaczniemy podłączać się jako klient możemy również utworzyć użytkowników posiadających uprawnienia dostępowe do zasobów samba, którzy będą działać niezależnie od użytkowników znajdujących się w systemie. W tym celu skorzystamy z polecenia smbpasswd, które pomoże utworzyć nowych użytkowników dla samba.
Składnia : smbpasswd [opcje] [user]
Opcje:
- -a dodanie użytkownika
- -d Zablokowanie (disables) użytkownika
- -e Odblokowanie (enables) użytkownika
- -x Usunięcie użytkownika
Dodanie nowego użytkownika :
UWAGA !
Ponieważ w konfiguracji używamy tdbsm i w pliku smb.conf mamy zapis :
### Use a local password file (/etc/samba/smbpasswd) ###
security = user
passdb backend = tdbsam
Musimy pamiętać, że każdy użytkownik jakiego będziemy chcieli dodać do użytkowników samba musi posiadać również swoje konto w systemie (adduser sambauser). Jeżeli użytkownik nie ma konta systemowego podczas dodawania go do samba otrzymamy komunikat:
# smbpasswd -a sambauser
New SMB password:
Retype new SMB password:
Failed to add entry for user sambauser.
Krok 1 - utworzenie pierwszego użytkownika samba
# smbpasswd -a sambauser
New SMB password:
Retype new SMB password:
Added user sambauser.
Krok 2 - Sprawdzenie czy użytkownik został dodany poprawnie
# pdbedit -w -L
sambauser:4229:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:E80F8E3BEE095A6482F800FFC5F44730:[U ]:LCT-50AB71F4:
Ważne - restart po wprowadzeniu zmian !
Po dokonaniu jakichkolwiek zmian należy pamiętać , że zostaną one wprowadzone do użycia dopiero po restarcie usługi samba.
Krok 1 - Uruchomienie lub restart serwisu Samba
# service smb start
Starting SMB services: [ OK ]
# service smb restart
Shutting down SMB services: [ OK ]
Starting SMB services: [ OK ]
Krok 2 - Sprawdzenie czy usługa jest uruchomiona
# service smb status
smbd (pid 5388) is running...
Wprowadzenie reguł zapory - iptables
Krok 1 - używając narzędzia iptables dodajemy nowe reguły
# iptables -I INPUT 5 -p tcp -m tcp --dport 137 -j ACCEPT
# iptables -I INPUT 5 -p udp -m udp --dport 138 -j ACCEPT
# iptables -I INPUT 5 -p udp -m udp --dport 139 -j ACCEPT
# iptables -I INPUT 5 -p tcp -m tcp --dport 139 -j ACCEPT
# iptables -I INPUT 5 -p tcp -m tcp --dport 139 -j ACCEPT
# iptables -I INPUT 5 -p tcp -m tcp --dport 445 -j ACCEPT
Krok 2 - Zapisanie nowo wprowadzonych reguł
# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[OK]
Krok 3 - Restart usługi zapory (iptables)
# service iptables restart
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
Te cztery porty (137,138,139,445) są bardzo powszechne dla administratorów Windows. Teraz trzeba się dogadać z zabezpieczeniami SELinux.
Zmienne logiczne SELinux dla Samba
Podstawowe zmienne logiczne (Booleans) SELinux dla samba.
samba_domain_controler
Umożliwia by samba działała jako kontroler domeny dla użytkowników, grup i haseł
samba_enable_home_dirs
Umożliwia udostępnianie katalogów domowych użytkowników
samba_export_all_ro
Umożliwia udostępnienie każdego pliku i katalogu w trybie do odczytu
samba_export_all_rw
Umożliwia udostępnienie każdego pliku i katalogu w trybie odczytu i zapisu
use_samba_home_dirs
Umożliwia serwerowi samba tworzenie nowych katalogów domowych
allow_smbd_anon_write
Umożliwia dokonwać zmian w udostępnionych przez samaba plikach publicznych
samba_share_fusers
Zezwala na eksport wolumenów NTFS
samba_share_nfs
Umożliwia udostpenianie wolumenów NFS
samba_run_uncofined
Umożliwia uruchamianie skryptów
virt_use_samba
Umożliwia zarządzanie plikami CIFS
KATALOGI DOMOWE SELinux
Jeżeli chcemy by dla użytkowników po zalogowaniu dostępne były ich katalogi domowe należy pamiętać, że musimy do tego celu przestawić jeszcze jedną zmienną SELinux. :
Powyższe ustawienia umożliwiają logowanie się użytkowników do własnych katalogów domowych.
Jeżeli chcemy by dla użytkowników po zalogowaniu dostępne były ich katalogi domowe należy pamiętać, że musimy do tego celu przestawić jeszcze jedną zmienną SELinux. :
setsebool -P samba_enable_home_dirs on
Udostępnienie w pliku /etc/samba/smb.conf powinno wyglądać następująco ;
[homes]
comment = Home Directories
browseable = no
writable = yes
read only = no
; valid users = %s
; valid users = MYDOMAIN\%S
Powyższe ustawienia umożliwiają logowanie się użytkowników do własnych katalogów domowych.
Komentarze
Prześlij komentarz