Установка и конфигурация 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.

samba

Убедитесь, что рабочая группа будет иметь одинаковое имя как под 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

Настроить сетевой экран по всем правилам поможет специальная статья.

Win+R

Теперь вы можете обмениваться файлами 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 сервер на CentOS7.0!

Более углублённые знания можно получить из свежей статьи.

14 комментарии

  • Леонид

    написал Леонид

    Пятница, 27 Февраль 2015 01:07

    Спасибо за действительно работающую методику, которую я так долго искал!

  • Санек

    написал Санек

    Вторник, 23 Июнь 2015 08:03

    Бился с настройкой Samba 3 дня, перечитал кучу форумов, везде одно - да потому. А у меня в папку не пускает никак вообще... Только у тебя нашел инфу, что надо настроить selinux и чудо произошло! Спасибо огромное!!!!

  • Владимир Драч

    написал Владимир Драч

    Вторник, 23 Июнь 2015 13:04

    Благодарю за такой замечательный отзыв! Очень рад, что информация оказалась полезной на практике.

  • анон

    написал анон

    Среда, 10 Февраль 2016 15:03

    только вместо chcon - semange fcontext -a -t
    затем restorecon -R -v по директории
    настройки chcon'а сбросятся при релэйбле файловой системы

  • Kirill

    написал Kirill

    Пятница, 12 Февраль 2016 14:51

    chcon -t samba_share_t anonymous/

    chcon: can't apply partial context to unlabeled file ‘anonymous/’

    что не так?

  • Анатолий

    написал Анатолий

    Понедельник, 15 Февраль 2016 23:12

    Вот, что нужно:
    chcon -h system_u:object_r:httpd_sys_content_t /usr/local/apache2/htdocs

    chcon -R -h root:object_r:httpd_sys_content_t /usr/local/apache2/htdocs/*

  • Кирилл

    написал Кирилл

    Вторник, 16 Февраль 2016 13:21

    При выполнении проверки
    ls -l anonymous/
    получаю вывод только
    total 0

    и файлы записывать не дает

  • Владимир Драч

    написал Владимир Драч

    Среда, 17 Февраль 2016 23:02

    Смотрите, что с правами не так.

  • Пётр

    написал Пётр

    Среда, 07 Декабрь 2016 12:34

    Здравствуйте!
    А что может быть, если все сделал по инструкции, но машины в домене могут зайти только по IP адресу (по netbios имени centos - не видит)?

  • Владимир Драч

    написал Владимир Драч

    Среда, 07 Декабрь 2016 23:31

    Добрый день!
    Скорее всего закрыты порты в iptables. Проверьте порты 137..139, должны быть - accept.
    Для тестов просто откройте и tcp, и udp: 135, 137, 138, 139, 445.

  • Сергей

    написал Сергей

    Суббота, 17 Июнь 2017 15:57

    Большое спасибо, пожалуй самая толковая инструкция!

  • Владимир Драч

    написал Владимир Драч

    Среда, 06 Декабрь 2017 13:23

    Сергей, благодарю за добрые слова!

  • Kirill Zotov

    написал Kirill Zotov

    Среда, 30 Май 2018 08:37

    А разве так можно? В 2018-м живемс...

  • krasnov

    написал krasnov

    Пятница, 22 Июнь 2018 19:53

    Толковый мануал, толковые комментарии)

Оставить комментарий

Ваше мнение очень важно для нас! Обязательно выскажите Ваши мысли, пожелания и критику! Не стесняйтесь задавать вопросы. Скорее всего, ответ появится уже через 2-3 дня. Спасибо заранее.

Другие материалы в этой категории:

Go to top