Linux samba требует пароль

Обновлено: 07.07.2024

Samba позволяет настроить файловое хранилище различных масштабов — от малых офисов для крупных организаций. В данной инструкции мы рассмотрим процесс настройки файлового сервера. Сначала мы выполним установку и базовую настройку с предоставлением гостевого доступа. После будет приведены примеры разграничения доступа по пользователям, группам и пользователям Active Directory.

Подготовка сервера

1. Время

Для корректного отображения дат, необходимо позаботиться о синхронизации времени. Для этого будем использовать демон chrony. Установим его:

apt-get install chrony

Разрешим автозапуск сервиса:

systemctl enable chrony

2. Брандмауэр

По умолчанию, в системах на базе Debian брандмауэр разрешает все соединения. Но если в нашем случае мы используем брандмауэр, необходимо открыть порты:

iptables -I INPUT -p tcp --dport 445 -j ACCEPT

iptables -I INPUT -p udp --dport 137:138 -j ACCEPT

iptables -I INPUT -p tcp --dport 139 -j ACCEPT

* где порт 445 используется для samba, а порты 137, 138 и 139 — для работы NetBIOS (использование имени компьютера для доступа).

apt-get install iptables-persistent

Установка и запуск Samba

Установка выполняется из репозитория одной командой:

apt-get install samba

Разрешаем автостарт сервиса:

systemctl enable smbd

И проверим, что сервис запустился:

systemctl status smbd

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

* в данном примере мы подключаемся к серверу Samba с IP-адресом 192.168.1.15.

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

Создание первой шары и предоставление к ней гостевого доступа (анонимного)

Разберем самый простой пример предоставления доступа к папке — анонимный доступ всем пользователям без запроса пароля.

Открываем на редактирование конфигурационный файл samba:

И добавляем настройку для общей папки:

[Общая папка]
comment = Public Folder
path = /data/public
public = yes
writable = yes
read only = no
guest ok = yes
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777

  • [Общая папка] — имя общей папки, которое увидят пользователи, подключившись к серверу.
  • comment — свой комментарий для удобства.
  • path — путь на сервере, где будут храниться данные.
  • public — для общего доступа. Установите в yes, если хотите, чтобы все могли работать с ресурсом.
  • writable — разрешает запись в сетевую папку.
  • read only — только для чтения. Установите no, если у пользователей должна быть возможность создавать папки и файлы.
  • guest ok — разрешает доступ к папке гостевой учетной записи.
  • create mask, directory mask, force create mode, force directory mode — при создании новой папки или файла назначаются указанные права. В нашем примере права будут полные.

Создаем каталог на сервере и назначим права:

mkdir -p /data/public

chmod 777 /data/public

Применяем настройки samba, перезагрузив сервис:

systemctl restart smbd

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

Доступ к папке по логину и паролю

Теперь создадим каталог, в который вход будет разрешен только авторизованным пользователям.

Открываем конфигурационный файл samba:

Добавляем настройку для новой папки:

[Папка сотрудников]
comment = Staff Folder
path = /data/staff
public = no
writable = yes
read only = no
guest ok = no
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777

* эти настройки, во многом, похожи на те, что использовались в примере выше. Вот основные различия:

  • path = /data/staff — используем новый путь до папки.
  • public = no — запрещаем публичный доступ.
  • guest ok = no — не разрешаем гостевое подключение.

Создаем каталог для новой папки:

Задаем права на созданный каталог:

chmod 777 /data/staff

Создаем пользователя в системе Linux:

* где staff1 — имя пользователя.

Задаем пароль для пользователя:

Теперь создадим пользователя в samba:

smbpasswd -a staff1

systemctl restart smbd

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

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

Доступ к папке определенным пользователям и группам

Теперь создадим папку, доступ к которой будут иметь ограниченное количество пользователей.

Открываем конфигурационный файл samba:

Добавляем настройку для новой папки:

[Приватная папка]
comment = Private Folder
path = /data/private
public = no
writable = no
read only = yes
guest ok = no
valid users = admin, staff2, staff3, @privateusers
write list = admin, staff2
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777
inherit owner = yes

* стоит обратить внимание на следующие настройки:

  • path = /data/private — используем новый путь до папки.
  • writable = no и read only = yes — в данном примере мы разрешим запись в каталог только некоторым пользователям. Поэтому общие настройки, разрешающие запись в папку, должны быть запрещены.
  • valid users — список пользователей, которым разрешено подключаться к каталогу. В данном примере разрешения работают для пользователей admin, staff2 и staff3, а также для всех, кто входим в группу privateusers.
  • write list — список пользователей, которые имеют доступ к папке на чтение и запись. В данном примере мы разрешаем это только для пользователей admin и staff2.
  • inherit owner — опция позволяем включить наследование владельца при создании папок и файлов.

* если мы хотим, чтобы доступ к каталогу был полный у определенных пользователей (без разделения на тех, кто может только читать и тех, кто может также писать в папку), то опцию write list можно не указывать, а опции writable и read only оставить как в примерах выше.

Создаем каталог для новой папки:

Задаем права на созданный каталог:

chmod 777 /data/private

Для применения настроек перезапускаем samba:

systemctl restart smbd

Создать группу пользователей можно командой:

Добавить ранее созданного пользователя в эту группу:

usermod -a -G privateusers staff1

Проверяем возможность работы с новым каталогом.

Сетевая корзина

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

Открываем конфигурационный файл:

[Recycle]
comment = Snap Directories
path = /data/recycle
public = yes
browseable = yes
writable = yes
vfs objects = recycle
recycle:repository = .recycle/%U
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:maxsize = 0
recycle:exclude = *.tmp,

  • vfs objects = recycle — использовать подсистему recycle.
  • recycle:repository — где хранить удаленные объекты. В данном примере удаленные файлы попадут в скрытый каталог .recycle к котором создастся каталог с именем пользователя, удалившего файл или папку.
  • recycle:keeptree — удалять объекты с сохранение дерева каталогов.
  • recycle:touch — изменить ли дату изменения файла при его перемещении в корзину.
  • recycle:versions — при удалении файлов с совпадающими именами, добавлять номер версии.
  • recycle:maxsize — не помещать в корзину файлы, размер которых больше заданного параметра (в байтах). В данном примере, помещать файлы любого размера.
  • recycle:exclude — исключить файлы.
  • recycle:exclude_dir — исключить каталог.

Создаем каталог и задаем права:

chmod 777 /data/recycle

systemctl restart smbd

Пробуем зайти в сетевой каталог Recycle и создать, а после удалить файл. Он должен оказаться к скрытой папке .recycle.

Для автоматической чистки сетевой корзины можно создать скрипт:

/usr/bin/find $recyclePath -name "*" -ctime +$maxStoreDays -exec rm <> \;

* в данном скрипте мы ищем все файлы в каталоге /data/recycle/.recycle, которые старше 30 дней и удаляем их.

Разрешаем запуск скрипта:

chmod +x /scripts/cleanrecycle.sh

Создаем задание в планировщике:

0 5 * * * /scripts/cleanrecycle.sh

* в данном примере мы будем запускать скрипт по очистке сетевой корзины каждый день в 05:00.

Подключение к шаре

Теперь разберем примеры подключения к нашим шарам из разных систем.

Windows

Для разового подключения можно использовать проводник, прописав в нем адрес сервера через косые линии:

Для подключения сетевого диска, который будет автоматически создаваться при запуске системы, в проводнике сверху нажимаем Простой доступ - Подключить как диск:

В открывшемся окне прописываем путь до сетевой папки и выбираем имя диска:

Сетевой диск настроен.

Но мы может сделать те же действия из командной строки:

net use x: \\samba.dmosk.local\AD ACL /persistent:yes

* где x: — имя сетевого диска; \\samba.dmosk.local\AD ACL — путь до сетевого каталога; persistent:yes — указывает на то, что нужно восстанавливать данный диск каждый раз при входе в систему.

Linux

Монтирование

В Linux мы можем монтировать удаленный каталог с помощью команды mount, например:

mount -t cifs "//192.168.1.15/ad" /mnt -o user=dmosk

* где 192.168.1.15 — IP-адрес сервера; mnt — каталог, куда монтируем сетевую шару; dmosk — пользователь, под которым выполняем подключение к сетевому каталогу.
** в систему должен быть установлен пакет cifs-utils.

Подробнее, процесс монтирования описан в инструкции Как в Linux монтировать шару CIFS.

SMB Browser

Также мы можем увидеть содержимое удаленных папок на samba при помощи клиента smb. Для начала установим данного клиента:

а) на Red Hat / CentOS / Fedora:

yum install samba-client

б) на Debian / Ubuntu / Mint:

apt-get install samba-client

После вводим команду:

smbclient -L 192.168.1.15 -U staff@dmosk.local

* где 192.168.1.15 — сервер samba, к которому мы пытаемся подключиться; staff@dmosk.local — учетная запись, под которой выполняется подключение.

. мы получим список каталогов, которые расшарены на сервере.

Также мы можем подключиться к конкретной папке, например:

smbclient \\\\192.168.1.15\\ad -U staff@dmosk.local

Мы подключимся клиентом samba — можно выполнить запрос на показ содержимого:

Или полный список возможных команд:

Некоторые опции Samba

Рассмотрим некоторые полезные опции, которые могут пригодится при настройке Samba.

1. hosts allow

Параметр задает список разрешенных хостов или сетей, с которых можно подключаться к серверу. Если его прописать в секцию с настройкой шары, то он будет действовать только для нее, если прописать в [global], то для всех общих папок.

Пример использования параметра.

hosts allow = comp1, 192.168.1., 192.168.160.0/255.255.252.0

* в нашем примере мы разрешим доступ только для компьютера comp1, компьютеров из сетей 192.168.1.0/24 и 192.168.160.0/22.

2. hosts deny

Параметр аналогичный hosts allow, только он наоборот — запрещает доступ для хостов и сетей. Например:

hosts deny = comp2, 192.168.2., 192.168.164.0/255.255.252.0

hosts deny = ALL EXCEPT 192.168.3.

3. interfaces

По умолчанию samba использует все сетевые интерфейсы, кроме локальной петли (127.0.0.1). Параметр interfaces позволит указать, на каком сетевом адаптере файловый сервер должен принимать запросы. Пример:

interfaces = ens32 192.168.1.15/24 192.168.2.15/255.255.255.0

4. Force User/Group

Опции force user и force group позволяют задать пользователя и группу, от которых будет работать подключение пользователя к samba. Параметр может оказаться полезным для создания шары из каталога с уже назначенным владельцем, которого мы не хотим менять.

Прописывается для шары:

force user = apache
force group = apache

* данная настройка позволит подключаться к шаре под пользователем apache.

Даже небольшая сумма может помочь написанию новых статей :)

Или поделитесь ссылкой на эту статью со своими друзьями.

В этой статье будет рассмотрен наиболее простой случай настройки доступа к Linux файлам. Когда нужно предоставить анонимный доступ к общим ресурсам Linux. Это распространенная ситуация в домашних сетях и в сети небольшого офиса. Расшарить папку Linux по сети можно используя несколько протоколов. Но чаще всего это делается через сервер Samba с использованием протокола SMB (CIFS). Именно этот способ и будет описан в статье.

Частое использование Samba и протокола SMB связано с тем, что обычно нужно на Linux расшарить папку для Windows. А протокол SMB (CIFS) используется в операционных системах Windows для организации общего доступа к файлам и принтерам. Компьютер под управлением Linux, на котором установлен и настроен сервер Samba, в локальной сети выглядит точно так же как и компьютер под управлением Windows.

Итак, что, и в какой последовательности необходимо сделать для того чтобы в Linux предоставить сетевой доступ к папке и файлам?

Установка Samba

Это первый шаг. В некоторых дистрибутивах установку Samba можно указать в параметрах установщика, как например Alt Linux или Rosa Linux. Но в большинстве дистрибутивов Samba устанавливается отдельно, при необходимости. Например в Ubuntu установка Samba выполняется автоматически, если вы открываете общий доступ к папке через файловый менеджер Наутилус.

В общем случае установка Samba очень проста - обычно установочный пакет так и называется - samba. В каждом дистрибутиве Linux есть программа для управления программными пакетами. Которая показывает установленные пакеты и позволяет устанавливать новые пакеты. Например в дистрибутиве Ubuntu это три графические программы - Gdebi, Synaptic и Software-center. И две консольные - apt и dpkg.

Итак, шаг первый - проверить установлен ли сервер Samba и если нет тогда установить его.

Настройка доступа в Samba без пароля

Шаг второй. После установки сервера Samba необходимо его настроить. В самом простейшем случае нужно настроить две вещи:

  1. Указать папку, которая будет доступна по сети.
  2. Указать способ доступа к компьютеру через сеть (способ аутентификации для входа на компьютер через сеть).

С первым пунктом, я думаю, все понятно. Второй пункт чуть сложнее. Samba может предоставлять сетевой доступ к компьютеру Linux либо с авторизацией (с указанием логина и пароля) либо анонимно (без логина и пароля). Как и было написано в начале статьи, я опишу настройку анонимного доступа.

Настроить сервер Samba можно через GUI интерфейс или через непосредственное редактирование файла конфигурации Samba.

Настройка Samba через GUI интерфейс

Чаще всего для этого используется программа system-config-samba. Она есть во всех популярных дистрибутивах Linux. Но не во всех дистрибутивах она устанавливается автоматически (из коробки). Так что нужно проверять ее наличие и устанавливать, если ее нет. Эта программа позволяет не только указать общую папку, но и добавлять Samba-пользователей и управлять некоторыми параметрами сервера Samba.






Параметры, изменяемые через эту программу, записываются в файл глобальной настройки Samba - /etc/samba/smb.conf.

В графической оболочке GNOME есть файловый менеджер Наутилус в котором указать общий доступ к папке можно непосредственно в свойствах этой папки (пакет nautilus-share).


Параметры, изменяемые через файловый менеджер Наутилус, записываются в файл

/.gnome2/nautilus-share-modified-permissions и в папку /var/lib/samba/usershares.

Настройка Samba через файл конфигурации

Файл конфигурации Samba обычно находится в папке /etc/samba и называется smb.conf (полный путь к файлу /etc/samba/smb.conf). Через этот файл можно полностью управлять настройками сервера Samba. Однако редактировать этот файл нужно осторожно.

Samba - настройка доступа без пароля

На самом деле протокол SMB не дает анонимного доступа к файлам и папкам. Он предоставляет два способа авторизации:

  1. Авторизация при сетевом входе на компьютер.
  2. Авторизация при доступе к разделяемому ресурсу (папке, файлу).

Тем не менее, комбинируя параметры Samba и параметры файловой системы можно получить псевдо анонимный доступ - то есть использование сетевых ресурсов без учетной записи пользователя и без пароля.

Если настраивать Самба через файл smb.conf, тогда нужно, в секции [global], указать следующие параметры:

  • security = user
  • map to guest = bad user (или bad password)

В случае значения bad user, при сетевом входе, будет запрошено имя пользователя и пароль. Но их можно указать любые "от фонаря". И тем не менее вход будет выполнен. В случае значения bad password не будет запроса имени пользователя и пароля.

Параметр map to guest указывает Самбе, что всех кто не смог авторизоваться нужно тем не менее впускать в систему, но с правами гостя.

Далее в секции, которая описывает общую папку Linux, нужно указать четыре параметра:

  • [lan]
  • path = /home/user/lan
  • guest ok = yes
  • read only = no
  • create mask = 0777
  • directory mask = 0777

Это пример такой секции в файле smb.conf. Заголовок секции определяет имя папки которое будет видно в сети. Параметр path определяет саму папку в файловой системе Linux. А параметры guest ok и read only разрешают запись в папку и гостевой доступ к папке. И последние параметры, create mask и directory mask, указывают, что все файлы и папки, которые будут там созданы через сеть (сетевыми пользователями) должны получить атрибуты полного доступа в файловой системе Linux.

Последние два параметра очень важны, чтобы у всех сетевых пользователей была возможность изменять файлы в этой сетевой папке Linux. Если не указать параметры create mask и directory mask, тогда новые файлы будут доступны только тем кто войдет в эту папку гостем. А например уже локальный пользователь Linux не сможет их изменять.

Вот минимальная конфигурация Samba для анонимного доступа к файлам Linux.

Разрешения Linux для доступа без пароля

Во-первых нужно установить полные права на папку Linux, которая будет сетевой. Полные права доступа на папку в Linux это разрешение на исполнение и запись для: владельца, группы и всех остальных. В Linux широко используется цифровое сокращение для обозначения прав доступа - полный доступ для папки это 777. Если такие права не установить на папку, тогда сетевые пользователи либо не смогут войти в эту папку, либо не смогут в ней создавать новые файлы или папки.

Установить разрешения на файл (папку) в Linux можно через файловый менеджер (через свойства папки) или в терминале, программой chmod.

Если ограничиться только лишь настройкой Samba и установкой разрешений на папку, тем не менее возможно появление проблем с доступом к отдельным файлам в этой сетевой папке Linux.

  1. если локальный пользователь Linux войдет в эту папку через файловый менеджер и создаст в ней новый файл;
  2. если локальный пользователь Linux скопирует в эту папку файл из другой своей локальной папки.

В обоих случаях новый файл будет недоступен для редактирования сетевыми пользователями. Почему это произойдет? Новый файл получит права доступа Linux 644, то есть полный доступ только для владельца файла. А если файл будет скопирован из другой папки, то он сохранит свои права и после копирования.

Что делать для решения этой проблемы?

Есть разные способы решения. Кто-то советует периодически (например по заданию cron) изменять права всем файлам в папке на 666 (права полного доступ для всех без исключения). Это работает, но на мой взгляд не вариант. Я считаю что такое присвоение прав должно происходит автоматически, без лишних телодвижений.

Другие люди советуют включить ACL на файловой системе Linux и затем указать ACL по умолчанию для сетевой папки (со значением 777).


Это работает, но только наполовину. Если локальный пользователь сам создаст новый файл, этот файл получит атрибуты 666. Но если локальный пользователь скопирует файл из другой папки, то файл сохранит свои старые атрибуты.

Однако есть два способа которые полностью решают проблему.

Первый способ, самый простой.

Локальному пользователю, нужно заходить в сетевую папку тоже через сеть! В этом случае все его операции в папке будут проходить через сервер Samba. А Самба настроена на полный доступ.

Достоинство этого способа в том, что ничего не нужно делать дополнительно. Недостатка два:

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

Второй способ - настройка сетевого доступа через bindfs

Использовать bindfs. Для этого нужно установить этот пакет и затем вручную или автоматически смонтировать сетевую папку через bindfs.

Вот пример автоматического монтирования через fstab:

В примере папка монтируется сама в себя, но можно указать другую точку монтирования. Важно указать параметр монтирования perms=0777 - это полный доступ на все файлы и папки.

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

В этом случае параметры create mask и directory mask в файле smb.conf уже не нужны.

Резюме

Еще раз напоминаю, что это простейшая конфигурация для полностью доверенной локальной сети. В которой не нужны никакие ограничения по доступу к файлам.

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

Настройка доступа без пароля для других ОС

Если вы живете в г. Краснодар и вам необходимо настроить локальную сеть в Linux

Иван Сухов, 2015, 2018 г.

сделал общий доступ для папок, требует пароль, при входе по сети, настройки самбы не работают? подскажите как настроить?

Изображение пользователя DarkneSS.

system-config-samba не отвечает ни через консоль, ни gui. не очень хочется ручками конфиг переписывать. проблема вот в чем доступ вроде бы дал (в свойствах папки) по сети видит, но.
при попытке зайти просит ввести пароль. и не понятно какой? никакой не подходит. да и еще. в свойствах папки при открытии доступа есть крыжик для всех гостей. так он постоянно сбрасывается вроде как я его и не ставил. с кубунтой 10.10 таких проблем не было и конфиг не переписывал. мож я чего не понимаю. кто сталкивался поделитесь опытом!

Ты хоть бы конфиг показал.
А то что-то никак не угадаю что там у тебя.
Есть подозрение на параметр security = user

чего то я походу напартачил, сеть вообще перестала открываться( поставил gadmin) походу своими кривыми ручками накосячил. ((

может кто встречал подробный мануал по gadmin. киньте ссылку плиз.

Ну и нафига такой навороченный конфиг?
И мануал тебе явно не по gadmin нужен.
Читай лучше man smb.conf

ну не я же его писал.

спасибо огромное! я в линуксе недавно еще не совсем понял что к чему, так что звиняте за глупые вопросы!
а как поменять конфиг? кate не дает сохранить, говорит нет прав

Изображение пользователя DarkneSS.

hosts allow = 192.168.0.0/24
я так понимаю это ip которым разрешено , в моем контексте это будет 192.168.137.0/42 ?
а как потом шару добавлять сново в конфиг дописывать? или можно будет в свойствах папки сделать общий доступ?

корпоративная сеть все машины виндовые
у меня на машине стоит 2 системы win7 и kubuntu,
статичные ip адреса,
мне нужно чтобы мои отдельные виндовые папки были в общем полном доступе
я уже мозг сломал как правильно настроить самбу
помогите написать конфиг
мои данные:
рабочая сеть: AIF
ip 192.168.137.16
маска 255.255.255.0
основной шлюз 192.168.137.1

Специально только что проверил на 10.04 и на 11.04. Других дистрибов под руками просто нет.

kate не дает сохранить говорит прав нет, как сделать через консоль?

$sudo nano /etc/samba/smb.conf

спасибо!
hosts allow = 192.168.0.0/24
мне надо здесь ставить свои ip?

Я поставил твой конфиг! старый затер (надо было сделать копию), перестал видеть виндовую сеть напрочь.
а где в конфиге указывается имя машины?

netbios name = alex-desctop
server string = Samba file and print server
Не поверишь. В этом же топике твой конфиг взял.

я ж говорю затер, а в топике конфиг после мытарств по gadmin
как востановить исходник?

sudo aptitude remove samba
sudo aptitude purge samba
А дальше по статье.

пишет aptitude comand not found

Ну вы, блин, даете.
Тогда в начале sudo apt-get install aptitude или сразу sudo apt-get purge samba

PS.: пять лет работы в сапорте дают нечеловеческую выдержку. :)

Изображение пользователя Mike.

возьми за привычку длинные куски конфигов и логов убирать под кат.

как это сделать?

Изображение пользователя Mike.

видишь кнопку с вопросом над полем ввода текста? там есть описание всех остальных кнопок. Говорит ли тебе что-нибудь описание "скрытый" возле одной из кнопок?

ок , спасибо за подсказку!

особенность если шарить папки кубунты то они видны и в них можно заходить все ок. но папки виндовые не хочет открывать . может проблема в монтировке виндовых дисков?

Так. Стоп.
А вот с этого момента попрошу поподробнее.
Виндовые - это на ntfs-разделе?
Если да, то как ты их монтируешь?

именно ntfs разделы и косячат.
в настройке системы - что то вроде управление дисками- перечислены диски , я поставил галочки какие диски монтировать при загрузке системы. Походу графический менеджер как то криво работает, наверное надо через консоль, только не знаю как.
Через дельфина я спокойно захожу на них, без проблем, а вот если заходить через сеть я папку вижу, но при попытке открыть говорит что папка не существует!

В прошлой статье мы выполнили базовую настройку Samba. В результате все пользователи внутри нашей сети получили возможность читать и записывать любые данные в расшаренной папке. В этой статье я расскажу, как сделать директорию доступной (или, наоборот, недоступной) для определенных пользователей или ip-адресов внутри вашей сети. Кроме того, я покажу, как скрыть расшаренную нами папку от посторонних глаз.

О пользователях и паролях в Samba.

В качестве пользователей Samba рассматривает уже существующих пользователей Linux. Такой подход обусловлен тем, что подключившемуся необходимо выполнять какие-то действия — как минимум, чтение и, в некоторых случаях, запись. Чтобы система позволила ему это сделать, его необходимо аутентифицировать.

Пароль, в отличие от имени, необходимо установить отдельно. Делается это с помощью утилиты smbpasswd, с ее же помощью мы включаем (активируем) пользователя:

О пользователях и паролях в Samba

О пользователях и паролях в Samba

Вместо username подставьте имя нужного (и обязательно существующего!) пользователя Linux. В процессе потребуется дважды ввести пароль.

Если у вас или других пользователей есть компьютер с Windows, где имя пользователя отличается от используемого в Linux, очень удобно создать псевдоним (алиас), указав его в файле /etc/samba/smbusers. Эта же возможность пригодится и для того, чтобы позволить разным людям действовать от одного имени.

В Ubuntu 16.04 этот файл изначально отсутствует, но его легко создать самостоятельно. Внутрь нужно поместить строку примерно следующего содержания:

где user — имя пользователя на машине с Ubuntu, того самого, для которого мы только что создали пароль, а admin и vasiliy — псевдонимы, а точнее — имена пользователей на компьютерах с Windows. Теперь при подключении Samba будет знать, что admin — это известный ей пользователь user. Как видите, псевдонимов у каждого пользователя может быть несколько, а разделяются они пробелом.

После сохранения документа отредактируйте smb.conf, добавив в секции [global]:

иначе Samba ничего не узнает о добавленных псевдонимах.

В некоторых старых руководствах указывается, что пароли и имена пользователей Samba хранятся в файле /etc/samba/smbpasswd в зашифрованном виде. Однако на данный момент по умолчанию эти данные находятся в бинарном файле /var/lib/samba/private/passdb.tdb. Способ хранения этих данных определяет параметр passdb backend, расположенный в секции [global] в /etc/samba/smb.conf. Изменение его значения на smbpasswd заставит Samba снова использовать упомянутый выше текстовый файл. Можно также указать значение ldapsam и далее, через пробел - адрес хранилища, к которому нужно подключиться с помощью LDAP.

Создание скрытой сетевой папки с ограниченным доступом.

Перейдем к практической части и создадим сетевую директорию, которая будет доступна только определенным пользователям, а для всех остальных будет оставаться не только недоступной, но и невидимой.

Если папка еще не существует, создайте ее и убедитесь, что она доступна для записи и чтения нужным пользователям. Теперь добавим новый раздел в наш smb.conf с примерно следующим содержанием (не забудьте подставить свои данные):

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

В примере выше есть несколько новых параметров:

  • read list — список пользователей, имеющих доступ только для чтения;
  • write list — пользователи, имеющие право записи;
  • valid users — ограничивает список пользователей, которые имеют право подключаться.

Таким образом, подключиться могут только user1, user2 и user3 и только при условии, что они знают о расшаренной папке, а user1 может только читать. Существует и способ запретить конкретным пользователям подключаться, для этого используйте опцию invalid users.

Если устройства в вашей сети имеют статические ip-адреса, можно указать их как разрешенные c помощью параметра hosts allow, либо, наоборот, запретить, прописав их после hosts deny.

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

Создание скрытой сетевой папки с ограниченным доступом

Создание скрытой сетевой папки с ограниченным доступом

Создание скрытой сетевой папки с ограниченным доступом

В следующей статье разберем графические и веб интерфейсы для управления Samba. Подписывайтесь, чтобы ничего не пропустить.

Читайте также: