Установка и конфигурация Samba на CentOS 7

Разберёмся, как сконфигурировать samba на CentOS 7 с анонимными и защищёнными samba-серверами. Samba является пакетом программ с открытым исходным кодом, который позволяет уверенно обращаться к файлам и принтерам на ОС, работающих по протоколу SMB/CIFS. Samba находится в свободном доступе, в отличие от других программ SMB/CIFS, и совместим, допускает возможность взаимодействия сетей, включающих сервера под управлением Linux/Unix, так и клиентов, работающими на Windows.
1. Предварительные замечания
В нашем случае установка сервера samba будет производиться на специально установленном сервере CentOS версии 7.0. Также нам понадобится ПК с установленным Windows для проверки доступности samba. В данном случае сервер под CentОS будет иметь имя хоста в виде linux.example.com и 192.168.0.100 в качестве IP-адреса.
Внимание: В Windows домен рабочей станции должен совпадать с доменом в CentOS.
Для проверки значения в Windows введите в командной строке следующее:
net config workstation
В нашем случае домен рабочей станции имеет значение HOME.

Убедитесь, что рабочая группа будет иметь одинаковое имя как под Linux, так и под Windows.
Для того, чтобы сделать доступным компьютер под Windows, необходимо добавить IP-адрес вашего сервера в hosts.
блокнот C:\Windows\System32\drivers\etc\hosts
В нашем случае введем следующее:
192.168.0.100 linux.example.com centos
Затем просто сохраним данное изменение.
2. Анонимный доступ средствами samba
Сначала установим samba с возможностью анонимного доступа. Для установки samba выполните следующую команду:
yum install samba samba-client samba-common
Таким образом вы установите samba актуальной версии.
Для того, чтобы сконфигурировать samba потребуется отредактировать файл /etc/samba/smb.conf, перед редактированием следует сделать резервное копирование оригинального файла /etc/samba/smb.conf.bak
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
Открываем для редактирования файл:
mcedit /etc/samba/smb.conf
Вносим изменения:
[global] workgroup = HOME server string = Samba Server %v netbios name = centos security = user map to guest = bad user dns proxy = no #===Share Definitions [Anonymous] path = /samba/anonymous browsable =yes writable = yes guest ok = yes read only = no
Почти всё готово, перезапускаемся:
mkdir -p /samba/anonymous systemctl enable smb.service systemctl enable nmb.service systemctl restart smb.service systemctl restart nmb.service
На данном этапе сетевой экран CentOS 7.0 заблокирует доступ службы samba, чтобы решить эту проблему, выполним следующее:
firewall-cmd --permanent --zone=public --add-service=samba firewall-cmd --reload
Настроить сетевой экран по всем правилам поможет специальная статья.

Теперь вы можете обмениваться файлами Centos 7.0 с windows, для этого в командной строке Win+R необходимо выполнить \\centos:
Далее в windows откройте папку и попытайтесь создать текстовый документ, но при попытке создания документа появится сообщение об ошибке прав доступа.
Далее необходимо проверить права доступа для общего документа.
ls -l drwxr-xr-x. 2 root root anonymous
Для получения прав доступа для анонимного пользователя введите следующее:
cd /samba chmod -R 755 anonymous/ chown -R nobody:nobody anonymous/ ls -l anonymous/ total 0 drwxr-xr-x. 2 nobody nobody anonymous
Далее нам потребуется разрешение selinux для конфигурации samba:
chcon -t samba_share_t anonymous/
Теперь анонимный пользователь может создавать и просматривать cодержимое.
Можно выполнить встречную проверку следующим образом:
ls -l anonymous/ total 0 -rwxr--r--. 1 nobody nobody 0 anonymous.txt [root samba]#
3. Защищённый samba-сервер
Создадим группу smbgrp и пользователя dve для доступа к samba-серверу с необходимой аутентификацией:
groupadd smbgrp useradd dve -G smbgrp smbpasswd -a dve [root samba]# smbpasswd -a dve New SMB password: <-вашsambaпароль Retype new SMB password: <-вашsambaпароль Added user dve. [root samba]#
Создадим папку secured в /samba и предоставим соответствующие права доступа:
mkdir -p /samba/secured cd /samba && chmod -R 777 secured/
Теперь нам снова понадобится разрешение Selinux:
cd /samba chcon -t samba_share_t secured/
Снова редактируем файл конфигурации /etc/samba/smb.conf:
[...] [secured] path = /samba/secured valid users = @smbgrp guest ok = no writable = yes browsable = yes
Далее потребуется перезапуск
systemctl restart smb.service systemctl restart nmb.service
Теперь проверяем настройки хитрой командой testparm
[root]# testparm Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Processing section "[Anonymous]" Processing section "[secured]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions <--нажмитеENTER [global] netbios name = CENTOS server string = Samba Server %v map to guest = Bad User dns proxy = No idmap config * : backend = tdb [Anonymous] path = /samba/anonymous read only = No guest ok = Yes [secured] path = /samba/secured valid users = @smbgrp read only = No [root samba]# browsable = yes.
Вы снова столкнётесь с проблемой прав доступа. Для получения прав доступа пользователя dve выполним:
cd /samba chown -R dve:smbgrp secured//
Теперь пользователь samba имеет права доступа для записи в папку.
Поздравляю, вы только что установили samba сервер на CentOS 7 !