Samba разграничение прав пользователей
В предыдущей статье мы связывали файловый сервер Samba с доменом FreeIPA. Мы развернули и настроили доступ на общие файловые ресурсы с авторизацией пользователей как из домена FreeIPA, так и из доверенного домена Active Directory. Теперь нам нужно создать структуру общего файлового каталога и разграничить доступ на каждую папку в соответствии с правилами, принятыми в организации. Работы будут проводиться на сервере с установленной ОС Rosa Cobalt (он же CentOS7, он же RedHat 7).
Вводные данные.
Перед нами стоит задача: создать структуру общего файлового каталога и разграничить доступ к каталогам в соответствии с принятыми правилами. У нас уже установлен сервер FreeIPA, поэтому все пользователи и группы будем брать из базы FreeIPA.
Будем разворачивать следующую структуру:
Добавляем группы в каталоге FreeIPA.
Для организации доступа к папкам по вышеописанному сценарию нам необходимо в домене FreeIPA создать четыре группы:
Конфигурация Samba.
Открываем файл /etc/samba/smb.conf и вносим изменения в раздел, описывающий общие ресурсы. Рздел global сейчас не рассматриваем, т.к. мы его уже настроили на предыдущем шаге.
Немного расшифруем директивы:
Права в подпапки Unit1 и Unit2 наследуются от вышестоящей папки ( FS_Share )/ Их задавать в соответствующих разделах не нужно. Более того, если их явно указать в этих разделах, то они игнорируются.
Создаем структуру файлового ресурса и раздаем права.
Затем назначаем владельцев папок и назначаем права доступа:
В итоге в данной конфигурации мы полностью решили поставленную перед нами задачу.
Samba file server
Содержание
Samba как файловый сервер
Настройка сервера
1.Делаем бэкап конфигурационного файла самбы
2.Прописываем в smb.conf следующие параметры (без //комментариев)
Вводим команду, вставляем текст, нажимаем Enter и, затем, Ctrl+D.
Перезапускаем сервис SMB:
Добавление гостевой папки
1.Создаем папку, которая будет общей; назначаем ей права
2.Добавляем в конец файла строки:
3.Перезапускаем сервис SMB:
Добавление второй папки
Делаем так же как и в первом шаге, только добавляем раздел с описанием второго ресурса ниже первого.
В первом примере у нас Public и папка docstore. Во втором будет Share и files.
2.Прописываем в smb.conf следующие параметры (без //комментариев)
Вводим команду, вставляем текст, нажимаем Enter и, затем, Ctrl+D.
3.Перезапускаем сервис SMB:
Папка с паролем
Назначим нового владельца, пользователя share, и несколько изменим разрешения:
Добавляем пользователя в Samba (вводим пароль 1q@W3e):
Включаем учетную запись Samba:
Добавим в samba.cfg следующее:
Папка будет доступна пользователю share с паролем 1q@W3e.
Перезапускаем сервис SMB:
Разграничение прав пользователей
Предположим, у вас следующие ресурсы, которым нужно назначить следующие разграничения:
Docstore
Kadry и Admin
Создаем пользователя для кадров:
Добавляем пользователя в Samba (вводим пароль):
Включаем учетную запись Samba:
Создаем пользователя для администраторов:
Добавляем пользователя в Samba (вводим пароль):
Включаем учетную запись Samba:
Добавляем adminy и kadrovik в группу kadry:
Kadry
Создаем папку, назначаем новых владельцев, изменяем разрешения:
Добавляем в smb.conf следующие данные:
Admin
Создаем папку, назначаем нового владельца, изменяем разрешения:
Samba разграничение прав пользователей
В прошлой статье мы выполнили базовую настройку Samba. В результате все пользователи внутри нашей сети получили возможность читать и записывать любые данные в расшаренной папке. В этой статье я расскажу, как сделать директорию доступной (или, наоборот, недоступной) для определенных пользователей или ip-адресов внутри вашей сети. Кроме того, я покажу, как скрыть расшаренную нами папку от посторонних глаз.
О пользователях и паролях в Samba.
В качестве пользователей Samba рассматривает уже существующих пользователей Linux. Такой подход обусловлен тем, что подключившемуся необходимо выполнять какие-то действия — как минимум, чтение и, в некоторых случаях, запись. Чтобы система позволила ему это сделать, его необходимо аутентифицировать.
Пароль, в отличие от имени, необходимо установить отдельно. Делается это с помощью утилиты smbpasswd, с ее же помощью мы включаем (активируем) пользователя:
Вместо username подставьте имя нужного (и обязательно существующего!) пользователя Linux. В процессе потребуется дважды ввести пароль.
Если у вас или других пользователей есть компьютер с Windows, где имя пользователя отличается от используемого в Linux, очень удобно создать псевдоним (алиас), указав его в файле /etc/samba/smbusers. Эта же возможность пригодится и для того, чтобы позволить разным людям действовать от одного имени.
В Ubuntu 16.04 этот файл изначально отсутствует, но его легко создать самостоятельно. Внутрь нужно поместить строку примерно следующего содержания:
где user — имя пользователя на машине с Ubuntu, того самого, для которого мы только что создали пароль, а admin и vasiliy — псевдонимы, а точнее — имена пользователей на компьютерах с Windows. Теперь при подключении Samba будет знать, что admin — это известный ей пользователь user. Как видите, псевдонимов у каждого пользователя может быть несколько, а разделяются они пробелом.
После сохранения документа отредактируйте smb.conf, добавив в секции [global]:
иначе Samba ничего не узнает о добавленных псевдонимах.
Создание скрытой сетевой папки с ограниченным доступом.
Перейдем к практической части и создадим сетевую директорию, которая будет доступна только определенным пользователям, а для всех остальных будет оставаться не только недоступной, но и невидимой.
Если папка еще не существует, создайте ее и убедитесь, что она доступна для записи и чтения нужным пользователям. Теперь добавим новый раздел в наш smb.conf с примерно следующим содержанием (не забудьте подставить свои данные):
Параметр browseable, как уже упоминалось в прошлой статье, определяет, будет ли видна расшаренная папка всем подключившимся. Выставив отрицательное значение, мы делаем ее невидимой. Чтобы попасть внутрь, необходимо при подключении указать ее имя после адреса сервера, например так:
В примере выше есть несколько новых параметров:
Таким образом, подключиться могут только user1, user2 и user3 и только при условии, что они знают о расшаренной папке, а user1 может только читать. Существует и способ запретить конкретным пользователям подключаться, для этого используйте опцию invalid users.
Если устройства в вашей сети имеют статические ip-адреса, можно указать их как разрешенные c помощью параметра hosts allow, либо, наоборот, запретить, прописав их после hosts deny.
Напоследок пример работающей конфигурации и результат — в списке доступных директорий my_super_secret_share не отображается, но в нее можно перейти.
В следующей статье разберем графические и веб интерфейсы для управления Samba. Подписывайтесь, чтобы ничего не пропустить.
Установка и настройка файлового сервера Samba на Ubuntu
Samba позволяет настроить файловое хранилище различных масштабов — от малых офисов для крупных организаций. В данной инструкции мы рассмотрим процесс настройки файлового сервера. Сначала мы выполним установку и базовую настройку с предоставлением гостевого доступа. После будет приведены примеры разграничения доступа по пользователям, группам и пользователям Active Directory.
Подготовка сервера
1. Время
Для корректного отображения дат, необходимо позаботиться о синхронизации времени. Для этого будем использовать демон chrony. Установим его:
apt-get install chrony
Разрешим автозапуск сервиса:
systemctl enable chrony
2. Брандмауэр
По умолчанию, в системах на базе Debian брандмауэр разрешает все соединения. Но если в нашем случае мы используем брандмауэр, необходимо открыть порты:
* где порт 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
Создаем каталог на сервере и назначим права:
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
* эти настройки, во многом, похожи на те, что использовались в примере выше. Вот основные различия:
Создаем каталог для новой папки:
Задаем права на созданный каталог:
chmod 777 /data/staff
Создаем пользователя в системе Linux:
* где staff1 — имя пользователя.
Задаем пароль для пользователя:
Теперь создадим пользователя в samba:
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
* стоит обратить внимание на следующие настройки:
* если мы хотим, чтобы доступ к каталогу был полный у определенных пользователей (без разделения на тех, кто может только читать и тех, кто может также писать в папку), то опцию write list можно не указывать, а опции writable и read only оставить как в примерах выше.
Быстрая и простая настройка samba
Иногда нужно очень быстро на сервере настроить файловую шару и открыть на нее доступ. При этом нет необходимости городить какие-то сложные конфигурации, права доступа или что-то еще. Нужен просто оперативный доступ к информации без лишних вопросов.
Мне, к примеру, недавно подобное понадобилось, чтобы открыть доступ к резервным копиям, которые хранились на сервере. Самому разбираться и искать информацию не хотелось, нужно было быстро дать человеку доступ на чтение, чтобы он сам нашел все, что ему нужно.
Я не буду специально оперировать версиями операционных систем. У самбы конфиги одинаковые почти везде, где мне приходилось с ними работать, тем более в самых простых конфигурациях.
Итак, устанавливаем самбу любым подходящим способом для вашей операционной системы. Конфигурации справедливы для 3-й версии самбы. Дальше решаем, что нам нужно:
В зависимости от этого настройки будут немного разные.
Для доступа по паролю рисуем такой конфиг:
Перезапускаем самбу. Дальше добавляем пользователя в систему примерно так:
Импортируем этого пользователя в самбу и задаем пароль:
И пробуем зайти на шару по адресу:
Чтоб организовать доступ в зависимости от ip адреса, делаем такие настройки в smb.conf:
В данном случае полный доступ будет у адреса 192.168.0.171. Чтобы добавить всю подсеть, то указать нужно следующее:
Комбинировать можно разные подсети и адреса, разделяя их пробелами. Для того, чтобы отключить доступ каким-то отдельным адресам из разрешенной подсети, можно сделать вот так:
Доступ будет разрешен всей подсети 192.168.0.0/24, кроме адреса 192.168.0.15.
Делаем перезапуск самбы и проверяем.
Если у вас установлена samba 4, то эта конфигурация не заработает и вы получите ошибку:
Чтобы доступ по ip нормально заработал, вам необходимо внести следующие изменения в приведенный выше конфиг:
Остальные параметры оставляете те же. После этого доступ по ip будет работать и на 4-й версии самбы.
Если доступ будет предоставлен всем без ограничений, то простейшая конфигурация самбы будет такой:
Не забываем сделать права для всех на папку:
Перезапускаем самбу и пробуем зайти. Должно пустить без лишних вопросов.
Вот так буквально за 5 минут можно организовать простейший файловый сервер с помощью samba. А часто сложнее и не надо. Для какой-нибудь файловой помойки подойдет самый последний вариант.
Для более сложных конфигураций у меня есть отдельные статьи: