Мне удалось установить разрешения 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
биты.