Qual é a diferença entre aclinherit e aclmode?

5

Os sistemas de arquivos ZFS podem ter as propriedades aclinherit e aclmode definidas neles para controlar como as entradas de ACL herdáveis interagem com a criação de objetos e operações de permissões no estilo Unix.

Infelizmente, a documentação oficial é um pouco enigmática / ambígua sobre exatamente qual é a diferença entre essas duas propriedades em termos de seu papel na computação de ACLs. Para ilustrar, leia estes trechos de Protegendo arquivos e verificando a integridade dos arquivos no Oracle® Solaris 11.3 , ênfase minha:

aclinherit – Determine the behavior of ACL inheritance...

e:

aclmode – Modifies ACL behavior when a file is initially created or controls how an ACL is modified during a chmod operation...

Isso é realmente confuso, porque a herança da ACL ocorrerá ou não ocorrerá quando um arquivo for criado inicialmente !

Quanto a chmod , o idioma acima e alguns dos exemplos sugerem que seu comportamento é governado por aclmode , mas há também um exemplo na p.45 que mostra que ele é governado por aclinherit .

Tenho a sensação de que isso também é complicado por variáveis nas APIs usadas para criar arquivos. (Eu estou familiarizado com as APIs do Windows, mas não com as * nix).

Sinto que, mesmo depois de ler a documentação, tenho uma imagem incompleta de como essas propriedades funcionam.

Qual é exatamente a diferença entre os dois? Eles parecem ter alguma sobreposição, então o que governa o que é aplicado? E se eles contradizerem?

    
por Kevin 28.06.2017 / 22:54

1 resposta

0

A partir do manual do openzfs link

Clone repo e man openzfs/usr/src/man/man1m/zfs.1m

 aclinherit=discard|noallow|restricted|passthrough|passthrough-x
   Controls how ACEs are inherited when files and directories are created.

   discard        does not inherit any ACEs.
   noallow        only inherits inheritable ACEs that specify "deny" permissions.
   restricted     default, removes the write_acl and write_owner permissions 
                  when the ACE is inherited.
   passthrough    inherits all inheritable ACEs without any modifications.
   passthrough-x  same meaning as passthrough, except that the owner@, group@, and 
                  everyone@ ACEs inherit the execute permission only if the file 
                  creation mode also requests the execute bit.

   When the property value is set to passthrough, files are created with a mode 
   determined by the inheritable ACEs.  If no inheritable ACEs exist that affect 
   the mode, then the mode is set in accordance to the requested mode from the 
   application.


 aclmode=discard|groupmask|passthrough|restricted
   Controls how an ACL is modified during chmod(2) and how inherited ACEs are 
   modified by the file creation mode.

   discard      default, deletes all ACEs except for those representing the mode 
                of the file or directory requested by chmod(2).
   groupmask    reduces permissions granted by all ALLOW entries found in the ACL 
                such that they are no greater than the group permissions specified 
                by the mode.
   passthrough  indicates that no changes are made to the ACL other than creating 
                or updating the necessary ACEs to represent the new mode of the 
                file or directory.
   restricted   causes the chmod(2) operation to return an error when used on any 
                file or directory which has a non-trivial ACL, with entries in 
                addition to those that represent the mode.

   chmod(2) is required to change the set user ID, set group ID, or sticky bit on 
   a file or directory, as they do not have equivalent ACEs.  In order to use 
   chmod(2) on a file or directory with a non-trivial ACL when aclmode is set to 
   restricted, you must first remove all ACEs except for those that represent the 
   current mode.
    
por 18.04.2018 / 17:31