Samba 4 — доступ к публичным шарам без логина/пароля — blog [dot] hook
Данный пост был опубликован более года назад и, возможно, уже утратил свою былую актуальность. Но это не точно.
Наткнулся на одну интересную особенность Samba 4, связанную с анонимным доступом к публичным шарам. Делается это для того, чтоб пользователи могли спокойно заходить на файл-сервер и не запариваться с вводом, например, пользователя guest
и пустого пароля (и в то же время существовали шары, доступ к которым возможен только после ввода пары логин:пароль
).
Ранее (до третьей версии включительно
) для реализации данной задачи мы пользовались указанием в секции [global]
директивы security = share
, а в секции самой шары — просто guest ok = yes
и всё работало как надо. Теперь же надо делать чуть-чуть иначе, а именно:
Необходимо использовать
директивы security = user
и map to guest = Bad Password
в секции [global]
, а так-же указывать guest ok = yes
в секции шары.
Дело в том, что директивы security = share|server
считаются устаревшими, именно поэтому нам и остается пользоваться security = user
. Для отделения
же пользователя от гостя применяется новая директива map to guest = Bad Password
(смысл которой заключается в том, что если пользователь Samba существует в системе и введен неверный пароль, то вход этого пользователя отклоняется, если пользователя не существует, тогда ему присваивается статус гость
). Ну а для того чтобы открыть доступ к общему ресурсу для гостей осталась старая добрая директива guest ok = yes
которую необходимо указывать непосредственно в секции шары.
Ниже полный пример настройки моей самбы:
[global] realm = WORKGROUP server string = Your server description # Setup charsets dos charset = cp1251 unix charset = utf8 # Disable printers load printers = No show add printer wizard = no printcap name = /dev/null disable spoolss = yes # Setup logging log file = /var/log/samba/smbd.log max log size = 50 max xmit = 65536 debug level = 1 # Setup daemon settings domain master = No domain master = No preferred master = Yes socket options = IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=65536 SO_RCVBUF=65536 SO_KEEPALIVE os level = 65 use sendfile = Yes dns proxy = No dont descend = /proc,/dev,/etc deadtime = 15 # Enable synlinks unix extensions = No wide links = yes follow symlinks = yes # Securtity settings security = user map to guest = Bad Password guest account = nobody auth methods = guest, sam_ignoredomain create mask = 0664 directory mask = 0775 hide dot files = yes [public] comment = Public share path = /shares/public create mask = 0666 directory mask = 0775 read only = No guest ok = Yes [user1] path = /shares/user1 valid users = user1 write list = user1 [user2] path = /shares/user2 valid users = user2 write list = user2
Для того, чтоб добавить в самбу пользователей можно воспользоваться smbpasswd
:
$ smbpasswd -a user1
А для проверки корректности конфигов самбы:
$ testparm -s
Все манипуляции проверялись на:
$ yum list samba | grep samba samba.x86_64 4.1.12-23.el7_1 @updates
Быстрая и простая настройка samba
Иногда нужно очень быстро на сервере настроить файловую шару и открыть на нее доступ. При этом нет необходимости городить какие-то сложные конфигурации, права доступа или что-то еще. Нужен просто оперативный доступ к информации без лишних вопросов.
. Позволит системным администраторам упорядочить и восполнить пробелы в знаниях. Цена очень доступная, есть бесплатный доступ. Все подробности по . Можно пройти тест на знание сетей, бесплатно и без регистрации.
Мне, к примеру, недавно подобное понадобилось, чтобы открыть доступ к резервным копиям, которые хранились на сервере. Самому разбираться и искать информацию не хотелось, нужно было быстро дать человеку доступ на чтение, чтобы он сам нашел все, что ему нужно.
Я не буду специально оперировать версиями операционных систем. У самбы конфиги одинаковые почти везде, где мне приходилось с ними работать, тем более в самых простых конфигурациях.
Итак, устанавливаем самбу любым подходящим способом для вашей операционной системы. Конфигурации справедливы для 3-й версии самбы. Дальше решаем, что нам нужно:
- доступ по пользователю и паролю,
- доступ по ip адресу,
- доступ всем подряд без ограничений.
В зависимости от этого настройки будут немного разные.
Для доступа по паролю
рисуем такой конфиг:
[global] security = user passdb backend = tdbsam workgroup = MYGROUP server string = Samba [share] path = /mnt/shara valid users = @users force group = users create mask = 0660 directory mask = 0771 writable = yes browseable = yes
Перезапускаем самбу. Дальше добавляем пользователя в систему примерно так:
# useradd share-user -M -G users -s /sbin/nologin
Импортируем этого пользователя в самбу и задаем пароль:
# smbpasswd -a share-user
И пробуем зайти на шару по адресу:
\ip-сервераshare
Чтоб организовать доступ в зависимости от ip адреса
, делаем такие настройки в smb.conf:
[global] security = share workgroup = MYGROUP server string = Samba map to guest = bad user [share] path = /mnt/files browsable = yes writable = yes guest ok = yes read only = no hosts allow = 192.168.0.171
В данном случае полный доступ будет у адреса 192.168.0.171. Чтобы добавить всю подсеть, то указать нужно следующее:
hosts allow = 192.168.0.
Комбинировать можно разные подсети и адреса, разделяя их пробелами. Для того, чтобы отключить доступ каким-то отдельным адресам из разрешенной подсети, можно сделать вот так:
hosts allow = 192.168.0. except 192.168.0.15
Доступ будет разрешен всей подсети 192.168.0.0/24, кроме адреса 192.168.0.15.
Делаем перезапуск самбы и проверяем.
Если у вас установлена samba 4, то эта конфигурация не заработает и вы получите ошибку:
WARNING: Ignoring invalid value 'share' for parameter 'security'
Чтобы доступ по ip нормально заработал, вам необходимо внести следующие изменения в приведенный выше конфиг:
security = user map to guest = Bad Password
Остальные параметры оставляете те же. После этого доступ по ip будет работать и на 4-й версии самбы.
Если доступ будет предоставлен всем без ограничений
, то простейшая конфигурация самбы будет такой:
[global] security = user workgroup = MYGROUP server string = Samba guest account = nobody map to guest = Bad User [share] path = /mnt/files browseable = Yes guest ok = Yes writeable = Yes public = yes
Не забываем сделать права для всех на папку:
# chmod 0777 /mnt/files
Перезапускаем самбу и пробуем зайти. Должно пустить без лишних вопросов.
Вот так буквально за 5 минут можно организовать простейший файловый сервер с помощью samba. А часто сложнее и не надо. Для какой-нибудь файловой помойки подойдет самый последний вариант.
Для более сложных конфигураций у меня есть отдельные статьи:
Онлайн курс Основы сетевых технологий
Теоретический курс с самыми базовыми знаниями по сетям
. Курс подходит и начинающим, и людям с опытом. Практикующим системным администраторам курс поможет упорядочить знания и восполнить пробелы. А те, кто только входит в профессию, получат на курсе базовые знания и навыки, без воды и избыточной теории. После обучения вы сможете ответить на вопросы:
- На каком уровне модели OSI могут работать коммутаторы;
- Как лучше организовать работу сети организации с множеством отделов;
- Для чего и как использовать технологию VLAN;
- Для чего сервера стоит выносить в DMZ;
- Как организовать объединение филиалов и удаленный доступ сотрудников по vpn;
- и многое другое.
Уже знаете ответы на вопросы выше? Или сомневаетесь? Попробуйте пройти тест по основам сетевых технологий. Всего 53 вопроса, в один цикл теста входит 10 вопросов в случайном порядке. Поэтому тест можно проходить несколько раз без потери интереса. Бесплатно и без регистрации. Все подробности на странице .
- Настройка samba с интеграцией в домен AD и правами windows acl.
- Логирование операций с файлами.
- Настройка сетевой корзины в samba.