Как установить разрешения для каталога, который завещает его разрешения всем подкаталогам?

297
boardrider

Есть ли способ установить разрешения для каталога * nix, чтобы при создании подкаталога был создан подкаталог со всеми разрешениями в качестве родительского каталога?


Есть следующее, но, похоже, не все, о чем я прошу:

В большинстве систем, если установлен бит set-group-ID каталога, вновь созданные подфайлы наследуют ту же группу, что и каталог, а недавно созданные подкаталоги наследуют бит set-group-ID родительского каталога. В некоторых системах бит set-user-ID каталога оказывает аналогичное влияние на владение новыми подфайлами и биты set-user-ID новых подкаталогов. Эти механизмы позволяют пользователям более легко обмениваться файлами, уменьшая необходимость использовать chmod или chown для обмена новыми файлами.

4

1 ответ на вопрос

3
Yaron

Когда подпапка создается, разрешение новой подпапки определяется следующим образом:

  1. Свойства пользователя создали каталог:

    а. Идентификатор пользователя

    б. идентификаторы группы

  2. Определенный umask

  3. Папка родителей default ACL(если существует)

Примечание: больше информации можно найти в acl man

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

ACL доступа для файлового объекта инициализируется, когда объект создается с помощью любой из функций creat (), mkdir (), mknod (), mkfifo () или open (). Если ACL по умолчанию связан с каталогом, параметр mode для функций, создающих файловые объекты, и ACL по умолчанию для каталога используются для определения ACL нового объекта:

1. Новый объект наследует ACL по умолчанию для содержащегося каталога в качестве ACL доступа.

2. Записи ACL доступа, соответствующие битам разрешений файла, модифицируются таким образом, что они не содержат разрешений, которые не содержатся в разрешениях, указанных параметром mode.

Если ACL по умолчанию не связан с каталогом, параметр mode для функций, создающих объекты файлов, и маска создания файлов (см. Umask (2)) используются для определения ACL нового объекта:

  1. Новому объекту назначен ACL-доступ, содержащий записи типов тегов ACL_USER_OBJ, ACL_GROUP_OBJ и ACL_OTHER. Разрешения этих записей установлены на разрешения, указанные маской создания файла.

  2. Записи ACL доступа, соответствующие битам разрешений файла, модифицируются таким образом, что они не содержат разрешений, которые не содержатся в разрешениях, указанных параметром mode.

Инструкции по настройке ACL по умолчанию были скопированы из этого Q & A

chmod g+s <directory> //set gid  setfacl -d -m g::rwx /<directory> //set group to rwx default  setfacl -d -m o::rx /<directory> //set other 

Далее мы можем проверить:

getfacl /<directory> 

Выход:

# file: ../<directory>/ # owner: <user> # group: media # flags: -s- user::rwx group::rwx other::r-x default:user::rwx default:group::rwx default:other::r-x 

Более подробную информацию о umaskможно найти в Umask Man

 umask() sets the calling process's file mode creation mask (umask) to mask & 0777 (i.e., only the file permission bits of mask are used), and returns the previous value of the mask.  The umask is used by open(2), mkdir(2), and other system calls that create files to modify the permissions placed on newly created files or directories. Specifically, permissions in the umask are turned off from the mode argument to open(2) and mkdir(2).  Alternatively, if the parent directory has a default ACL (see acl(5)), the umask is ignored, the default ACL is inherited, the permission bits are set based on the inherited ACL, and permission bits absent in the mode argument are turned off. For example, the following default ACL is equivalent to a umask of 022:  u::rwx,g::r-x,o::r-x  Combining the effect of this default ACL with a mode argument of 0666 (rw-rw-rw-), the resulting file permissions would be 0644 (rw- r--r--).  The constants that should be used to specify mask are described under 
@boardrider - если я ответил на ваш вопрос, примите / оцените его Yaron 6 лет назад 1

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