Маска ACL по умолчанию ::не используется для нового файла

Этого можно добиться, добавив echo "" в середине команд, где требуется пробел.

Here are some example.

  1. Добавление новой строки в середине.

Пример:

 df | fgrep '/dev/'; echo ""; free -h

выход

 tmpfs                                    16334344       55772  16278572   1% /dev/shm

              total        used        free      shared  buff/cache   available
Mem:            31G        4.0G         21G        346M        6.0G         26G
Swap:           15G        2.3M         15G
  1. Добавление сведений о команде.

Рекомендуется

Пример:

echo "==================" ; echo "This is output of df"; echo "==================" ;df | grep '/dev/shm' ; echo ""; echo "==================" ; echo "This is output of Free"; echo "==================";free -h

Выход:

==================
This is output of df
==================
tmpfs                                    16334344       55772  16278572   1% /dev/shm

==================
This is output of Free
==================
              total        used        free      shared  buff/cache   available
Mem:            31G        4.0G         21G        359M        6.0G         26G
Swap:           15G        2.3M         15G
2
08.07.2020, 09:23
2 ответа

общая информация

Когда файл создается с помощью системного вызова open(), существует настройка mode. Каждое разрешение, которое получает файл, должно быть запрошено в этом параметре mode.

Если в родительском каталоге нет списков ACL по умолчанию, права доступа к файлу объединяются modeс umask.

Если родительский каталог имеет ACL по умолчанию, то они и modeопределяют права владельца и разрешения для других.

Все остальные записи ACL берутся без изменений из списков ACL по умолчанию. Для достижения того же эффекта маска ACL не вычисляется из ACL_USER, ACL_GROUP, записей ACL_GROUP(, как это происходит, когда ACL задан явно ), а устанавливается в групповую часть mode..

Значение маски определяется как ACL по умолчанию, так и modeи маской по умолчанию. Он содержит только те разрешения, которые содержатся во всех трех элементах. Поэтому обычно маска по умолчанию уменьшается, но ее можно использовать и для уменьшения других значений.

Результаты могут сбивать с толку, если программы ведут себя "странно". Например. gccсоздает выходной файл с режимом 666, а затем выполняет chmod()с 777. Но это влияет только на разрешения для владельца и других лиц, поскольку записи ACL имеют приоритет.

ваше дело

  • touchсоздает файл с режимом 666.
  • ACL по умолчанию установлен на750
  • Результатом (разрешений, содержащихся в обоих ), является 640.
2
18.03.2021, 23:22

Если файл не является каталогом или исполняемым (выводом компилятора ), то он не будет иметь разрешений на выполнение.

Помните, что umask — это маска. Он не добавляет разрешения, а только блокирует их. Программа, создающая файл, будет использовать режим rw, маска разрешит это для пользователя-владельца и заблокирует wдля групп и заблокирует всех остальных.

1
18.03.2021, 23:22

Теги

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