Есть ли способ пересылки zip-файлов по конвейеру? [дубликат]

Набор разрешений по умолчанию ACL маскируются любым режимом, который предоставляет программа, создающая файл. Обычно программа, создающая обычный файл, устанавливает права доступа на 0666 (то есть без битов выполнения) и позволяет umask обрабатывать удаление доступа для группы и других пользователей. Для каталогов режим обычно устанавливается на 0777 , так что x-биты находятся там , поскольку они часто необходимы.

Программа, создающая «частный» файл, такой как ключи SSH, должна указывать разрешения как 0600 , чтобы убедиться, что никто, кроме самого пользователя, не имеет доступа.

В руководстве acl (5) говорится, что:

ACL СОЗДАНИЯ ОБЪЕКТОВ И ПО УМОЛЧАНИЮ

  1. Записи 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 ) будет делать с каталогом.

2
10.04.2018, 22:57
1 ответ

Если вы открыты для альтернативных инструментов сжатия, попробуйте этот почти идентичный вариант.

drt="/var/www/html"
mysqldump -u root -p --all-databases | gzip >"$drt/db-$date.gz"

Если вы предпочитаете, вы можете заменить gzipна bzip2или xzи типичное расширение с gzна bz2или xz.

8
27.01.2020, 21:49

Теги

Похожие вопросы