Настройка Samba в CentOS 7

В этой статье мы рассмотрим установку и настройку Samba в CentOS 7 в качестве standalone-сервера как для анонимного доступа, так и с требованием аутентификации.
Для начала, нам потребуется ее установить:

yum install samba samba-client samba-common

Анонимный доступ

Файл конфигурации samba находится в /etc/samba/smb.conf
Посмотрим, из чего он состоит.
Первый его раздел — это [global]
Как и намекает его название, он содержит глобальные настройки samba.
Мы не будем здесь разбирать функцию печати, а сосредоточимся на параметрах, имеющих отношение к общим папкам. Что мы здесь можем настроить:

workgroup — имя рабочей группы, к котоой принадлежит наш сервер.
server string — описание сервера
netbios name — netbios-имя сервера
interfaces — интерфейсы, через которые мы сможем подключиться (не следует исключать интерфейс localhost — lo)
hosts allow — хосты, которым будет разрешен доступ
hosts deny — запрещенные хосты
log file — размещение логов
max log size — максимальный размер файла (в KB), после чео будет создан новый
security — метод проверки подлинности пользователей.
В данный момент доступна только опция «user». Использовавшиеся ранее «share» и «server» более не поддерживаются.
passdb backend — поддерживаются варианты «tdbsam» и «ldapsam»
map to guest — когда кто-либо подключается к общим папкам, то CentOS пытается его аутентифицировать прозрачно, то есть используя учетные данные, известные операционной системе, откуда он подключается. Если такой пользователь есть и пароль совпадает, то подключение произойдет успешно. Если пользователь есть, но пароль не совпадает, будет выведено диалоговое окно с предложением аутентифицироваться. Если же пользователь с таким имене операцонной системе файлового сервера не известен, то она предоставит гостевой доступ. Значение этого параметра «map to guest = bad user» означает, что доступ будет предоставлен от имени пользователя nobody.
Если очень нужно, чтобы с гостевым доступом ассоциировался другой аккаунт, можно добавить, например, следующий параметр:
guest account = root

Секция глобальных настроек, включающая вышеописанные параметры, может выглядеть так:

[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = centos
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
hosts allow = 127. 192.168.12. 192.168.13.
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam
map to guest = bad user

Теперь перейдем к настройке общей папки.
Для начала мы ее создадим.

mkdir /ashare

Теперь добавим требуемую конфигурацию в smb.conf
Например, так:

[ashare]
comment = Share with anonymous access
path = /ashare
browsable = yes
writable = yes
read only = no
guest ok = yes

Что мы тут указали:
comment — описание общей папки
browsable — «yes» — означает, что общая папка не будет скрытой и пользователи смогут увидеть ее среди доступных общих папок.
writable — общая папка папка доступна для записи
read only — writable наоборот
guest ok — разрешен ли гостевой доступ
Кроме того, мы можем указать параметры force user и force group для того, чтобы принудительно указывать в качестве владельца созданных в папке файлов нужного пользователя и группу. Это может пригодится при разрешении анонимного доступа к папке.

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

[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = centos
security = user
passdb backend = tdbsam
map to guest = bad user

[ashare]
comment = Share with anonymous access
path = /ashare
browsable = yes
writable = yes
guest ok = yes

Проверить правильность файла конфигурации можно командой testparm.

Теперь отвлечемся от непостредственно от файла конфигурации.
Скорее всего у нас включен firewall, и его конфигурация по умолчанию не предусматривает подключения к общим папкам. Нам нужно это поправить.
Сделать мы это может следующим образом:

firewall-cmd --add-service samba
firewall-cmd --add-service samba --permanent

Первая команда меняет текущую конфигурацию, вторая, отличающаяся только параметром —permanent записывает изменение в постоянную конфигурацию.

Кроме сетевого экрана, скорее всего, против предоставления доступа к папке будет и SELinux. Для того, чтобы он изменил свое мнение, изменим контекст безопасности для публикуемой папки:

chcon -t samba_share_t /ashare

Далее включаем службы samba.

systemctl enable smb.sevice
systemctl enable nmb.sevice
systemctl start smb.sevice
systemctl start nmb.sevice

Параметр enable добавляет службы к списку загрузки при старте операционной системы, параметр start, как можно догадаться, их запускает.

Проверить результат выполнения предшествующих команд можно, запустив

systemctl list-units

Теперь, если мы попробуем зайти в общую папку, то нас, вероятнее всего, пустят. Однако создать в ней что-нибудь у нас не получится. Связано это с правами доступа к самой папке.
Если ввести команду:

ls -l /

то в строке, соответствующей нашей папке, мы увидим что-то вроде:
drwxr-xr-x 2 root root 6 Feb 4 12:30 ashare

Первый столбец сообщает нам о следующем:
d — directory, то есть это папка, с этим мы спорить не будем.
rwx — права доступа для владельца папки, а именно — read, write, execute. Владелец указан в третьей колонке, то есть root.
r-x — права доступа для группы-владельца — read, execute. Группа указывается в четвертой колонке — root.
r-x — права для всех остальных пользователей, не являющихся владельцем, и не входящим в группу папки.

Как мы вспоминали ранее, при подключении пользователя, для которого не существует учетной записи на сервере общих папок, он получет доступ от имени пользователя nobody. Тут мы можем поступить двумя способами.
Назначить пользователя и группу nobody владельцем и группой для папки /ashare

chown -R nobody:nobody /ashare

Либо задать права доступа для всех пользователей

chmod -R 777 /ashare

Где 7 — это 4 (read) + 2 (write) + 1 (execute).
Каждая 7 соответствует павам доступа владельца, группы-владельца и всех остальных пользователей, соответственно.

Доступ с аутентификацией

Например, мы решили создать общую папку для пользователей root и some_other_user.
Причем второго пользователя еще нет и нам нужно будет его создать.

Но начнем с создания папки:

mkdir /share


В файл smb.conf добавим раздел для новой общей папки:


[share]
comment = Share with authenticated access
path = /share
browsable = yes
writable = yes
guest ok = no
valid users = root some_other_user

После внесения изменений в smb.conf снова проверим его правильность командой testparm.

Как и в первом случае, изменим контекст безопасности для папки:

chcon -t samba_share_t /share

Теперь перейдем к созданию пользователя some_other_user:

useradd some_other_user

Зададим для него some_other_password:

passwd some_other_user

Также нам нужно задать пароль для доступа к общим папкам, это делается отдельной командой:

smbpasswd -a some_other_user

Параметр -a указывает, что пароль задается для нового пользователя. Без него команда попыталась бы изменить пароль для уже существующего пользователя.

Теперь пользователь some_other_user может обращаться к папке /share, однако только для чтения. Давайте в этот раз поступим следующим образом: создадим группу, добавим туда пользователя some_other_user и уже для группы зададим права доступа на /share.

Создадим группу share_access

groupadd share_access

Проверить существование группы можно:

cat /etc/group

Проверить существование пользователя:

cat /etc/passwd

Добавим пользователя some_other_user в группу share_access

usermod -a -G share_access some_other_user

Проверить, что добавление удалось:

groups some_other_user

Теперь укажем группу share_access в качестве владельца папки /share

chown -R :share_access /share

И дадим ей право на запись:

chmod -R 775 /share

Теперь, если нам в последующем потребуется предоставить доступ к папке /share кому-нибудь еще, мы можем добавить этих пользователей в группу share_access.
Однако, кроме этого нам будет нужно добавить их в значение параметра valid users в файле smb.conf.

С другой стороны, мы можем уже сейчас вместо отдельных пользователей в smb.conf указать группу. Например так:

valid users = root @share_access

При этом весь файл smb.conf может выглядеть так:

[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = centos
security = user
passdb backend = tdbsam
map to guest = bad user

[ashare]
comment = Share with anonymous access
path = /ashare
browsable = yes
writable = yes
guest ok = yes

[share]
comment = Share with authenticated access
path = /share
browsable = yes
writable = yes
guest ok = no
valid users = root @share_access

Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s