4

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


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

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

1 ответ1

3

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

  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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .