Назад | Перейти на главную страницу

Маска ACL по умолчанию и SGID

Вот и все: у меня есть общая папка на сервере, который поддерживает репозиторий git. Все пользователи группы должны иметь разрешения на чтение и запись для файлов, но также необходимо, чтобы каждый новый файл или папка, создаваемая, имела пропиетарную группу по умолчанию (gitusers).

Для этого я установил SGID для корневой папки. Я также определил ACL, чтобы каждый новый созданный файл или папка сохранял полные разрешения для пропиетарного пользователя и группы. Вот ACL корневой папки:

administrador@ServidorSSH:/var$ getfacl git-server/
# file: git-server/
# owner: administrador
# group: gitusers
# flags: -s-
user::rwx
group::rwx
other::---
default:user::rwx
default:group::rwx
default:other::---

И когда я создаю новую папку внутри, она наследует SGID, и права собственности / прав пользователя / группы в порядке:

administrador@ServidorSSH:/var/git-server$ mkdir repository
administrador@ServidorSSH:/var/git-server$ ll
total 12
drwxrws---+  3 administrador gitusers 4096 nov 28 09:33 ./
drwxr-xr-x  16 root          root     4096 nov 28 09:23 ../
drwxrws---+  2 administrador gitusers 4096 nov 28 09:33 repository/

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

administrador@ServidorSSH:/var$ sudo setfacl -nm u:openproject:r-X git-server/
administrador@ServidorSSH:/var$ sudo setfacl -dnm u:openproject:r-X git-server/
administrador@ServidorSSH:/var$ getfacl git-server/
# file: git-server/
# owner: administrador
# group: gitusers
# flags: -s-
user::rwx
user:openproject:r-x
group::rwx
mask::rwx
other::---
default:user::rwx
default:user:openproject:r-x
default:group::rwx
default:mask::rwx
default:other::---

Когда я тестирую создание новой папки внутри git-server, SGID теряется (что означает, что новые созданные файлы и папка могут не принадлежать группе gitusers):

administrador@ServidorSSH:/var/git-server$ mkdir repository
administrador@ServidorSSH:/var/git-server$ ll
total 12
drwxrws---+  3 administrador gitusers 4096 nov 28 09:42 ./
drwxr-xr-x  16 root          root     4096 nov 28 09:23 ../
drwxrwx---+  2 administrador gitusers 4096 nov 28 09:42 repository/
administrador@ServidorSSH:/var/git-server$

Вопрос (ы): есть ли способ установить маску ACL по умолчанию, которая включает SGID? Или есть способ стереть маску ACL по умолчанию, чтобы она не фильтровала SGID?

Заранее благодарю и приношу свои извинения за плохое знание Linux / английского языка.