Вопрос или проблема
Я хочу создать файловые хранилища для наших клиентов Windows. В настоящее время мы работаем со старым сервером samba, который не был правильно настроен предыдущим ИТ-специалистом (например, пользователи теряют доступ к подпапкам, иногда невозможно предоставить только права на чтение…). Поэтому я хочу убедиться, что делаю все правильно.
Каковы лучшие практики в отношении ACL, чтобы гарантировать следующее:
- Ни один файл и папка не должны принадлежать создателю
- Пользователи не могут изменять разрешения (например, никаких полных разрешений на файлы/папки, которые они создали)
- Разрешения должны наследоваться из общей папки (кроме случаев, когда наследование отключено вручную)
- Возможно, невозможно: файлы/папки, перемещенные из одного хранилища в другое, должны наследовать разрешения из целевого хранилища
Связанный вопрос: какие пользователи и группы должны владеть общей папкой? Если я не ошибаюсь, это должен быть аккаунт samba-admin (а не аккаунт posix root), как я прочитал на вики Samba.
Есть ли что-то еще, что я должен учитывать? Ниже моя текущая конфигурация /etc/samba/shares.conf.d/sambashare.conf
[Share]
path = /shares/share
msdfs root = no
writeable = yes
browseable = yes
public = no
dos filemode = no
hide unreadable = no
create mode = 0664
directory mode = 0775
force create mode = 0664
force directory mode = 0775
locking = 1
strict locking = Auto
oplocks = 1
level2 oplocks = 1
fake oplocks = 0
csc policy = manual
nt acl support = 1
inherit acls = 1
vfs objects = acl_xattr
inherit owner = yes
inherit permissions = yes
map acl inherit = yes
Ответ или решение
Введение в вопрос о наилучших практиках настройки ACL (Access Control Lists) для Samba серверов крайне важно для обеспечения безопасности и управляемости файловых ресурсов, особенно в среде, где сервер Samba взаимодействует с клиентами на базе Windows. Неправильная конфигурация может привести к утрате доступа пользователями, несанкционированной модификации прав доступа, а также к другим проблемам, связанным с безопасностью и управлением.
Теория
Samba представляет собой реализацию протокола SMB/CIFS, который позволяет Linux/Unix системам общаться с Windows-системами, предоставляя возможности для создания общих папок и управления доступом к ним. ACL — это механизм, который определяет, какие права имеют пользователи на файлы и директории, и выполняет их более гибко и детализировано по сравнению с обычными файловыми разрешениями.
Некоторые ключевые аспекты в отношении ACL, которые помогут в достижении желаемых результатов:
-
Наследование прав доступа: Позволяет обеспечивать, чтобы вновь создаваемые файлы и каталогии в пределах общего ресурса автоматически получали те же права доступа, что и родительская директория, если наследование явно не отключено.
-
Предотвращение изменения прав доступа пользователями: Необходимо ограничивать пользователей так, чтобы они не могли самостоятельно изменять права доступа, которые могли бы предоставить увеличенные привилегии другим пользователям.
-
Управление собственностью и правами: Все создаваемые файлы и директории не должны быть собственностью создателя. Это предотвращает проблемы с доступом и облегчает управление разрешениями.
Пример
Рассмотрим следующие изменения конфигурации и управления ACL на основе предоставленного вами файла конфигурации sambashare.conf
:
-
Установка владельца и группы: Обычно рекомендуется установить владельцем и группой shared-folder пользователя, ответственного за администрирование, например, учетную запись
samba-admin
. Это соответствует рекомендациям из ссылки на Samba Wiki. -
Настройки конфигурации:
inherit acls = yes
иinherit permissions = yes
уже находятся в конфигурации, что обеспечивает наследование прав доступа от родительской директории.force create mode
иforce directory mode
должны быть настроены так, чтобы запрещать пользователям выставлять полные права на создаваемые ими объекты.
-
Использование
vfs objects
: Использованиеvfs objects = acl_xattr
позволит обрабатывать ACL’ы совместимым для Windows способом, сохраняя дополнительную информацию правильно.
Применение
Применяя эти принципы к вашей конфигурации, можно настоять на следующих изменениях и процедурах:
-
Назначение владельцем общей директории администратора Samba: Это действие предотвратит утрату контроля над файловым ресурсом. Используйте команды, чтобы изменить владельца и группу, например:
chown samba-admin:samba-group /shares/share
-
Обеспечение ограничений на изменение ACL пользователями: Убедитесь, что задаваемые настройки
create mode
,directory mode
,force create mode
, иforce directory mode
ограничивают полномочия пользователей. Например, вы можете использовать более строгие маски:create mode = 0660 directory mode = 0770 force create mode = 0660 force directory mode = 0770
-
Обновление и тестирование политики наследования:
- Если вы сталкиваетесь с проблемами из-за неправильного наследования, возможно, потребуется вручную проверить и обновить права доступа через команды
setfacl
иgetfacl
. - Использовать Windows-интерфейс для проверки и настройки ACL через "Права доступа на основе объектов" (Object-based permissions).
- Если вы сталкиваетесь с проблемами из-за неправильного наследования, возможно, потребуется вручную проверить и обновить права доступа через команды
-
Автоматическая коррекция прав при перемещении файлов: К сожалению, Samba не обеспечивает автоматического изменения прав при перемещении файлов из одной директории в другую, так как операция "перемещения" в рамках одного файлового системы не затрагивает права доступа. Рекомендуется использовать скрипты на уровне системы для переопределения прав доступа перемещенных файлов.
Заключение и дополнения
Создание и поддержка безопасной и управляемой среды файлового обмена с использованием Samba требует применения подходов, связанных с правильным управлением ACL и соблюдением рекомендаций по безопасности. Пересмотрите существующую документацию и рекомендации от сообщества Samba, регулярно обновляйте систему безопасности и тестируйте изменения в контрольной среде перед развертыванием их в рабочей.