Não é possível explicar o comportamento da ACL

6

Então esta é a situação: Tem servidor para desenvolvedores web. Existem muitos desenvolvedores. Todo developers + PHP + Apache pertence ao grupo www . Existe um diretório de desenvolvimento - development .

O objetivo é que cada arquivo no diretório development tenha 755 permissões e sempre que um desenvolvedor criar, modificar um arquivo no diretório development , os arquivos ainda terão 755 .

Então eu li vários acl tutoriais, guias e instruções, mas ainda não consegui o resultado que quero.

  1. meu disco está montado com acl
  2. eu tenho chown -R www:www development
  3. adicionado chmod g+s development
  4. Eu defini um número de acl regras no diretório development e recebi isto:

    $ getfacl development
    # file: development
    # owner: www
    # group: www
    # flags: -s-
    user::rwx
    user:www:rwx
    group::rwx
    group:www:rwx
    mask::rwx
    other::r-x
    default:user::rwx
    default:user:www:rwx
    default:group::rwx
    default:group:www:rwx
    default:mask::rwx
    default:other::r-x
    
    p.s. I know its messy, was doing a number of tests
    
  5. De acordo com a minha ideia de ACL , se o diretório tivesse tais regras, minha tarefa deveria ser alcançada, mas quando tento criar um arquivo em development dir, recebo:

    -rw-rw-r--+ 1 www     www      0 Nov 21 09:14 newfile
    

Não consigo entender por que isso cria rw- em vez rwx .

É provavelmente algo simples que eu perdi ou algum conceito geral que eu não entendo.

    
por Katafalkas 21.11.2012 / 10:20

1 resposta

4

Suas ACLs padrão substituem o umask, que não especifica permissões , mas máximo para criar novos arquivos. Nesse caso, rwxrwxr-x .

Em seguida, seu aplicativo chama open ou creat com as permissões desejadas. Apenas sobre todos os aplicativos solicitará rw-rw-rw- para arquivos.

Você pode ver isso executando strace , por exemplo,

$ strace -e trace=file touch newfile
...
open("newfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3

( 0666 é o mesmo que rw-rw-rw- .)

As duas permissões são combinadas usando bit a bit AND para fornecer rw-rw-r-- .

  rwxrwxr-x     # default ACL
  rw-rw-rw-     # permission requested (e.g. by touch, vim, etc.)
& _________
  rw-rw-r--     # effective permissions

Para outra explicação, veja Listas de Controle de Acesso POSIX - "Exemplo padrão da ACL".

Então a verdadeira questão é: por que você precisa que os arquivos sejam executáveis?

    
por 21.11.2012 / 17:22

Tags