Правильная настройка ACL для -rw-r--r--+

Правильная настройка ACL для -rw-r--r--+

Мне удалось установить разрешения ACL по умолчанию для новых файлов следующим образом:

sudo setfacl -Rdm u:usernamehere:rwx /var/www/path/to/files

Похоже, это дает всем новым файлам разрешение:

-rw-r-----+

Я надеюсь, что новые файлы получат следующее разрешение:

-rw-r--r--+

Если это имеет значение, у меня CentOS.

Любая помощь по этому вопросу будет высоко оценена.

Спасибо!

решение1

Во-первых, обратите внимание, что файлы ACL, которые имеют записи ACL для именованных пользователей или групп, также имеютМаска ACLзапись, которая ограничивает разрешения, предоставляемые этими записями ACL и записью владельца группы. Запись маски показывает как разрешения группы lsи другие утилиты, которые смотрят только на традиционные биты разрешений.

Итак, если ваш lsпоказывает -rw-r--r--+, маска ACL — r--, что означает, что разрешение ACL u:usernamehere:rwxбудет действовать как u:usernamehere:r--. Это может быть не то, что вам нужно. С другой стороны, обратите внимание, что u:usernamehere:rwxотличается от u::rwx, даже для файлов, принадлежащих usernamehere. Первая — это именованная запись, ограниченная маской, а вторая — запись для владельца файла, который являетсянетограниченное.

Идея маски заключается в том, что инструмент, который запускает эквивалент, chmod go-rwxвсе еще может сделать файл недоступным для всех, кроме владельца. Вы можете удалить запись маски с помощью setfacl -x m:: filename, но это сработает только в том случае, если нет записей именованных пользователей или групп.

В любом случае, вы можете добавить более одной записи по умолчанию для одной и той же команды. Это установит записи по умолчанию так, что владелец файла получит разрешения rwx, маска будет установлена ​​на r--, а разрешения для "других" будут установлены на r--:

$ setfacl -R -d -m u::rwx -m m::r-- -m o::r-- /path

Вы можете также явно задать ACL по умолчанию для владельца группы ( g::), поскольку запись появляется в любом случае (со значениями, вероятно, взятыми из битов разрешений). Например, здесь запись для владельца группы не полностью эффективна, поскольку маска ограничивает ее:

default:user::rwx
default:group::r-x              #effective:r--
default:mask::r--
default:other::r--

Файл, созданный в каталоге, отображается lsкак -rw-r--r--+.


Опять же, если вы просто хотите, чтобы указанный пользователь получил указанные вами разрешения, вы можете не указывать поле маски, и setfaclоно будет установлено на основе разрешений, которые вы использовали для фактических записей ACL:

setfacl -R -d -m u::rwx -m u:usernamehere:rwx -m o::r-- /path

Файл, созданный в каталоге, теперь отображается lsкак -rw-rw-r--+, и как getfacl:

user::rw-
user:usernamehere:rwx           #effective:rw-
group::r-x                      #effective:r--
mask::rw-
other::r--

Маска отсутствует, xтак как я создал файл с помощью touch, и он использует разрешения 0666, маскируя xбиты.

Связанный контент