Перезаписать режим создания каталога с помощью linux acl

Я пытаюсь дать конкретному пользователю (например, "тест") право на чтение любой новой созданной директории. Я делаю это используя:

undefine@undefine-ThinkPad-T430s:~/test$ getfacl .
# file: .
# owner: undefine
# group: undefine
user::rwx
group::rwx
other::r-x

undefine@undefine-ThinkPad-T430s:~/test$ setfacl -d -m u:test:rX .
undefine@undefine-ThinkPad-T430s:~/test$ getfacl .
# file: .
# owner: undefine
# group: undefine
user::rwx
group::rwx
other::r-x
default:user::rwx
default:user:test:r-x
default:group::rwx
default:mask::rwx
default:other::r-x

Затем - когда я создаю новый каталог с помощью команды mkdir - он работает нормально:

undefine@undefine-ThinkPad-T430s:~/test$ mkdir testa
undefine@undefine-ThinkPad-T430s:~/test$ getfacl testa
# file: testa
# owner: undefine
# group: undefine
user::rwx
user:test:r-x
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:test:r-x
default:group::rwx
default:mask::rwx
default:other::r-x

Но - если я создаю новый режим форсирования каталогов - действующие права пусты:

undefine@undefine-ThinkPad-T430s:~/test$ mkdir -m 700 testb    
undefine@undefine-ThinkPad-T430s:~/test$ getfacl testb
# file: testb
# owner: undefine
# group: undefine
user::rwx
user:test:r-x           #effective:---
group::rwx          #effective:---
mask::---
other::---
default:user::rwx
default:user:test:r-x
default:group::rwx
default:mask::rwx
default:other::r-x

И тестовый пользователь не может читать файлы в каталоге.

Есть ли способ избежать этого и дать "тестовому" пользователю право на чтение содержимого каталога независимо от режима, используемого при создании каталога? Я могу обойти это, используя задание incron, которое "исправляет" разрешения после создания каталога, но это грязный хак, и я хотел бы сделать этот "правильный путь"

Реальная проблема, с которой я столкнулся в системе докеров, где dockerd создает каталоги в каталоге /var/lib/docker/container с режимом 0700.

1 ответ

У вас есть пример разрешений, которые вы предоставляете папке при создании каталога с флагом "mode"? AFAIK, разрешения ACL объединяются с "обычными" разрешениями для файлов (chmod). Но файл разрешений заменяет разрешения ACL. Я смог воспроизвести то, что вы объясняли, создав папку с разрешениями ACL ниже, чем разрешения для папок.

В качестве альтернативы это вариант использования Umask?

test@shell-server:~$ getfacl .
# file: .
# owner: test
# group: test
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:test:r-x
default:group::r-x
default:mask::r-x
default:other::r-x

test@server:~$ mkdir -m 0100 dir3

test@server:~$ getfacl dir3/
# file: dir3/
# owner: test
# group: test
user::--x
user:test:r-x           #effective:---
group::r-x              #effective:---
mask::---
other::---
default:user::rwx
default:user:test:r-x
default:group::r-x
default:mask::r-x
default:other::r-x 

Кроме того, глядя на "другие" разрешения для этой папки, ваш "тестовый" пользователь должен иметь доступ для чтения и изменения в этот каталог (rx)? Разве это не так?

undefine@undefine-ThinkPad-T430s:~/test$ getfacl .
# file: .
# owner: undefine
# group: undefine
user::rwx
group::rwx
other::r-x
Другие вопросы по тегам