Набор разрешений по умолчанию ACL маскируются любым режимом, который предоставляет программа, создающая файл. Обычно программа, создающая обычный файл, устанавливает права доступа на 0666
(то есть без битов выполнения) и позволяет umask
обрабатывать удаление доступа для группы и других пользователей. Для каталогов режим обычно устанавливается на 0777
, так что x-биты находятся там , поскольку они часто необходимы.
Программа, создающая «частный» файл, такой как ключи SSH, должна указывать разрешения как 0600
, чтобы убедиться, что никто, кроме самого пользователя, не имеет доступа.
В руководстве acl (5)
говорится, что:
ACL СОЗДАНИЯ ОБЪЕКТОВ И ПО УМОЛЧАНИЮ
- Записи ACL доступа, соответствующие битам прав доступа к файлам, изменены так, что они не содержат разрешений. которые не содержатся в разрешениях, указанных параметром режима.
Итак, поскольку ACL u ::
соответствует обычным битам прав доступа для пользователя файла, разрешения маскируются тем, что дает программа создания.
(В некотором смысле, ACL по умолчанию, кажется, занимает место umask.) Я подозреваю, что если вы создадите каталог, вы увидите, что он получает бит x
, как вы хотели.
Технически это не влияет на записи ACL для конкретного пользователя , как в u: foo: rwx
, но они ограничены маской ACL. Маска соответствует традиционным битам разрешения группы, и кажется, что приведенное выше правило применимо также к маске, так что маска ACL ограничена битами разрешения группы, установленными при создании файла.
Давайте попробуем:
$ mkdir dir ; chmod 750 dir ; setfacl -d -m u::rx -m g::rx -m u:foo:rwx dir
$ touch dir/file ; mkdir dir/subdir
Созданный файл имеет замаскированные x-биты ( getfacl
здесь показывает как установленные биты, так и действующие значения после применения маски):
$ getfacl dir/file
user::r--
user:foo:rwx #effective:rw-
group::r-x #effective:r--
mask::rw-
other::---
Но каталог не:
$ getfacl dir/subdir/
user::r-x
user:foo:rwx
group::r-x
mask::rwx
...
Это могло бы ответить (1) и (3). Что касается (2): IIRC, setgid -бит ( g + s
) в каталоге заставляет новые файлы, созданные внутри него, наследовать группу каталога (не режим). Бит залипания ( + t
) управляет удалением файлов, не принадлежащих вам, и на самом деле я понятия не имею, что бит setuid ( u + s
) будет делать с каталогом.
Если вы открыты для альтернативных инструментов сжатия, попробуйте этот почти идентичный вариант.
drt="/var/www/html"
mysqldump -u root -p --all-databases | gzip >"$drt/db-$date.gz"
Если вы предпочитаете, вы можете заменить gzip
на bzip2
или xz
и типичное расширение с gz
на bz2
или xz
.