Como defino permissões acl padrão (não herdam) na criação de arquivos?

4

Isto é com uma caixa freenas (FreeNAS-9.3-STABLE-201506292130).

No linux baseado no debian geralmente há uma permissão padrão de 644/755 para arquivos / diretórios (agora 664/775?). Pelo que entendi, isso acontece porque o umask é definido como 022 ou 002, que governa as permissões padrão para a criação de novos arquivos. No entanto, em freenas (permissões de estilo windows acl), a criação de arquivos padrão simplesmente herda as permissões do diretório contido. Eu vejo a partir da página man setfacl

página man setfacl (1)

que existe um sinalizador de herança. No entanto, estou procurando mais por um padrão do que por herança. Existe uma maneira de mudar isso para ter o comportamento de criação mais próximo do que é feito nos sistemas baseados no Debian? Ou seja, eu quero arquivos 644 e diretórios 755. Eu não quero arquivos recém-criados para apenas pegar 755 permissões porque o diretório como estas permissões.

Eu tenho torturado meu cérebro tentando fazer algo funcionar. No momento, estou usando as ACLs do NFSv4 e recebo um erro de 'incompatibilidade de marca' ao tentar usar as ACLs POSIX, por isso tenho usado o que posso com os comandos windows-style, freenas, freebsd, NFSv4, setfacl / getfacl e eu não fui capaz de obter o comportamento acima de qualquer coisa que eu tente.

$ mkdir test
$ cd test
$ ls -lat
drwxr-xr-x+  2 user  user   2 Aug  1 12:40 . 
drwxr-xr-x+ 67 user  user  67 Aug  1 12:40 ..
$ touch testfile
$ ls -lat
drwxr-xr-x+  2 user  user   3 Aug  1 12:40 .
-rwxr-xr-x+  1 user  user   0 Aug  1 12:40 testfile
drwxr-xr-x+ 67 user  user  67 Aug  1 12:40 ..
# file: .
# owner: user
# group: user
            owner@:rwxpDdaARWcCos:fd----:allow
            group@:r-x---a-R-c--s:fd----:allow
         everyone@:r-x---a-R-c--s:fd----:allow
$ getfacl testfile
# file: testfile
# owner: user
# group: user
            owner@:rwxpDdaARWcCos:------:allow
            group@:r-x---a-R-c--s:------:allow
         everyone@:r-x---a-R-c--s:------:allow
    
por Joe 01.08.2015 / 18:45

1 resposta

1

Não há "ACL padrão" nas ACLs do NFSv4. No entanto, você tem um controle preciso sobre o que é herdado e por quê. Em particular, você pode adicionar ACEs para serem herdadas por arquivos e outro conjunto que pode ser herdado por diretórios. Assim - os três primeiros serão aplicados aos diretórios, os três a seguir - para arquivos. Note que os diretórios herdarão ambos, mas as entradas de "arquivo" terão o sinalizador "i" (inherit_only) definido, portanto elas não se aplicarão ao próprio diretório - elas estarão lá apenas para serem herdadas pelos arquivos nos diretórios. Então, esta é a ACL no diretório pai:

        owner@:rwxp----------:-di----:allow
        group@:r-x-----------:-di----:allow
     everyone@:r-x-----------:-di----:allow
        owner@:rw-p----------:f-i----:allow
        group@:r-------------:f-i----:allow
     everyone@:r-------------:f-i----:allow
        owner@:rwxp--aARWcCos:-------:allow
        group@:r-x---a-R-c--s:-------:allow
     everyone@:r-x---a-R-c--s:-------:allow

Isto é o que será herdado pelos arquivos (o sinalizador 'I' significa que a entrada foi herdada; não existia antes do FreeBSD 11-CURRENT):

        owner@:rw-p----------:------I:allow
        group@:r-------------:------I:allow
     everyone@:r-------------:------I:allow

Isto é o que será herdado pelos diretórios (o sinalizador 'i' significa 'inherit_only' - a ACE está lá, mas isso não afeta as permissões de acesso reais para ele; é apenas para ser herdado):

        owner@:rwxp----------:-d----I:allow
        group@:r-x-----------:-d----I:allow
     everyone@:r-x-----------:-d----I:allow
        owner@:rw-p----------:f-i---I:allow
        group@:r-------------:f-i---I:allow
     everyone@:r-------------:f-i---I:allow
    
por 27.01.2016 / 13:32