Linux samba права доступа

Linux samba права доступа

В предыдущих статьях был рассмотрен способ установки файлового сервера Samba в кластере и установка прав доступа на отдельные папки используя «классический» метод. Но данный метод не всегда удобен, особенно если папок на сервере много и требуется весьма разветвленная структура доступа. Весьма затруднительно вносить каждую папку, на которую требуется наложить какие-либо ограничения, в файл конфигурации сервера. Да и делегировать административные права на управление доступом гораздо проще используя другой метод. Таким методом является ACL.

Как обычно все работы будут проводиться на ОС Rosa Enterprise Linux Server 7.3 (RELS 7.3), он же CentOS 7.3, он же RedHat 7.3.

  1. smb.rpn.int — файловый сервер Samba
  2. otd1 — первое подразделение компании
  3. otd2 — второе подразделение компании
  4. unit1 — папка первого подразделения
  5. unit2 — папка второго подразделения
  6. share — общая папка всех подразделений.

Задача: организовать доступ к папкам таким образом:

  1. Пользователи из otd1 имели полный доступ к папке unit1, но не имели доступ к папке unit2
  2. Пользователи из otd2 имели полный доступ к папке unit2, но не имели доступ к папке unit1
  3. Все пользователи имеют полный доступ к папке share
  4. Все пользователи имеют право просматривать структуру корневой папки

В предыдущей статье рассказывалось о том, как организовать такой доступ, используя стандартные настройки Samba. Сейчас же рассмотрим более «продвинутый» метод — ACL.

Стандартные команды работы с ACL — setfacl и getfacl — подробно описаны в руководстве, поэтому здесь мы ограничимся примерами.

Для работы ACL необходимо включить поддержку этого функционала при монтировании файловой системы. Когда мы подключали кластерную файловую систему к кластеру, мы это предусмотрели:

Т.е. в параметре монтирования указываем опцию acl . Если мы не используем кластерную файловую систему, а работаем с выделенным сервером, то эта опция указывается в файле, описывающим смонтированные устройства ( /etc/fstab ). Например:

Проверить поддерживает ли раздел работу с ACL можно попыткой установить список доступа на этот раздел. Например:

Operation not supported говорит о том, что поддержка ACL не была включена и необходимо ее задействовать.

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

  1. fs_users — в данную группу будут входить все пользователи, имеющие право заходить на файловый сервер, и которым будет доступен листинг корневых папок ресурса
  2. fs_admins — группа пользователей, которым будут доступны все папки на сервере и которые смогут редактировать (настраивать) ACL непосредственно из файлового менеджера без доступа в консоль сервера.
  3. otd1 — пользователи первого подразделения
  4. otd2 — пользователи второго подразделения

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

Где FS_Share — точка монтирования диска. Далее назначаем хозяина папок и раздаем права:

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

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

Далее настраиваем доступ к корневой общей папке и включаем ACL в конфигурации Samba:

Перезапускаем сервер Samba с новыми настройками:

В итоге на сервере появилась общая папка SHARE , в которую имеют доступ пользователи, входящие в группу fs_admins .

Остается настроить права доступа на все папки общего ресурса. Для этого переходим в консоль сервера и начинаем настройку.

Устанавливаем права просмотра содержимого корневого каталога для всех пользователей, входящих в группу fs_users (в отличии от групп Samba в группы домена FreeIPA могут входить другие группы. Т.е. в нашем случае в группу fs_admins входят группы подразделений otd1 и otd2 ):

Устанавливаем полный доступ для пользователей группы otd1 на папку и все последующие папки unit1 :

Устанавливаем полный доступ для пользователей группы otd2 на папку и все последующие папки unit2 :

Посмотреть права доступа можно выполнив следующую команду:

Т.е. мы видим, что в данную папку разрешен полный доступ группе otd2. Всем остальным доступ запрещен.

Читайте также:  Нет нужного разрешения экрана windows 10 1920x1080

То же самое можно посмотреть для остальных папок.

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

Особенности и ограничения.

Наиболее часто встречающиеся опции star :

Опция Описание
-c Создаёт файл архива
-n Отключает извлечение файлов, используется в сочетании с -x для просмотра списка извлекаемых файлов.
-r Заменяет файлы в архиве. Файлы записываются в конец архива, заменяя любые файлы с тем же путём и именем.
-t Выводит содержимое файла архива.
-u Обновляет файл архива. Файлы записываются в конец архива, если их ещё не было в архиве или если они новее, чем файлы с тем же именем в архиве.
-x Извлекает файлы из архива. Если используется с ключом -U и файл в архиве старее, чем соответствующий файл в файловой системе, такой файл не извлекается.
-help Выводит наиболее важные параметры.
-xhelp Выводит менее важные параметры.
-/ Оставляет ведущую косую черту в имени файла при извлечении файлов из архива. По умолчанию она убирается.
-acl При создании архива или извлечении файлов, архивирует или восстанавливает все ACL , связанные с файлами или каталогами.

Пример для архивирования утилитой star с сжатием:

Пример для разархивирования в текущий каталог:

Источник

Linux samba права доступа

В предыдущей статье мы связывали файловый сервер Samba с доменом FreeIPA. Мы развернули и настроили доступ на общие файловые ресурсы с авторизацией пользователей как из домена FreeIPA, так и из доверенного домена Active Directory. Теперь нам нужно создать структуру общего файлового каталога и разграничить доступ на каждую папку в соответствии с правилами, принятыми в организации. Работы будут проводиться на сервере с установленной ОС Rosa Cobalt (он же CentOS7, он же RedHat 7).

Вводные данные.

Перед нами стоит задача: создать структуру общего файлового каталога и разграничить доступ к каталогам в соответствии с принятыми правилами. У нас уже установлен сервер FreeIPA, поэтому все пользователи и группы будем брать из базы FreeIPA.

Будем разворачивать следующую структуру:

  • FS_share — общая точка входа на файловом сервере, содержащая папкаи подразделений организации.
  • Unit1 — папка первого подразделения
  • Unit2 — папка второго подразделения.
  1. Все пользователи организации должны видеть структуру каталога.
  2. Пользователи первого подразделения должны работать в каталоге Unit1, но не иметь доступ к каталогу второго подразделения.
  3. Пользователи второго подразделения должны работать в каталоге Unit2, но не иметь доступ к каталогу первого подразделения.
  4. Администраторы файлового сервера должны иметь доступ ко всем каталогам файлового сервера.

Добавляем группы в каталоге FreeIPA.

Для организации доступа к папкам по вышеописанному сценарию нам необходимо в домене FreeIPA создать четыре группы:

  1. fs-users — группа, члены которой имеют доступ к корневому каталогу файлового ресурса. В нее добавим встроенную группу ipausers и ранее созданную внешнюю группу, в которую входят пользователи доверенного домена Active Directory. Т.е. доступ на просмотр корневого каталога файлового ресурса будут иметь все пользователи домена FreeIPA и пользователи доверенного домена Active Directory.
  2. unit1 — группа, в которую входят учетные записи первого подразделения.
  3. unit2 — группа, в которую входят учетные записи пользователей второго подразделения.
  4. fs-admins — группа, в которую входят учетные записи администраторов файлового сервера. Т.е. эти пользователи будут иметь полный доступ во все подкаталоги общего файлового ресурса, а также смогут добавлять или удалять объекты (папки) в корневом общего файлового ресурса.

Конфигурация Samba.

Открываем файл /etc/samba/smb.conf и вносим изменения в раздел, описывающий общие ресурсы. Рздел global сейчас не рассматриваем, т.к. мы его уже настроили на предыдущем шаге.

Немного расшифруем директивы:

  • Директива force create mode = 0110 необходима для того, чтобы дополнтельно выставить на вновь создаваемые файлы executable бит для владельца и группы, который не выставляется директивой create mask. Директива force create mode действует по принципу ИЛИ с основной маской доступа, и выставляет бит в том случае, если он не выставлен директивой create mask.
  • Директива force group = +группа запрещает доступ к папкам всем, кто не входит в эту подгруппу. Текущий пользователь, обращающийся к общему ресурсу имеет только первичное значение по умолчанию группы, назначенное на эту группу. Это позволяет администратору решать, что только пользователи, которые уже находятся в специфической группе, создадут файлы с монопольным использованием группы, установленным на эту группу. Это дает более тонкую степень детализации назначения монопольного использования. Кроме того, это определяет имя группы UNIX, которое будет назначено как первичная группа по умолчанию для всех пользователей, соединяющихся с этим сервисом.
    Это полезно для того, чтобы совместно использовать файлы, гарантируя, что весь доступ к файлам этого сервиса будет использовать названную группу для проверки их разрешений. Таким образом, назначая разрешения для этой группы к файлам и каталогам в пределах этого сервиса администратор Samba может ограничить или позволить совместно использовать эти файлы.
  • Директива browsable = no вообще скрывает подпапки из прямой видимости извне. Поэтому, когда вы просматриваете сетевое окружение с других компьютеров, вы увидите только папку FS_Share .
  • valid users — список пользователей, которым разрешен доступ к сервису. Имена, начинающиеся с ‘ @ ’, ‘ + ’ и ‘ & ’ интерпретируются согласно некоторым правилам и не действительны в имени пользователя.
    Если значения параметра не определено, то все пользователи могут подключаться. Если имя пользователя находится одновременно и в этом списке и в списке invalid users list тогда, доступ для него к сервису будет запрещен. Потоком servicename заменяют для %S . Для секции [homes] полезно использование %S для подстановки имени пользователя.
  • write list — параметр определяет список пользователей имеющих доступ к сервису на чтение/запись. Если соединяющийся пользователь находится в этом списке тогда, он получит доступ на запись независимо от того установлен ли параметр read only (только чтение). Список может содержать названия группы, используется синтаксис @group . Заметьте что если пользователи одновременно находятся в списке только для чтения и в списке на чтение запись они получат доступ и на запись.
  • guest ok — если этот параметр задан в yes на общем ресурсе, то для подключения к ресурсу не требуется пароль. По умолчанию установлен в » No «
  • create mask — устанавливает права для вновь создаваемых файлов
  • directory mask — устанавливает права для вновь создаваемых папок
Читайте также:  Что куда отправляет windows 10

Права в подпапки Unit1 и Unit2 наследуются от вышестоящей папки ( FS_Share )/ Их задавать в соответствующих разделах не нужно. Более того, если их явно указать в этих разделах, то они игнорируются.

Создаем структуру файлового ресурса и раздаем права.

Для начала необходимо создать структуру папок в корневом каталоге, соответствующую той, которая описана в файле /etc/samba/smb.conf .

Затем назначаем владельцев папок и назначаем права доступа:

  • По умолчанию владельцем владельцем корневой папки share является пользователь root . Оставляем этот параметр без изменения.
  • Владельцами папок Unit1 и Unit2 делаем соответствующие группы пользователей.
  • Права 2770, выставленные на папки Unit1 и Unit2 гарантируют, что все файлы и подпапки, находящиеся в них, будут всегда создаваться с соответствующими подгруппами этих родительских папок, что предоставляет пользователям подгрупп полный доступ к любым документам и подпапкам, даже если они созданы другими пользователями.

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

Источник

Установка и настройка файлового сервера Samba на Ubuntu

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 оставить как в примерах выше.

Источник

Оцените статью