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.
loje loopback rozhraní (localhost, 127.0.0.1).enp14s0je síťové rozhraní vašeho zařízení.192.168.1.101je 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á
%mse 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 interfacesainterfaceszajišť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 jeenp14s0a 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
0660znamená:- 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
0770znamená:- 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
pathodpoví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