Home » Полезные советы » Быстрая и простая настройка samba

Быстрая и простая настройка 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. А часто сложнее и не надо. Для какой-нибудь файловой помойки подойдет самый последний вариант.

Для более сложных конфигураций у меня есть отдельные статьи:

Онлайн курс "DevOps практики и инструменты"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по .
Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Помогла статья? Есть возможность отблагодарить автора

Автор Zerox

Zerox
Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству.

34 комментария

  1. Аватар

    Zerox, спасибо за позновательную статью.
    Есть небольшой вопрос.
    Возможно ли создать пользователя с правами на папку, только запись?
    Что бы он мог туда только дописывать, но удалять или изменять там ни чего не мог.
    Я понимаю, что возможно можно и это будет что-то типо chown 2660 и/или 2220, но у меня почему-то это не работает.
    Не подскажите, что я делаю не так.

  2. Аватар

    Добрій день, немного не штатній вопрос: подскажите, как сделать так, что бі на нашей шаре біли права за запись файлов и папок, но, не біло прав на изменение файлов и удаление?

    Как верно скомбинировать липкий бит и права из конфига самой самбі?

    • Zerox

      Не уверен, что это возможно технически. Можно же залить новый такой же файл с нулевым содержимым, он затрет существующий.

      Как костыльный вариант, можно выставить права на шару 1755 и по крону раз в 5 минут менять владельца файлов на какого-то пользователя, к которому нет доступа у пользователей шары. Таким образом, удалять и изменять файлы старше 5-ти минут пользователи не смогут.

  3. Аватар

    Здравствуй Zerox!
    По поводу hosts allow. В одной подсети все прекрасно работает. Но если добавить другую подсеть, то samba у всех клиентов, видит адрес шлюза подсети, а не ip хостов. Как сделать, чтобы были видны реальные адреса.

    • Zerox

      Это уже вопрос к адресации и роутингу, а не к самбе. Скорее всего она видит адрес только шлюза, потому что сетка за ним ходит к самбе через nat. Здесь на стороне самбы, как я понимаю, ничего не сделать. Либо делайте прямой рутинг без nat, либо меняйте авторизацию.

  4. Аватар

    Здравствуйте. Очень интересная ситуация, если на комп с самбой зайти по имени , то в шару пускает без проблем, а если зайти по ip адресу, то запрашивает логин и пароль

    • Zerox

      Может вы просто сохранили логин с паролем, когда зашли по имени, вот и не спрашивает больше. Вообще, имя и ip адрес это разные сущности. К примеру, kerberos, если не ошибаюсь, вообще не работает с ip адресами.

  5. Аватар

    Доброго времени суток.
    Пытался настроить самбу по Вашей статье.
    Столкнулся с проблемами доступа пользователей к расшареным папкам.
    В какие-то папки пускало в какие-то нет.
    В общем все проблемы я устранил, поэтому хотелось не много дополнить…
    На сколько я понял в centos права на папки самбы читаются только после прав на директорию, собственно дошел до этого сам потом прочитал на каком-то из форумов — это что нужно иметь ввиду новичкам которые трогают первый раз самбу. (т.е. chown -R 777 /data;)
    По статье при добавление пользователя в самбы нужна еще одна команда smbpasswd -e «username» она переводит статус пользователя в enable.
    Собственно как-то так.
    Спасибо за Ваши статьи, очень много полезного из них вынес!

    • Zerox

      Спасибо за дополнения. С правами все так. Если юниксовых прав на директорию нет, то права самбы уже не работают. Но это и в винде примерно так — права на шару отдельно, настройки безопасности файлов и директорий отдельно.

  6. Аватар
    Дмитрий

    Можно ли сделать так — если пользователю известно имя файла , то дать ему скачать это файл? Например \\192.168.0.100\share\имяфигугадаешь.txt

  7. Аватар

    как перезапустить самбу?

    root@pve2:/# systemctl restart samba
    Failed to restart samba.service: Unit samba.service not found.
    root@pve2:/# service samba restart
    Failed to restart samba.service: Unit samba.service not found.
    root@pve2:/# systemctl restart smbd
    Failed to restart smbd.service: Unit smbd.service not found.
    root@pve2:/# /etc/init.d/samba restart
    -bash: /etc/init.d/samba: No such file or directory
    root@pve2:/#

    • Zerox

      Перезапуск самбы:
      systemctl restart smb

      Перечитать конфиг без перезапуска:
      smbd reload

      • Аватар
        Евгений

        root@pve2:/# systemctl restart smb
        Failed to restart smb.service: Unit smb.service not found.
        root@pve2:/#
        Мне кажется она не установлена, но конфиги лежат, странно ))

  8. Аватар

    Добрый день. Почему то конфиг по паролю не пускает, после ввода share-user и пароля выскакивает учетная запись виндовс и предлагает ввести пароль на pc-windows\share-user, что это может быть? остальные конфиги исправно работают.

  9. Аватар

    Просьба подсказать в чем может быть проблема. Очень режится скорость при скачивании файлов но только с Linux , если качать с Винды то скорость 5-6 мегабайт, если с Линукса то 2-3 максимум.

  10. Аватар
    Птенчики_в_гнезде

    Подскажите пожалуйста опции для такой шары: нужно, чтобы у каждого пользователя на сервере samba была своя папка, в которую они могли бы и писать и читать, а другие пользователи этой сети могли бы только читать.

    • Zerox

      Это делается на уровне прав доступа к файлам. Самый простой вариант — создаете системных пользователей, добавляете их в самбу. Делаете для каждого директорию и выставляете соответствующие права — у владельца на запись, у остальных на чтение.

      А вообще, если не очень разбираетесь в самбе, лучше использовать готовый дистрибутив для разворачивания файлового сервера, например OpenMediaVault.

  11. Аватар

    по крайней мере если подключаться с клиентской машины с Windows 10

  12. Аватар

    Не совсем понял. У меня не получается, если в секции global есть параметр passdb backend = tdbsam то и во вторую папку пароль спрашивает

  13. Аватар

    День добрый! Можно ли сделать настройки так, чтобы одна папка share была для всех а вторая например share2 по паролю?

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

Ваш e-mail не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.