Инсталација и конфигурисање Самба сервиса на ЦентОС 7 и управљање корисницима

Кад је потребно да дељеним фајловима на Линукс системима треба да приступе Виндовс корисници обично се користи Самба сервис, који има поприлично добар систем за управљање корисницима али се не препоручује на јавним серверима већ искључиво на интранет локацијама у фирмама. У овом тексту ћемо инсталирати Самбу на ЦентОС 7 Линуксу, и исконфигурисати један дељени фолдер са пар корисника за приступ као и један дељени фолдер са могућношћу коришћења од стране корисника који немају никакав налог (такозвани Guest корисници)

# Инсталација потребних пакета за Самбу
yum install samba samba-common
mv /etc/samba/smb.conf /etc/samba/smb.conf.ORIGINAL # Правићемо овај фајл од 0

# Глобалне варијабле за Самба Сервер, само се једном постављају
touch /etc/samba/smb.conf
if [ `grep "[global]" /etc/samba/smb.conf | wc -l ` -eq 0 ] ; then 
echo "[global]" >> /etc/samba/smb.conf 
echo "workgroup = WORKGROUP" >> /etc/samba/smb.conf 
echo "server string = Razmena fajlova %v" >> /etc/samba/smb.conf 
echo "netbios name = centos" >> /etc/samba/smb.conf 
echo "security = user" >> /etc/samba/smb.conf
echo "map to guest = bad user" >> /etc/samba/smb.conf 
echo "dns proxy = no" >> /etc/samba/smb.conf
fi
cat /etc/samba/smb.conf

# Старт Самбе и старт приликом бутовања система
systemctl restart smb.service
systemctl restart nmb.service
systemctl enable smb.service
systemctl enable nmb.service

# Ако користите firewalld омогућите приступ Самби
firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd --reload

# Замену firewalld са iptablesom имате на овом линку, ако је потребно: 
# https://kompjuteras.com/kako-zameniti-firewalld-sa-iptables-om-na-centos-7/
# Ако користите iptables радите то на овај начин (само без коментара):
# iptables -I INPUT -p tcp –dport 137 -j ACCEPT
# iptables -I INPUT -p tcp –dport 138 -j ACCEPT
# iptables -I INPUT -p tcp –dport 139 -j ACCEPT
# iptables -I INPUT -p tcp –dport 445 -j ACCEPT
# service iptables save
# service iptables restart

# Овим сте завршили core инсталације и остаје вам да подесите дељене фолдере
# и приступе њима

Приступ Самби за два корисника али при том да сваки од тих корисника сме да мења и брише само своје фајлове, док ове друге може само да гледа (или прекопира код себе негде па мења) би се поставио на следећи начин. Користимо варијабле па ви поставите ваше…

##### SHARE ГДЕ КОРИСНИК МОЖЕ ДА МЕЊА САМО СВОЈЕ ФАЈЛОВЕ ##########
FOLDER_ZA_SAMBA_FAJLOVE="/home/Samba/KorisnickiPodaci" #Пример
SAMBA_KORISNIK=draza #Пример
SAMBA_GRUPA=pristup_public #Пример
NAZIV_SAMBA_SHAREA="Korisnicki Fajlovi" #Пример
####################################################################

# Ова група ће имати права приступа том дељеном фолдеру
groupadd ${SAMBA_GRUPA}

echo "#============== Korisnicki Folderi ==============#" >> /etc/samba/smb.conf
echo "#Korisnik moze da obrise/menja samo svoje fajlove" >> /etc/samba/smb.conf
echo "[${NAZIV_SAMBA_SHAREA}]" >> /etc/samba/smb.conf
echo "path = ${FOLDER_ZA_SAMBA_FAJLOVE}" >> /etc/samba/smb.conf
echo "valid users = @${SAMBA_GRUPA}" >> /etc/samba/smb.conf
echo "guest ok = no" >> /etc/samba/smb.conf
echo "writable = yes" >> /etc/samba/smb.conf
echo "browsable = yes" >> /etc/samba/smb.conf
cat /etc/samba/smb.conf

# Креирање првог корисника
useradd -M -s /bin/false ${SAMBA_KORISNIK}
usermod -a -G ${SAMBA_GRUPA} ${SAMBA_KORISNIK}
smbpasswd -a ${SAMBA_KORISNIK}

# Креирање потребних фолдера
mkdir -p ${FOLDER_ZA_SAMBA_FAJLOVE}
chown -R ${SAMBA_KORISNIK}:${SAMBA_GRUPA} ${FOLDER_ZA_SAMBA_FAJLOVE}
chown nobody:${SAMBA_GRUPA} ${FOLDER_ZA_SAMBA_FAJLOVE}
chmod 1075 ${FOLDER_ZA_SAMBA_FAJLOVE}
chcon -t samba_share_t ${FOLDER_ZA_SAMBA_FAJLOVE} # Selinux - ако користите

# Ако сваки корисник треба да има право да брише и фајлове других 
# корисника онда поставити ове пермисије:
# chmod 0075 ${FOLDER_ZA_SAMBA_FAJLOVE}

# Додавање другог Самба корисника
SAMBA_NOVI_KORISNIK=peja
SAMBA_GRUPA=${SAMBA_GRUPA}
useradd -M -s /bin/false ${SAMBA_NOVI_KORISNIK}
usermod -a -G ${SAMBA_GRUPA} ${SAMBA_NOVI_KORISNIK}
smbpasswd -a ${SAMBA_NOVI_KORISNIK}

# Самба рестарт
systemctl restart smb.service
systemctl restart nmb.service

# Сад пробајте приступ из Виндовс експлорера са путањом:
# \\ip_adresa_samba_servera\Korisnicki Fajlovi

# За додавање још корисника поновите овај део (ДОДАВАЊЕ ДРУГОГ САМБА КОРИСНИКА) 
# са другим варијаблама наравно

Ако приступ Самба фолдеру треба да имају сви, без икакве аутентификације и било чега – што узгред речено није препоручљиво, „config“ би се састојао из следећих команди (поставите само ваше варијабле). У самом config-у имате закоментарисано и ако желите да Guest корисници не могу да бришу фајлове које су направили корисници који већ имају налог на том Самба Серверу и већ су се раније логовали.

##### SHARE ГДЕ СВАКО МОЖЕ ДА ПРИСТУПА БЕЗ ЛОГИН ПОДАТАКА ##########
######### ТАКОЗВАНИ ГУЕСТ ПРИСТУП (није препоручљиво) ##############
FOLDER_ZA_JAVNE_SAMBA_FAJLOVE="/home/Samba/JavniFolder" # Пример
NAZIV_SAMBA_SHAREA="Javni Folder" # Пример
####################################################################

echo "#============== JAVNI FOLDER ==============#" >> /etc/samba/smb.conf
echo "#Svi imaju read-write privilegije" >> /etc/samba/smb.conf
echo "[${NAZIV_SAMBA_SHAREA}]" >> /etc/samba/smb.conf
echo "path = ${FOLDER_ZA_JAVNE_SAMBA_FAJLOVE}" >> /etc/samba/smb.conf
echo "browsable = yes" >> /etc/samba/smb.conf
echo "writable = yes" >> /etc/samba/smb.conf
echo "guest ok = yes" >> /etc/samba/smb.conf
echo "read only = no" >> /etc/samba/smb.conf

# Креирање потребних фолдера
mkdir -p ${FOLDER_ZA_JAVNE_SAMBA_FAJLOVE}
chmod -R 0777 ${FOLDER_ZA_JAVNE_SAMBA_FAJLOVE} # Ako bas svako treba da ima r+w
chown -R nobody:nobody ${FOLDER_ZA_JAVNE_SAMBA_FAJLOVE}
chcon -t samba_share_t ${FOLDER_ZA_JAVNE_SAMBA_FAJLOVE}
# Ако Guest корисници могу да бришу и мењају само своје фајлове, не и фајлове 
# других Самба или Линукс корисника онда звизнути ове пермисије
# chmod -R 1777 ${FOLDER_ZA_JAVNE_SAMBA_FAJLOVE} 

# Самба рестарт
systemctl restart smb.service
systemctl restart nmb.service

# Пробајте из Виндовс експлорера: \\IP_ADRESA_SAMBA_SERVERA\Javni Folder

Манипулисање Самба корисницима би било на нивоу Линукс пермисија (ко сме а ко не да шта ту дира) али што се тиче самих Самба корисника на ЦентОС 7 би брисање корисника или преглед ишао кроз команде…

# Листинг свих Самба корисника на серверу
pdbedit -L -v
# Брисање Самба корисника, у овом случају корисника draza
pdbedit -x draza
userdel draza