Uprawnienia dostępu do systemu plików i Samba

Użytkownicy i grupy

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.

Tworzenie katalogu dla grupy

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ąć.

Dodawania użytkownika do katalogu Samby

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
Konfiguracja Samby z dostępem dla grup

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
Uruchamianie udostępniania

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

Poprzedni wpis Następny wpis