Иногда нужно очень быстро на сервере настроить файловую шару и открыть на нее доступ. При этом нет необходимости городить какие-то сложные конфигурации, права доступа или что-то еще. Нужен просто оперативный доступ к информации без лишних вопросов.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Мне, к примеру, недавно подобное понадобилось, чтобы открыть доступ к резервным копиям, которые хранились на сервере. Самому разбираться и искать информацию не хотелось, нужно было быстро дать человеку доступ на чтение, чтобы он сам нашел все, что ему нужно.
Я не буду специально оперировать версиями операционных систем. У самбы конфиги одинаковые почти везде, где мне приходилось с ними работать, тем более в самых простых конфигурациях.
Итак, устанавливаем самбу любым подходящим способом для вашей операционной системы. Конфигурации справедливы для 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. А часто сложнее и не надо. Для какой-нибудь файловой помойки подойдет самый последний вариант.
Для более сложных конфигураций у меня есть отдельные статьи:
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
- Настройка samba с интеграцией в домен AD и правами windows acl.
- Логирование операций с файлами.
- Настройка сетевой корзины в samba.
добрый день! Как настроить samba под следующую задачу? Есть основная папка Share в ней может создавать папки только администратор и будут условно папка1 и папка2 Необходимо сделать так права доступа чтоб один пользователь (пользователи) имели полный доступ только к папке1, но в папке2 могли только читать, а пользователь (пользователи) папки2 имел полный доступ к обоим папкам. Возможно ли такое решение под samba? Заранее благодарен.
Это задача решается в рамках обычных прав unix с использованием групп. Так что да, это можно сделать на samba. Ничего сложного и необычного не вижу. Надо создать пользователей, раскидать их по группам и аккуратно назначить права.
Можете подсказать как назначить "перекрёстные" права в самба? Из информации с просторов интернета я так понял что у каталога может быть только одна группа пользователей. Я начал осваивать линукс недавно и опыта нет. Возможно есть ссылка на ресурс где описан мой случай?
Я не могу раскрыть эту тему в рамках ответа на комментарии. Отмечу, что есть базовые права Unix и есть их расширение в виде списков ACL. В сети легко всё это ищется с примерами. Если базовых прав вам не хватит, то подключайте списки ACL.
Добрый день! С ACL действительно всё получилось, благодарю за подсказку. Samba установленна на Debian 11, виндовс машины работают корректно, как и планировал, но клиенты на астра линукс войти на share не могут так как нет запроса на авторизацию от сервера. Права на доступ 0770 . Подскажите в какую сторону изучать вопрос? Заранее благодарен.
Всё я разобрался. Большое спасибо что помоги.
В чём была проблема на Астре? Может ещё кто-то столкнётся. Я с Астрой почти не знаком, не знаю, что там с сетевыми дисками.
А полностью никак не написать статью? Иначе зачем этот бессмысленный набор конфигов и заверения что эта билеберда заработает))))) Не заработает .
Напишите, а здесь ссылку оставьте. Я почитаю, поучусь статьи писать.
Есть самба, которая пускает в свои папки с определенных локальных адресов, столкнулся с проблемой, если через веб почтовый клиент попытаться прикрепить файл из такой папки, то получишь ошибку, при этом проводник ходит без каких-либо проблем. Получается, что браузер ходит на шару как-то иначе? В логах не нашел конкретики.
Интересная история. А ошибка какого рода появляется? И что за веб клиент? Как-то сомнительно, что он сам ходит на шару, а не через компьютер пользователя. Ещё может быть момент, что при загрузке через клиент авторизация не проходит.
Здравствуйте.
Такая проблема: к samb-е на centos 7 v. 4.10.4 без проблем подключаются любые виндовые машины (win7, win10, xp) и altlinux9 (smb ver. 4.14.6), а к samb-е на centos 6 (ver. 3.6.23) smbclient altlinux 9 (ver. 4.14.6) подключение сбрасывается. Почему?
Надо смотреть логи на наличие ошибок. А так заочно невозможно ответить на этот вопрос.
День добрый!
Увидел Вашу статью, в частности: "нужно было быстро дать человеку доступ на чтение" - обрадовался что нашел что искал, но прочитав ее расстроился - в описанных способах не увидел как сделать ограничение "только чтение". У меня похожая необходимость - сервер на линуксе делает бакапы в папку и мне нужно эту папку расшарить в сеть, но открыть ее только на чтение (что бы никто не мог удалить что либо). Я так понимаю что нужно вместо маски 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
перезапустил службу.
но что то мне это не придало счастья. могу со своего компа в сети и удалять файл из директории и копировать в директорию.
Добрый день! Подскажите, пожалуйста, как подключить 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
А через телефон как заходите?
Через приложение X-plore. Ввёл IP логин и пароль и папка видна и файлы в папке.
# /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
авто монтирование шары при загрузке, может кому-то будет полезно
А что будет в момент загрузки сервера, если сетевая шара недоступна? Он нормально загрузится? Никогда не проверял, но на всякий случай всегда монтировал шары скриптами уже после загрузки системы.
Смутили параметры browseable и browsable, man прояснил, это синонимы.
Не подскажите почему после установки и запуска службы пишет
янв 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
Zerox, спасибо за позновательную статью.
Есть небольшой вопрос.
Возможно ли создать пользователя с правами на папку, только запись?
Что бы он мог туда только дописывать, но удалять или изменять там ни чего не мог.
Я понимаю, что возможно можно и это будет что-то типо chown 2660 и/или 2220, но у меня почему-то это не работает.
Не подскажите, что я делаю не так.
Чуть ниже прочитал комент. Попробую так сделать.
Не помогло.
владелец меняется. а права на запись остаются....
Что за итить колотить....
Добрій день, немного не штатній вопрос: подскажите, как сделать так, что бі на нашей шаре біли права за запись файлов и папок, но, не біло прав на изменение файлов и удаление?
Как верно скомбинировать липкий бит и права из конфига самой самбі?
Не уверен, что это возможно технически. Можно же залить новый такой же файл с нулевым содержимым, он затрет существующий.
Как костыльный вариант, можно выставить права на шару 1755 и по крону раз в 5 минут менять владельца файлов на какого-то пользователя, к которому нет доступа у пользователей шары. Таким образом, удалять и изменять файлы старше 5-ти минут пользователи не смогут.
хороший вариант. а как на счт acl?
топология такова, что у всех файлов шарі владелец - root.
разграничение доступа идет посредством групп.
acl compatibility = auto
сама самба, вроде бі, работает с ACL
Самба работает с acl, но я не вспомню нюансов, можно ли там настроить таким образом права.
Здравствуй Zerox!
По поводу hosts allow. В одной подсети все прекрасно работает. Но если добавить другую подсеть, то samba у всех клиентов, видит адрес шлюза подсети, а не ip хостов. Как сделать, чтобы были видны реальные адреса.
Это уже вопрос к адресации и роутингу, а не к самбе. Скорее всего она видит адрес только шлюза, потому что сетка за ним ходит к самбе через nat. Здесь на стороне самбы, как я понимаю, ничего не сделать. Либо делайте прямой рутинг без nat, либо меняйте авторизацию.
Здравствуйте. Очень интересная ситуация, если на комп с самбой зайти по имени , то в шару пускает без проблем, а если зайти по ip адресу, то запрашивает логин и пароль
Может вы просто сохранили логин с паролем, когда зашли по имени, вот и не спрашивает больше. Вообще, имя и ip адрес это разные сущности. К примеру, kerberos, если не ошибаюсь, вообще не работает с ip адресами.
Доброго времени суток.
Пытался настроить самбу по Вашей статье.
Столкнулся с проблемами доступа пользователей к расшареным папкам.
В какие-то папки пускало в какие-то нет.
В общем все проблемы я устранил, поэтому хотелось не много дополнить...
На сколько я понял в centos права на папки самбы читаются только после прав на директорию, собственно дошел до этого сам потом прочитал на каком-то из форумов - это что нужно иметь ввиду новичкам которые трогают первый раз самбу. (т.е. chown -R 777 /data;)
По статье при добавление пользователя в самбы нужна еще одна команда smbpasswd -e "username" она переводит статус пользователя в enable.
Собственно как-то так.
Спасибо за Ваши статьи, очень много полезного из них вынес!
Спасибо за дополнения. С правами все так. Если юниксовых прав на директорию нет, то права самбы уже не работают. Но это и в винде примерно так - права на шару отдельно, настройки безопасности файлов и директорий отдельно.
Можно ли сделать так - если пользователю известно имя файла , то дать ему скачать это файл? Например \\192.168.0.100\share\имяфигугадаешь.txt
Думаю да, не вижу тут проблем.
как перезапустить самбу?
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:/#
Мне кажется она не установлена, но конфиги лежат, странно ))
Эти команды я взял с рабочего сервера samba из bash_history. Они верные.
Евгений, Вы сами ответили на свой вопрос :) Попробуйте переустановить Самбу.
Добрый день. Почему то конфиг по паролю не пускает, после ввода share-user и пароля выскакивает учетная запись виндовс и предлагает ввести пароль на pc-windows\share-user, что это может быть? остальные конфиги исправно работают.
Просьба подсказать в чем может быть проблема. Очень режится скорость при скачивании файлов но только с Linux , если качать с Винды то скорость 5-6 мегабайт, если с Линукса то 2-3 максимум.
Подскажите пожалуйста опции для такой шары: нужно, чтобы у каждого пользователя на сервере samba была своя папка, в которую они могли бы и писать и читать, а другие пользователи этой сети могли бы только читать.
Это делается на уровне прав доступа к файлам. Самый простой вариант - создаете системных пользователей, добавляете их в самбу. Делаете для каждого директорию и выставляете соответствующие права - у владельца на запись, у остальных на чтение.
А вообще, если не очень разбираетесь в самбе, лучше использовать готовый дистрибутив для разворачивания файлового сервера, например OpenMediaVault.
Спасибо.
по крайней мере если подключаться с клиентской машины с Windows 10
да
Тогда не знаю, чем подсказать, надо проверять.
Не совсем понял. У меня не получается, если в секции global есть параметр passdb backend = tdbsam то и во вторую папку пароль спрашивает
Даже с такими параметрами шары?
browseable = Yes
guest ok = Yes
writeable = Yes
public = yes
День добрый! Можно ли сделать настройки так, чтобы одна папка share была для всех а вторая например share2 по паролю?
Да, можно. Настраивается в каждой шаре отдельно.