Síťové souborové systémy
Ondřej Kozák, 410070@mail.muni.cz
Obsah
Samba
Samba je svoboná implementace síťového protokolu SMB, který se používá především v systémech Microsoft Windows.
První verzi vytvořil v roce 1992 Andrew Tridgell. Od verze 3 (2003) umožňuje připojit se do Active Directory jako člen a autentizovat
uživatele pomocí LDAP/Kerberos. Od verze 4 (2012) může plnit funkci řadiče domény Active Directory [1].
Samba se skládá ze dvou hlavních programů smbd a nmbd, které poskytují následující služby [2]:
- souborové a tiskové služby (smbd)
- autentizace a autorizace (smbd)
- překlad jmen (nmbd)
- propagace služeb (nmbd)
Autentizace a autorizace [2]
Samba podporuje čtyři bezpečnostní úrovně autentizace:
- Share-level security
U sdíleného zdroje je nastavené heslo, pomocí kterého se k němu mohou uživatelé připojit
- User-level security
U sdíleného zdroje se povoluje přístup pro jednotlivé uživatele, ti se autentizují jménem a heslem.
- Server-level security
Podobné jako User-level, ale k autentizaci se používá jiný server.
- Domain-leve security
Samba se stává členem Windows NT domény a používá k autentizaci doménový kontroler. Po autentizaci obdrží uživatele
token, pomocí kterého může přistupovat ke sdíleným zdrojům.
Překlad jmen [3]
- broadcast - client broadcastovou zprávou vyhledá stanici s daným jménem, pouze na LAN
- NetBIOS Name Service (NBNS) server - stanice si u serveru zaregistruje své jméno a IP adresu, client se poté dotazuje NBNS serveru, není limitováno na LAN
Propagace služeb [2]
Stanice v LAN síti si zvolí Local Master Browser (LMB), který udržuje seznam dostupných služeb.
Protokol SMB/CIFS [17]
Síťový komunikační protokol, který slouží kesdílenému přístupu k souborům nebo tiskárnám. Původně byl vyvinut ve firmě IBM, později
ho převzal Microsoft a začlenil ho do produktu Lan Manager. Protokol pracuje na principu klient-server. Klienti přistupují ke
sdíleným zdrojům pomocí síťové adresy UNC (\\jemno_serveru\jemno_zdroje).
Novinky ve verzi 2:
- redukce velikosti protokolu - snížení počtu příkazů ze stovek na pouhých 19
- řetězení příkazů
- podpora symbolických adresu
- 32, 64 nebo 128 bitové offsety - lepší přenos velkých souborů
Konfigurace serveru [4]
Konfigurace se provádí v souboru /etc/samba/smb.conf, který má formát podobný ini souborům ze systému Windows.
Skládá se ze sekcí a parametrů. [Sekce] se ohraničuje hranatými závorkami, parametry se zapisují ve tvaru parametr=hodnota
Existují tři speciální sekce [global], [homes] a [printers], každá další sekce slouží k popisu sdíleného zdroje.
Název sekce odpovídá názvu sdíleného zdroje a parametry definují jeho atributy.
Parametry v globální sekci se aplikují na celý server, případně se zde definují defaultní hodnoty pro ostatní sekce.
Ukázky: [5]
Anonymní Read-Only
[global]
workgroup = DOCS
netbios name = DOCS_SRV
security = share
[data]
comment = Documentation Samba Server
path = /export
read only = Yes
guest only = Yes
Anonymní print server
[global]
workgroup = DOCS
netbios name = DOCS_SRV
security = share
printcap name = cups
disable spools= Yes
show add printer wizard = No
printing = cups
[printers]
comment = All Printers
path = /var/spool/samba
guest ok = Yes
printable = Yes
use client driver = Yes
browseable = Yes
Secure Read/Write File and Print Server
[global]
workgroup = DOCS
netbios name = DOCS_SRV
security = user
printcap name = cups
disable spools = Yes
show add printer wizard = No
printing = cups
[homes]
comment = Home Directories
valid users = %S
read only = No
browseable = No
[public]
comment = Data
path = /export
force user = docsbot
force group = users
guest ok = Yes
[printers]
comment = All Printers
path = /var/spool/samba
printer admin = john, ed, @admins
create mask = 0600
guest ok = Yes
printable = Yes
use client driver = Yes
browseable = Yes
Primary Domain Controller [6]
[global]
netbios name = toltec
workgroup = METRAN
wins support = yes
domain master = yes
local master = yes
preferred master = yes
os level = 255
# Perform domain authentication.
security = user
encrypt passwords = yes
domain logons = yes
# The location of user profiles for Windows NT/2000/XP.
logon path = \\%L\profiles\%u\%m
# Users' Windows home directories and storage of Win95/98/Me roaming profiles.
logon drive = G:
logon home = \\toltec\%u\.win_profile\%m
time server = yes
# The logon script used for all users,
# Relative to [netlogon] share directory.
logon script = logon.bat
# The group identifying administrative users.
# If you have domain users in the Domain Admins
# group, use them here instead of "jay".
domain admin group = root jay
# For adding machine accounts automatically.
# This example works on Linux. For other host
# operating systems, you might need a different
# command.
add user script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -M %u
# Provide Microsoft Dfs support.
host msdfs = yes
# The netlogon share is required for
# functioning as the primary domain controller.
# Make sure the directory used for the path exists.
[netlogon]
path = /usr/local/samba/lib/netlogon
writable = no
browsable = no
# The profiles share is for storing
# Windows NT/2000/XP roaming profiles.
# Use your own path, and make sure
# the directory exists.
[profiles]
path = /home/samba-ntprof
writable = yes
create mask = 0600
directory mask = 0700
browsable = no
[homes]
comment = Home Directory
browsable = no
read only = no
map archive = yes
# The Dfs share.
# Use your own path, making
# sure the directory exists.
[dfs]
comment = Dfs share
path = /usr/local/samba/dfs
msdfs root = yes
# A shared directory, accessible by all domain users.
# Use your own share name and path.
[d]
comment = %u's Home Directory
path = /d
create mask = 0700
read only = no
Domain Member Server [6]
[global]
netbios name = mixtec
workgroup = METRAN
wins server = 172.16.1.1
os level = 33
security = domain
encrypt passwords = yes
password server = *
# Home directories.
[homes]
comment = %u's Home Directory
browsable = no
read only = no
map archive = yes
# This is an example printers
# share, which works for Linux.
[printers]
printable = yes
printing = BSD
print command = /usr/bin/lpr -P%p %s
path = /var/tmp
min print space = 2000
# A shared directory, accessible by all domain users.
# Use your own share name and path.
[d]
path = /d
create mask = 0755
read only = no
Konfigurace klienta [7]
- program smbclient (ftp-like smb klient)
smbclient -L host
# vypíše dostupné zdroje na hostovi
smbclient service <password>
smbfs balík - programy smbmout a smbunmount (je potřeba mít podporu smbfs zkompilovanou v kernelu)
smbmount //winpc/shared /mnt/share -o username=user,password=pass,rw
CIFS vfs
mount -t cifs ///my_server/e$ /mnt -o user=myname,pass=mypassword
RPC, portmapper/rpcbind
RPC je služba, která umožňuje programům vykonávat kód vzdáleně na jiném stroji. [8]
Pojmy:
- Klient - program, který požaduje vykonání kódu
- Server - program, který vykonává požadovaný kód
- Stub - program zodpovědný za převod adres, parametrů a návratových kódů
- Marshalling - zabalení adres a parametrů o zprávy
- Unmarshalling - rozbalení zprávy
Proces:
- Klient volá svůj Stub a předá mu informace.
- Klientský Stub zabalí informace do zprávy.
- Zpráva se pošle po síti na cílový server.
- Serverový Stub rozbalí zprávu.
- Server podle informací ve zprávě vykoná kód.
- Případný výstup se pošle zpět klientovi.
Portmapper/rpcbind poskytuje klientům informace o serverových programech. Poslouchá na portu 111 a udržuje seznam RPC programů,
které beží na serveru a jejich porty. Když klient potřebuje zavolat konkrétní RPC program, zeptá se portmapperu na portu 111 a ten
mu vrátí port, na kterém daný program poslouchá [9].
NFS
Network File System je další protokol určený pro přístup k souborům přes počítačovou síť, postavený na systému RPC. Původně byl vyvinut společností Sun Microsystems
v roce 1984, aktuálně další vývoj na starost IETF [10].
Přehled verzí:
Verze 3 [11]
- podpora TCP
- podpora 64 bitových velikostí souborů a offsetů
- asynchroní zápisy na server, zlepšení výkonu
Verze 4 [10]
- vyžaduje TCP
- statový protokol
- nepotřebuje portmapper, poslouchá na well-known TCP portu 2049
- přenos ACL
- tunelování přes firewall
- podpora nových bezečnostních mechanismů jako napříkald Kerberos
Verze 4.1
- paralelní přístup k souborům, které jsou distribuované na různých serverech (pNFS)
NFS zamykání
Ve verzích 2 a 3 NFS samo nepodporuje zamykání souborů, ale využívá k tomu pomocný program Network Lock Manager (NLM).
Když chce NFS filesystém zamčít soubor, vygeneruje NLM remote procedure call.
Od verze 4 je zamykání přímo součástí protokolu NFS, už není potřeba vytvářet RPC. Klient také nově nemusí zamykat celý soubor, ale pouze část.
NFS server [12]
Na Centosu 7 je NFS server dostupný v balíku nfs-utils. Je potřeba spustit tyto démony:
- rpcbind
- nfs-server
- nfs-locl
- nfs-idmap
Konfigurace se nastavuje v souboru /etc/exports.
/var/nfsshare 192.168.0.101(rw,sync,no_root_squash,no_all_squash)
/home 192.168.0.101(rw,sync,no_root_squash,no_all_squash)
NFS klient
Připojení nfs příkazem mount:
mount -t nfs 192.168.0.100:/home /mnt/nfs/home/
Použití systému Kerberos [13]
kadmin: addprinc -randkey nfs/nfsserver.example.com
kadmin: ktadd nfs/nfsserver.example.com
konfigurace nfs
- do souboru /etc/exports přidat parametr sec=krb5
/home/tools nfsclient.example.com(rw,no_root_squash,sec=krb5)
exportfs -avr
- aktivovat nfs-secure-server
systemctl enable nfs-secure-server && systemctl start nfs-secure-server
Klient:
kadmin: addprinc -randkey nfs/nfsclient.example.com
kadmin: ktadd nfs/nfsclient.example.com
konfigurace nfs
systemctl enable nfs-secure && systemctl start nfs-secure
mount -t nfs4 -o sec=krb5 nfsserver.example.com:/home/tools /mnt
Automounter [14]
Slouží k automatickému připojení odpojitelných zařízení. Při přístupu k určitému adresáři program automaticky připojí dané zařízení
a po nějaké době ho zase odpojí. Je potřeba mít zapnutou podporu v jádře CONFIG_AUTOFS_FS nebo novější CONFIG_AUTOFS4_FS.
Program se nachází v balíku autofs.
Konfigurace:
Hlavní konfigurační soubor je /etc/auto.master.
/media /etc/auto.media -g --timeout 60
Automounter připojuje zařízení podle map.
cdrom -fstype=iso9660,ro :/dev/cdrom
disketa -fstype=auto,umask=000,iocharset=iso8859-2,codepage=852 :/dev/fd0
winNT_C -fstype=smbfs,login=your_id,passwd=xxxxxx WinNT:/C
zaloha -fstype=nfs,soft mach1:/Backup
kernel -ro,soft,intr ftp.kernel.org:/pub/linux
cdcka -fstype=autofs file:/etc/auto.cd
Další systémy
-
Andrew File System (AFS) [15] - distribuovaný souborový systém, který se používá při distribuovaných výpočtech.
Úložný prostor je rozložený po více serverech.
-
Google File System (GFS) - "distribuovaný souborový systém navržený pro spolehlivé ukládání velkých zřídka přepisovaných souborů na velké množství nespolehlivých jednotek.
Je používán pro ukládání dat v počítačových systémech společnosti Google." [16]
Literatura