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

Быстрая и простая настройка samba

Иногда нужно очень быстро на сервере настроить файловую шару и открыть на нее доступ. При этом нет необходимости городить какие-то сложные конфигурации, права доступа или что-то еще. Нужен просто оперативный доступ к информации без лишних вопросов.

Онлайн-курс "Базы данных" – для разработчиков, администраторов СУБД и всех, кто стремится повысить профессиональный уровень, научиться проектировать базы данных и создавать оптимальную структуру их хранения (PostgreSQL, MySQL, Redis, MongoDB, Cassandra и т. д.) Подробности по .

Мне, к примеру, недавно подобное понадобилось, чтобы открыть доступ к резервным копиям, которые хранились на сервере. Самому разбираться и искать информацию не хотелось, нужно было быстро дать человеку доступ на чтение, чтобы он сам нашел все, что ему нужно.

Я не буду специально оперировать версиями операционных систем. У самбы конфиги одинаковые почти везде, где мне приходилось с ними работать, тем более в самых простых конфигурациях.

Итак, устанавливаем самбу любым подходящим способом для вашей операционной системы. Конфигурации справедливы для 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. А часто сложнее и не надо. Для какой-нибудь файловой помойки подойдет самый последний вариант.

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

Онлайн курс "Data Engineer"

Онлайн-курс Data Engineer – для разработчиков, администраторов СУБД и всех, кто стремится повысить профессиональный уровень, освоить новые инструменты и заниматься интересными задачами в сфере работы с большими данными. Курс не для новичков – нужно пройти вступительный тест. Выпускники курса смогут:
  • разворачивать, налаживать и оптимизировать инструменты обработки данных;
  • адаптировать датасеты для дальнейшей работы и аналитики;
  • создавать сервисы, которые используют результаты обработки больших объемов данных;
  • отвечать за архитектуру данных в компании.
Проверьте себя на вступительном тесте и смотрите программу детальнее по .
Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

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

  1. Владимир

    День добрый!
    Увидел Вашу статью, в частности: "нужно было быстро дать человеку доступ на чтение" - обрадовался что нашел что искал, но прочитав ее расстроился - в описанных способах не увидел как сделать ограничение "только чтение". У меня похожая необходимость - сервер на линуксе делает бакапы в папку и мне нужно эту папку расшарить в сеть, но открыть ее только на чтение (что бы никто не мог удалить что либо). Я так понимаю что нужно вместо маски 0777 задать другую, но какую именно я не могу найти (я не очень силен в линуксе). Вы можете мне помочь?

    • Права доступа очень быстро можно установить не через настройку самбы, а на самих файлах, как Вы верно упомянули. Надо добавить пользователя и группу, как написано в статье. И дать права доступа для этого пользователя на файл в режиме чтения.

      Например, как у меня в статье, есть пользователь share-user, состоящий в группе users. Вам нужно владельцем файлов сделать, к примеру, root, а группу - users. И права сделать на чтение и запись для root, а для группы users только на чтение. Это маска 0640 или 0644 (доступ на чтение для всех).

      • Владимир

        Изменил конфиг самбы:
        [backup_mirror]
        comment = backup_mirror
        path = /1c-mirror/backup
        create mode = 0644
        directory mask = 0644
        available = yes
        browseable = yes
        public = yes
        writeable = yes
        [backup]
        comment = backup
        path = /backupssd/backup
        create mode = 0644
        directory mask = 0644
        available = yes
        browseable = yes
        public = yes
        writeable = yes

        перезапустил службу.
        но что то мне это не придало счастья. могу со своего компа в сети и удалять файл из директории и копировать в директорию.

  2. Добрый день! Подскажите, пожалуйста, как подключить samba из вне.
    По телефону я могу подключиться. А вот через Windows 7 - 10 не получается. Ввожу IP(который выделил провайдер) зайти не могу "Не найден путь". Еще раз повторюсь через телефон заходит по IP, который выделил провайдер. Антивирусы все выключил. SMB 1.0 включил. Порты на роутаре пробросил 137,138,139,445.

    В Локальной сети все работает нормально.

    [Общая папка]
    path = /share1
    valid users = @home15
    force group = home15
    create mask = 0660
    directory mask = 0771
    writable = yes
    browseable = yes

  3. # /etc/fstab
    //10.10.1.3/share /home/user/share cifs rw,nofail,noauto,users,x-systemd.automount,x-systemd.idle-timeout=120min,user=usersmb,pass=share,uid=user,gid=users

    авто монтирование шары при загрузке, может кому-то будет полезно

    • А что будет в момент загрузки сервера, если сетевая шара недоступна? Он нормально загрузится? Никогда не проверял, но на всякий случай всегда монтировал шары скриптами уже после загрузки системы.

  4. Аноним

    Смутили параметры browseable и browsable, man прояснил, это синонимы.

  5. Вячеслав

    Не подскажите почему после установки и запуска службы пишет
    янв 28 18:46:35 fileserver smbd[10027]: [2020/01/28 18:46:35.513944, 0] ../lib/util/becom...dy)
    янв 28 18:46:35 fileserver smbd[10027]: daemon_ready: STATUS=daemon 'smbd' finished star...ons

  6. kolbaser2010

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

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

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

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

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

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

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

  9. Сергей

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

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

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

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

  11. Дмитрий

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

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

    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:/#

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

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

      • Евгений

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

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

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

  15. Птенчики_в_гнезде

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

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

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

  16. Андрей

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

  17. Андрей

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

  18. Андрей

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

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

Ваш адрес email не будет опубликован.

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