Za share na Linux sistemima kojima treba da pristupe Windows korisnici obično se koristi Samba servis, koji ima poprilično dobar sistem za upravljanje korisnicima ali se ne preporučuje na javnim serverima već isključivo na intranet lokacijama u firmama. U ovom tekstu ćemo instalirati Sambu na CentOS 7 Linuxu, i iskonfigurisati jedan share folder sa par korisnika za pristup kao i jedan share folder sa mogućnošću korišćenja od strane korisnika koji nemaju nikakav nalog (takozvani Guest korisnici)

# Instalacija potrebnih paketa za Sambu
yum install samba samba-common
mv /etc/samba/smb.conf /etc/samba/smb.conf.ORIGINAL #Pravicemo ovaj fajl od 0

# Globalne varijable za Samba Server, samo se jednom postavljaju
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

# Start Sambe i start pri bootu
systemctl restart smb.service
systemctl restart nmb.service
systemctl enable smb.service
systemctl enable nmb.service

# Ako koristite firewalld omogućite pristup Sambi
firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd --reload

# Ako koristite iptables to radite na ovaj nacin
# Zamenu firewalld sa iptablesom imate na ovom linku: 
# https://kompjuteras.com/kako-zameniti-firewalld-sa-iptables-om-na-centos-7/
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

# Ovim ste završili core instalacije i ostaje vam da podesite deljene foldere
# i pristupe njima

Pristup Sambi za dva korisnika ali pri tom da svaki od tih korisnika sme da menja i briše samo svoje fajlove, dok ove druge može samo da gleda (ili prekopira kod sebenegde pa menja) bi se postavio na sledeći način. Koristimo varijable pa vi postavite vaše

##### SHARE GDE KORISNIK MOZE DA MENJA SAMO SVOJE FAJLOVE ##########
FOLDER_ZA_SAMBA_FAJLOVE="/home/Samba/KorisnickiPodaci" #Primer
SAMBA_KORISNIK=draza #Primer
SAMBA_GRUPA=pristup_public #Primer
NAZIV_SAMBA_SHAREA="Korisnicki Fajlovi" #Primer
####################################################################

# Ova grupa ce imati prava pristupa tom deljenom folderu
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

# Kreiranje prvog korisnika
useradd -M -s /bin/false ${SAMBA_KORISNIK}
usermod -a -G ${SAMBA_GRUPA} ${SAMBA_KORISNIK}
smbpasswd -a ${SAMBA_KORISNIK}

# Kreiranje potrebnih foldera
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 - ako koristite

# Ako svaki korisnik treba da ima pravo da brise i fajlove drugih 
# korisnika onda postaviti ove permisije:
# chmod 0075 ${FOLDER_ZA_SAMBA_FAJLOVE}

# DODAVANJE DRUGOG SAMBA KORISNIKA
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}

# Samba restart
systemctl restart smb.service
systemctl restart nmb.service

# Sad probajte pristup iz Windows Explorera sa putanjom:
# \\ip_adresa_samba_servera\Korisnicki Fajlovi

# Za dodavanje još korisnika ponovite ovaj deo (DODAVANJE DRUGOG SAMBA KORISNIKA)
# sa drugim varijablama naravno

Ako pristup Samba folderu treba da imaju svi, bez ikakve autentifikacije i bilo čega, config bi se sastojao iz sledećih komandi (postavite samo vaše varijable). U samom configu imate zakomentarisano i ako želite da Guest korisnici ne mogu da brišu fajlove koje su napravili korisnici koji već imaju nalog na tom Samba Serveru i već su se ranije logovali.

##### SHARE GDE SVAKO MOZE DA PRISTUPA BEZ LOGIN PODATAKA ##########
####### TAKO ZVANI GUEST PRISTUP (nije preporucljivo) ##############
FOLDER_ZA_JAVNE_SAMBA_FAJLOVE="/home/Samba/JavniFolder" #Primer
NAZIV_SAMBA_SHAREA="Javni Folder" #Primer
####################################################################

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

# Kreiranje potrebnih foldera
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}
# Ako guest korisnici mogu da brisu i menjaju samo svoje fajlove, ne i fajlove
# drugih Samba ili Linux korisnika onda zviznuti ove permisije
# chmod -R 1777 ${FOLDER_ZA_JAVNE_SAMBA_FAJLOVE} 

# Samba restart
systemctl restart smb.service
systemctl restart nmb.service

# Probajte iz Windows Exporera: \\IP_ADRESA_SAMBA_SERVERA\Javni Folder

Manipulisanje Samba korisnicima bi bilo na nivou Linux permisija (ko sme a ko ne da šta tu dira) ali što se tiče samih Samba korisnika na CentOS 7 bi brisanje korisnika ili pregled išao kroz komande

# Listing svih Samba korisnika na serveru
pdbedit -L -v
# Brisanje Samba korisnika, u ovom slucaju korisnika draza
pdbedit -x draza
userdel draza