Samba

В первую оче­редь необ­хо­ди­мо настро­ить или отклю­чить SELinux. Про­ве­рить, вклю­чен ли в вашей систе­ме SELinux мож­но, выпол­нив сле­ду­ю­щую команду:

Thank you for reading this post, don't forget to subscribe! 

selinuxenabled && echo enabled || echo disabled

Как отклю­чить SELinux опи­са­но здесь.

Настрой­ка досту­па к общей пап­ке без пароля
Уста­но­вим Samba:

yum install samba samba-common cups-libs samba-client

Создай­те пап­ку, к кото­рой вы буде­те предо­став­лять общий доступ:

mkdir /samba

И настрой­те на нее права:

chown -R user1:user1 /samba
chmod -R 775 /samba

Открой­те файл для конфигурации:

nano /etc/samba/smb.conf

Про­верь­те, что у вас суще­ству­ют сле­ду­ю­щие строч­ки в сек­ции [global]:

[global]
security = user
passdb backend = tdbsam
workgroup = WORKGROUP
server string = Samba Server Version %v

И там же, в сек­ции [global] добавь­те еще одну строч­ку со сле­ду­ю­щим содержанием:

map to guest = Bad User

Дан­ная настрой­ка озна­ча­ет, что запро­сы с непра­виль­ным паро­лем будут откло­не­ны, если такое имя поль­зо­ва­те­ля суще­ству­ет. Если не суще­ству­ет, то такие запро­сы будут счи­тать­ся как попыт­ки зай­ти гостем (guest account).

Затем перей­ди­те к кон­цу фай­ла, где ука­за­ны опи­са­ния общих ресур­сов (share definitions).

В первую оче­редь, если вы не пла­ни­ру­е­те предо­став­лять общий доступ к домаш­ним ката­ло­гам поль­зо­ва­те­лей заком­мен­ти­руй­те сек­цию homes:

[homes]
;       comment = Home Directories
;       browseable = no
;       writable = yes
;       valid users = %S
;       valid users = MYDOMAIN\%S

То же мож­но сде­лать и с сек­ци­ей [printers], отве­ча­ю­щей за общий доступ к принтерам:

;[printers]
;       comment = All Printers
;       path = /var/spool/samba
;       browseable = no
;       guest ok = no
;       writable = no
;       printable = yes

Теперь добавь­те свою сек­цию со сле­ду­ю­щей конфигурацией:

[MYFILES]
comment = Everybody has access
path = /samba
force group = user1
force user = user1
create mask = 0666
directory mask = 0777
writable = yes
guest ok = yes
browseable = yes

Сохра­ни­те файл кофигурации.

Настрой­те авто­ма­ти­че­ский запуск служ­бы samba при загруз­ке CentOS и запу­сти­те саму службу:

chkconfig --levels 235 smb on

chkconfig --levels 235 nmb on

/etc/init.d/nmb restart
/etc/init.d/smb restart

Вам так­же может пона­до­бит­ся настро­ить меж­се­те­вой экран (Samba исполь­зу­ет пор­ты 137, 138, 139, 445) или, по край­ней мере его отклю­чить (не реко­мен­ду­ет­ся) вре­мен­но (до перезагрузки):

/etc/init.d/iptables stop

Или посто­ян­но:

/etc/init.d/iptables stop
chkconfig iptables off

 

На вин­де, если не уда­ёт­ся зай­ти по адресу:
\\IP\
то нуж­но доба­вить в hosts:
IP хостнейм
после чего захо­дить по адресу:
\\хост­нейм\\

 

 

мой кон­фиг:

cat /etc/samba/smb.conf

[global]
workgroup = centos6
server string = Samba Server %v
netbios name = centos6
security = user
map to guest = bad user
dns proxy = no
unix password sync = yes
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=8192 SO_SNDBUF=8192
local master = yes
preferred master = yes
wins enable=yes
local master = yes
domain master = yes
ntlm auth = yes

[Anonymous]
path = /samba
browsable =yes
writable = yes
guest ok = yes
read only = no

[parol]
path = /samba2
valid users = @smbgrp
browsable =yes
writable = yes
guest ok = no
create mode = 0755
directory mask = 0755

[root@centos6 ~]# ls -lah / | grep samba
drwxrwxrwx 7 user1 user1 4.0K Sep 24 09:09 samba
drwxrwxrwx 2 dve smbgrp 4.0K Sep 22 17:18 samba2

groupadd smbgrp
usermod -G user1 smbgrp
smbpasswd -a user1
smbpasswd -e user1

при авто­ри­за­ции в вин­де указываешь:
centos6\user1
пароль

centos6 здесь груп­па кото­рая в кон­фиг фай­ле указана

 

Парольная защита:

Аутентификация и авторизация пользователей

Огра­ни­че­ние досту­па по ip адре­сам не все­гда удоб­но или воз­мож­но, тогда мож­но исполь­зо­вать логи­ны и пароли.
Сна­ча­ла необ­хо­ди­мо создать локаль­но­го поль­зо­ва­те­ля в системе
adduser user1

Если поль­зо­ва­тель будет рабо­тать толь­ко с SAMBA ресур­са­ми, зада­вать ему пароль для систе­мы нет необ­хо­ди­мо­сти. Пароль для систе­мы и для SAMBA хра­нят­ся в раз­ных фай­лах и могут отличаться.

Затем необ­хо­ди­мо доба­вить систем­но­го поль­зо­ва­те­ля в поль­зо­ва­те­ли сам­бы и задать ему пароль
smbpasswd -a user1

По умол­ча­нию для хра­не­ния паро­лей исполь­зу­ет­ся файл фор­ма­та tdb, кото­рые рас­по­ло­жен в ката­ло­ге /var/lib/samba/private/
Изме­нить ката­лог рас­по­ло­же­ния фай­ла мож­но гло­баль­ным пара­мет­ром passdb backend

[global]
passdb backend=tdbsam:/etc/samba/smbpassdb.tdb

tdb фай­лы были созда­ны для заме­ны «уста­рев­ших» тек­сто­вых, если вы хоти­те исполь­зо­вать тек­сто­вые фай­лы, для это­го исполь­зуй­те пара­метр passdb backend=smbpasswd в раз­де­ле global
passdb backend=smbpasswd:/etc/samba/smbpasswd

Затем ука­жи­те спис­ки поль­зо­ва­те­лей и групп для досту­па к ресурсам

[guest]
path = /samba/guest
writable = no
read list = user1, @group2
write list = user2, user3

Обра­ти­те вни­ма­ние! Пароль поль­зо­ва­те­ля в систе­ме и пароль поль­зо­ва­те­ля к ресур­сам Samba могут быть разными.

Теперь доступ к нашей пап­ки обще­го досту­па будет с паролем.

Если заве­сти ана­ло­гич­ным обра­зом вто­ро­го поль­зо­ва­те­ля, то у него доступ к дан­ной пап­ке будет толь­ко для чтения.

Мож­но пол­но­стью огра­ни­чить доступ поль­зо­ва­те­ля user2 к нашей пап­ке обще­го досту­па. Для это­го на сер­ве­ре созда­ет­ся груп­па, напри­мер, share

#addgroup share

 

И в эту груп­пу добав­ля­ет­ся поль­зо­ва­тель user1

#addgroup user1 share

Далее на пап­ку в систе­ме выстав­ля­ют­ся пра­ва 770

#chmod 770 /var/local

И изме­ня­ет­ся вла­де­лец папки

#chgrp share /var/local/

 Теперь поль­зо­ва­тель user2 вооб­ще не смо­жет зай­ти в нашу пап­ку обще­го доступа.

 

 

если нуж­но что­бы толь­ко одна дирек­то­рия была запа­ро­ле­на, а дру­гая была шарой для всех то кон­фиг сам­бы будет следующий:

cat /etc/samba/smb.conf
#======================= Global Settings =====================================

[global]
workgroup = WORKGROUP
server string = Samba Server Version %v
map to guest = Bad User
security = share
# --------------------------- Logging Options -----------------------------
# logs split per machine
log file = /var/log/samba/log.%m
# max 50KB per log file, then rotate
max log size = 50
# ----------------------- Standalone Server Options ------------------------
passdb backend = tdbsam

[home.user1]
comment = Only password
path = /home/user1
security = user
writable = yes
browseable = yes
create mask = 0755
directory mask = 0755
valid users = user1 user3
guest ok = no

force group = user1
force user = user1
[home.user2]
security = share
comment = Everybody has access
path = /home/user2
force group = user2
create mask = 0666
directory mask = 0775
writable = yes
guest ok = yes
browseable = yes

 

поль­зо­ва­те­ли user1 user2 user3 созда­ны на сервере
[root@cent ~]# grep user* /etc/passwd
user1:x:505:506::/home/user1:/usr/sbin/nologin
user2:x:506:507::/home/user2:/usr/sbin/nologin
user3:x:507:508::/home/user3:/usr/sbin/nologin

так же добав­ле­ны и в самбу
[root@cent ~]# pdbedit -L | grep user
user2:506:
user3:507:
user1:505:

паро­ли зада­вал оди­на­ко­вые как при:
passwd User_name
так и при
smbpasswd -a User_name
после ещё выпол­нял, на вся­кий случай
smbpasswd -e User_name

На вин­де
при попыт­ке зай­ди в запа­ро­лен­ную дирек­то­рию воз­ни­ка­ет ошиб­ка (сете­вой пароль ука­зан невер­но) пока верх­ний инди­ка­тор загруз­ки не дой­дёт хотя­бы до середины.
на самой вин­де при исполь­зо­ва­нии коман­ды cmd - >  net use  ниче­го нет.
после успеш­ной аутентификации
net use пока­зы­ва­ет наше соединение.
что­бы про­ве­рить аутен­ти­фи­ка­цию под дру­гим поль­зо­ва­те­лем нуж­но на вин­де выпол­нить команду:
net use /delete \\192.168.1.165\\home.user1

после чего рестар­та­нуть самбу.
[root@cent ~]# /etc/init.d/smb restart
толь­ко после это­го повтор­ный запрос на аутен­ти­фи­ка­цию появится.

како­го хуя вин­де нуж­но вре­мя на про­груз­ку вот в душе не ебу, так и не разобрался

 

 

 

 

 

 

 

 

Ограничение доступа к SAMBA по ip адресам

Если вам нуж­но огра­ни­чить доступ ко всем ресур­сам SAMBA, добавь­те ваши спис­ки досту­па в раз­де­ле global, а если необ­хо­ди­мо огра­ни­чить толь­ко на опре­де­лен­ный ресурс, в раз­де­ле это­го ресурса.

При­мер:

[global]
hosts allow = 192.168.1.100, 192.168.1.101
hosts deny = ALL

[guest]
hosts allow = 192.168.0.0/255.255.0.0
hosts deny = 10. except 10.1.1.1

 

 

BASH скрипт кото­рый ста­вит samba добав­ля­ет, уда­ля­ет дирек­то­рии и поль­зо­ва­те­лей тут: samba.