W systemach opartych o Linuxa dostęp do plików jest oparty o uprawnienia związane z przynależnością użytkownika do danej grupy i w specyficznych przypadkach jest modfyikowany poprzez "sticky-bits".
Przy zakładaniu nowego użytkownika automatycznie jest toworzona dla niego grupa o tej samej nazwie co nazwa użytkownika. Jest to tak zwana grupa "pierowtna". Jeżeli chcemy by kilku różnych użytkowników miało dostęp do jakiegoś katalogu a reszta nie to musimy utworzyć dla nich osobną grupę a następnie dodać tych użytkowników do tej grupy. Użytkownik może być członkiem wielu grup ale może mieć tylko jedną grupę pierwotną.
W naszym przypadku utowrzymy grupę zwierzaki i dodamy do niej nowych użytkowników bez praw logowania do systemu oraz bez katalogu domowego.
Dodajwanie nowej grupy o nazwie zwierzaki:
groupadd zwierzaki
Tworzenie użytkowników:
adduser --no-create-home --shell /usr/sbin/nologin bonifacy
adduser --no-create-home --shell /usr/sbin/nologin filemon
adduser --no-create-home --shell /usr/sbin/nologin reksio
adduser --no-create-home --shell /usr/sbin/nologin uszatek
Sprawdzamy do jakich grup należy użytkownik uszatek:
groups uszatek
Teraz możemy dodać uszatka do grupy zwierzaki
usermod -aG zwierzaki uszatek
Przy ponownym sprawdzeniu uszatek powinien już być członkiem grupy zwierzaki
groups uszatek
Dodajemy pozostałych użytkowników do grupy zwierzaki.
Dostęp do katalogów jest możliwy dla użytkowników, którzy mają prawa do tego katalogu oraz dla grupy która ma takie prawa. Ewentualnie dostęp mogą mieć wszyscy jeśli takie uprawnienie zostało przyznane. Katalog, który ma być dostępny dla konkrentnej grupy musi mieć dodaną właściwą grupę oraz ustawiony SGID dla tej grupy. Konsekwencją tego jest to, że nowo tworzone w tym katalogu pliki i podkatalogi mają przypisaną taką samą grupę jak katalog nadrzędny przez co swobodny dostęp do nich mają członkowie grupy. Dotyczy to tylko nowo tworzonych plików i podkatalogów w takim katalogu, wcześniej stworzone pliki nie będą dziedziczyć nowej grupy.
Tworzymy katalog do którego ma mieć pełny dostęp nowa grupa użytkowników oraz właściciel:
mkdir zwierzyniec
chown root:zwierzaki zwierzyniec
chmod 2770 zwierzyniec
W takim pełny dostęp jak powyżej oraz odczyt przez wszystkich
mkdir zwierzyniec
chown root:zwierzaki zwierzyniec
chmod 2775 zwierzyniec
Podkatalogi i pliki tworzone w takim katalogu będą miały przypisanego właściciela w postaci użytkownika, który je utworzył a grupa będzie grupą dziedziczoną z katalogu nadrzędnego. Zaznaczyć trzeba, że podkatalogi domyślnie nie mają prawa do zapisu dla grupy stąd członkowie grupy mogą przelądać podkatalogi ale bez wyraźnej zgody tworzącego nie mogą takiego podkatalogu usunąć.
Aby dany użytkownik mógł korzystać z zasobów SMB musi być dodany do katalogu Samby a następnie zaktywowany. Dokonujemy tego serią poleceń:
smbpasswd -a uszatek
smbpasswd -e uszatek
Tworzymy plik konfiguracyjny - jego sekcja global może wyglądać jak poniżej. Ta konfiguracja uniemożliwia użytkownikom dosęp do plików, których typy są podane w linii veto files i umożliwia usuwanie katalogów w których są takie pliki (delete veto files). Prócz tego wyłączone jest rozgłaszanie informacji o serwerze (disable netbios = yes).
[global]
workgroup = YOUR-LOCAL-WORKGROUP
server string = %h # hostname
log file = /var/samba/smb-%h.log
max log size = 1000
disable netbios = yes # since this is a standalone server
server role = standalone server
veto files = /*.exe/*.com/*.dll/*.bat/*.vbs/*.tmp/ # whatever your want
delete veto files = yes
Poniżej przykładowa sekcja udostępniająca konkretny katalog:
[Katalog]
path = /sciezka/Katalog
browseable = yes
guest only = no
guest ok = yes
read list = nobody guest
write list = @zwierzyniec
force create mode = 0665
force directory mode = 2775
Sprawdzamy czy konfiguracja nie zawiera błędów:
testparm
Jeżeli nic się nie posypało to możemy przeładować Sambę:
systemctl restart smbd.service