В первую очередь необходимо настроить или отключить 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.