Vytvoření skupiny linlan a přidání uživatele do skupiny
$ sudo groupadd linlan
$ sudo usermod -aG linlan user
Přidat uživatele samby a nastavit mu heslo:
$ sudo smbpasswd -a user
Nejprve zadám heslo sudo a pak jsem vyzván k tomu, abych zadal heslo do Samby pro uživatele user. Potvrdím a pak ho zadám ještě jednou pro kontrolu.
Složce nastavíme práva
sudo chown -R :linlan /cesta/k/sdilene/slozce sudo chmod -R 770 /cesta/k/sdilene/slozce
Globální konfigurace samby
[global]
bind interfaces only = yes
interfaces = lo enp14s0 192.168.1.101
workgroup = WORKGROUP
server role = standalone
log file = /var/log/samba/%m.log
max log size = 50
Tento blok konfigurace Samby obsahuje důležitá nastavení pro správu síťového připojení, síťové skupiny (workgroup) a protokolování (logování). Pojďme si ho podrobně rozebrat:
Rozbor konfigurace
[global]
bind interfaces only = yes
interfaces = lo enp14s0 192.168.1.101
workgroup = Workgroup
server role = standalone
log file = /var/log/samba/%m.log
max log size = 50
1. bind interfaces only = yes
- Určuje, že Samba bude naslouchat pouze na definovaných rozhraních v parametru
interfaces
. - To je důležité pro bezpečnost, protože Samba nebude dostupná na všech rozhraních.
2. interfaces = lo enp14s0 192.168.1.101
- Specifikuje síťová rozhraní nebo IP adresy, na kterých má Samba naslouchat.
lo
je loopback rozhraní (localhost, 127.0.0.1).enp14s0
je síťové rozhraní vašeho zařízení.192.168.1.101
je IP adresa zařízení (notebooku), na které Samba naslouchá.
- VM ale má lo ens33 192.168.200.128 proto samba na notebooku musí mít nastaveno:
[global]
bind interfaces only = yes
interfaces = ens33 # viz ifconfig -a
workgroup = workgroup # Použijte malá písmena
server role = standalone
log file = /var/log/samba/%m.log
max log size = 50
3. workgroup = WORKGROUP
- Definuje síťovou pracovní skupinu, do které Samba patří.
- WORKGROUP je výchozí hodnota používaná ve Windows sítích. Všechna zařízení, která chtějí spolupracovat, musí mít stejnou hodnotu.
4. server role = standalone
- Určuje roli Samba serveru:
standalone
: Server funguje samostatně, ne jako člen domény.- To je vhodné pro domácí sítě nebo malé kanceláře.
Llama k tomu píše
/etc/samba/smb.conf
Také místo @linlan by mělo být @linlan nahrazeno skupinou, která existuje na vašem systému, nebo můžete použít konkrétní uživatele.
Pokud chcete přistupovat do windowské sítě Workgroup, budete muset přidat sekci [global] do svého /etc/samba/smb.conf souboru a nastavit následující parametry:
[global]
workgroup = WORKGROUP
netbios name = jméno_vašeho_počítače
security = user
Také budete muset přidat sekci [filmy] s parametry, které jste již uvedli:
[filmy]
path = /home/user/mnt/filmy
valid users = @linlan
create mask = 0660
directory mask = 0770
Po úpravě /etc/samba/smb.conf souboru nezapomeňte restartovat službu Samba, aby se změny projevily.
5. log file = /var/log/samba/%m.log
- Určuje umístění logů Samby. Proměnná
%m
se nahrazuje názvem klienta (např. jménem počítače, který se připojuje). - Každý klient má tak svůj vlastní log soubor.
6. max log size = 50
- Určuje maximální velikost log souborů (v KB).
- Pokud log dosáhne této velikosti, Samba ho přestane rozšiřovat, aby nezabírala příliš mnoho prostoru.
Souvisí s nastavením sdílené složky?
Ano i ne:
- Souvisí:
- Parametry
bind interfaces
ainterfaces
zajišťují, že Samba je dostupná pouze na konkrétních IP adresách/rozhraních. Pokud je špatně nastavíte, Samba nemusí být dostupná na očekávané síti. - Workgroup musí odpovídat skupině ostatních zařízení v síti (např. pokud Windows PC má WORKGROUP, musí ji mít i Samba).
- Parametry
- Nesouvisí přímo:
- Parametry sdílení složek (např.
path
,valid users
,read only
) se nastavují v konkrétní sekci, jako je[sdilena_slozka]
.
- Parametry sdílení složek (např.
Oprava a doporučení
-
Aktualizace
interfaces
: Pokud víte, že vaše síťová karta jeenp14s0
a Samba má být dostupná na IP adrese192.168.1.101
, pak je nastavení správné. -
Kontrola workgroup: Ujistěte se, že všechna zařízení (Windows i Linux) mají stejnou hodnotu
workgroup
. -
Logování: Zkontrolujte logy Samby, pokud máte problémy s připojením:
sudo tail -f /var/log/samba/*.log
Pokud něco nefunguje, dejte vědět! 😊
Masky v Sambě
V konfiguraci Samby se parametry create mask
a directory mask
používají k nastavení oprávnění pro nové soubory a adresáře, které jsou vytvořeny přes Sambové sdílení. Umožňují kontrolovat, kdo může číst, zapisovat nebo provádět soubory a jaká oprávnění budou mít nově vytvořené adresáře.
Co znamenají masky?
create mask
:- Určuje oprávnění pro nové soubory vytvořené ve sdílené složce.
- V Sambě jsou oprávnění nastavována v oktalovém formátu (stejně jako v Linuxu pomocí příkazu
chmod
). - Příklad:
- Hodnota
0660
znamená:- Uživatel: čtení a zápis.
- Skupina: čtení a zápis.
- Ostatní: žádná oprávnění.
- Hodnota
directory mask
:- Určuje oprávnění pro nové adresáře vytvořené ve sdílené složce.
- Adresáře obvykle potřebují mít povolené procházení (bit
x
), aby je uživatelé mohli otevřít. - Příklad:
- Hodnota
0770
znamená:- Uživatel: čtení, zápis a procházení.
- Skupina: čtení, zápis a procházení.
- Ostatní: žádná oprávnění.
- Hodnota
Sdílení složek v sambě
Každá sdílená složka v Sambě musí být uvedena pod vlastní sekcí v konfiguraci (např. [zálohy_01], [zálohy_02]) s individuálním nastavením, včetně parametru path. Samba neumožňuje specifikovat více adresářů pro sdílení v rámci jedné sekce.
Důvody:
- Jednoznačné přiřazení nastavení: Každá sekce obsahuje individuální konfiguraci (jako oprávnění, masky, přístup uživatelů), která se vztahuje pouze na adresář uvedený v
path
. - Struktura konfigurace: Samba je navržena tak, aby jedno
path
odpovídalo jednomu sdílení. Pokus o uvedení více cest v rámci jedné sekce by byl ignorován nebo vedl k chybám.
Nakonfigurujte sdílenou složku v /etc/samba/smb.conf:
Restartujte službu Samba:
sudo systemctl restart smbd
Uživatel user se nyní může přihlásit na sdílenou složku pomocí svého Sambového hesla.
Bash script
Bash skript na nasdílení mnoha složek v kořenovém adresáři (třeba na Windows) by mohl mít na začátku volbu zda chci potvrzovat z výpisu kořebnového adresáře... takže např. po zavolání ./sambadirs.sh /media/filmy by vyskočila volba zda chci potvrzovat složky jedotlivě zda je zahrnout do seznamu nebo se přidají všechny do té cesty
#!/bin/bash # Ověří, zda byl zadán vstupní adresář if [ -z "$1" ]; then echo "Použití: $0" exit 1 fi # Zadaný kořenový adresář ROOT_DIR=$1 # Výstupní soubor pro sdílenou konfiguraci SAMBA_CONF="/tmp/samba_shares.conf" # Volba potvrzování read -p "Chcete potvrdit přidání jednotlivých složek? [y/n] " CONFIRM # Inicializace výstupního souboru echo "; Automaticky generovaná Samba konfigurace" > "$SAMBA_CONF" # Prochází všechny podadresáře for DIR in "$ROOT_DIR"/*; do if [ -d "$DIR" ]; then if [ "$CONFIRM" == "y" ]; then read -p "Přidat adresář $DIR? [y/n] " ADD if [ "$ADD" != "y" ]; then continue fi fi # Název sdílené složky (bez cesty) SHARE_NAME=$(basename "$DIR") # Přidá do konfigurace echo "[$SHARE_NAME]" >> "$SAMBA_CONF" echo "path = $DIR" >> "$SAMBA_CONF" echo "read only = no" >> "$SAMBA_CONF" echo "create mask = 0660" >> "$SAMBA_CONF" echo "directory mask = 0770" >> "$SAMBA_CONF" echo "valid users = @linlan" >> "$SAMBA_CONF" echo "" >> "$SAMBA_CONF" fi done # Výstup echo "Konfigurace byla uložena do $SAMBA_CONF" echo "Pro přidání do Samby zkopírujte obsah do /etc/samba/smb.conf"
chmod +x sambadirs.sh
./sambadirs.sh /media/filmy
sudo cat /tmp/samba_shares.conf >> /etc/samba/smb.conf
sudo systemctl restart smbd
Žádné komentáře:
Okomentovat