Samba

Контроль авторизации для общих ресурсов

Авторизация в Linux полагается на uid пользователя и список gid групп. Samba может использовать эту же информацию для выполнения предварительных проверок для контроля того может ли пользователь или группа изменять файлы в общей папке. Например, предположим что вы хотите предоставить некоторые файлы только для чтения студентам, но разрешить внесение изменений преподавателям. Есть несколько путей для для достижения данной цели. Окончательный уровень доступа к файлу или директории для пользователя является наиболее ограничивающий набор разрешений полученных после прохождения учётных данных пользователя через:

  • дескриптор безопасности
  • контроль доступа в определении общего ресурса в файле конфигурации smb.conf
  • разрешений файловой системы

Начальная проверка доступа выполняется путём просмотра дескриптора безопасности. Эти разрешения общего ресурса находятся отдельно от конфигурационного файла сервера и по умолчанию хранятся в файле /usr/local/samba/var/locks/share_info.tdb Все общие ресурсы изначально имеют нейтральный ACL, который даёт всем полный контроль над сетевым ресурсом (встроенная учётная запись Everione).

Разрешения общего ресурса можно посмотреть из Windows при помощи оснастки MMC "Общие папки", которая подключается к серверу Samba.

Далее мы сосредоточимся на параметрах конфигурации сервера smb.conf, которые используют список имён. В первом примере рассмотрим параметр admin users. Этот параметр принимает список пользователей или групп которые должны получить права root когда они подключатся к общему ресурсу. Предположим что мы хотим разрешить пользователям ivanov и petrov изменять файлы вне зависимости от разрешений файловой системы. Простым путём для достижения этого будет добавление списка admin users в описание общего ресурса в конфигурационном файле smb.conf:

[documents] path = /data/docs read only = no admin users = ivanov, petrov

Когда пользователь подключается, Samba определяет находится ли пользователь в списке ivanov, petrov. Оценка имён пользователей проста. Сравнение со списком возвращает успех или неудачу в зависимости от совпадения имени.

Списки авторизации, такие как admin users также могут содержать имена групп. Следующий пример дополняет общий ресурс [documents] добавляя группу Linux с названием employees в список admin users:

[documents] path = /data/docs read only = no admin users = ivanov, petrov, +employees

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

Любые файлы или директории созданные пользователем находящимся в списке admin users будут принадлежать пользователю root, а не создавшему их пользователю.

В большинстве случаев, символ + это всё что нам нужно. Однако существует два других символа информирующих сервер Samba о свойствах имени:

@ - сначала ищется группа NIS и в случае неудачи ищется группа Linux.
& - идёт поиск только группы NIS. Группы Linux не учитываются.

Есть вероятность того, что поддержка NIS в Samba будет прекращена, поэтому не стоит использовать символы @ и &, если вы не используете сетевые группы.

Другие параметры которые позволяют использовать списки пользователей и групп часто идут парами. Например, параметры valid users и invalid users разрешают и запрещают определённым пользователям или группам получать доступ к определённым общим ресурсам. Хотя эти параметры не являются взаимоисключающими, конфигурацию гораздо проще понимать когда присутствует только один из них. Если один параметр определён - например, valid users = +employees - все кто не входит в данный список считаются недействительными и им не позволено получать доступ к этому общему ресурсу. Это простой метод запретить доступ всем за некоторым исключением (valid users) или разрешить доступ всем и запретить только указанным (invalid users). Если указаны оба параметра, то пользователь не должен быть включён в список invalid users и должен присутствовать в списке valid users.

Аналогично параметры read list и write list позволяют уйти от использования параметра read only к определению конкретных пользователей и групп. Общий ресурс может быть помечен только для чтения за исключением нескольких пользователей или групп. Следующий общий ресурс [administration] может изменяться только тем, кто принадлежит группе pcadmins, а остальные могут только читать его содержимое:

[administration] path = /data/administration read only = yes write list = +pcadmins

В дополнение, общий ресурс [documents] определён как изменяемый всеми пользователями за исключением находящихся в группе guest:

[documents] path = /data/documents read only = no read list = +guest

Наконец, общий ресурс может быть ограничен количеством одновременных подключений для всех пользовательских сессий путём определения значения параметра max connections не равного нулю. Этот подход предоставляет грубый механизм для ограничения сетевой установки программного обеспечения. Например, у вас есть только 10 лицензий на приложение. Вы можете разместить на выделенном общем ресурсе сервера Samba и разрешить клиентам запускать программу оттуда. Для облегчения понимания использования данного параметра, в следующем примере сконфигурирован общий ресурс называемый [cad] который может принимать одновременно не более 10 подключений:

[cad] coment = CAD software for Engineering Department path = /data/applications/cad read only = yes max connections = 10

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

параметр тип значения описание по умолчанию область
admin users список пользователи/группы список пользователей и групп которые привязываются к пользователю root для полного доступа к ресурсу пустой список общий ресурс
valid users список пользователи/группы список пользователей и групп которым дан доступ к ресурсу, если разрешено другими проверками пустой список общий ресурс
invalid users список пользователи/группы список пользователей и групп которым запрещён доступ к ресурсу пустой список общий ресурс
read list список пользователи/группы список пользователей и групп которые ограничены только чтением данного ресурса пустой список общий ресурс
write list список пользователи/группы список пользователей и групп которым дано разрешение на запись данных в ресурсе, если это разрешено другими проверками ресурса и разрешениями ФС пустой список общий ресурс
max connections целое число максимальное количество одновременных подключений. 0 - без ограничений 0 общий ресурс

Поддержите проект, если он помог вам

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