faz com que o ACL funcione perfeitamente

3

Eu sei que há muitas perguntas e respostas sobre o ACL e permissões, mas para ser honesto eles são tão fracos para fazer um entendimento coerente! é como uma mistura de informações não organizadas.

Espero que esta pergunta ponha fim a esta confusão

Problema :

No meu servidor web Ubuntu 14.04, eu quero:

  • efetue todas as files/future_files com 640 permissões,
  • all folders/future_folders com 750 permissões,
  • E tornar Admin:www-data os únicos proprietários padrão

Minha solução:

Eu usei ACLs:

setfacl -Rdm u:admin:rwX /path/to/parent //capital X apply for folders
setfacl -Rdm g:www-data:rX /path/to/parent
setfacl -Rdm o::- /path/to/parent 

agora já existem arquivos e pastas que seguem as regras perfeitamente.

Problema:

Agora estou logado como usuário admin , quando eu faço o novo diretório ele recebe 770 não 750 ? E quando eu faço novo arquivo, ele recebe 660 não 640? Por que não está adotando as regras!?

Aqui está o getfacl output:

# owner: admin
# group: www-data
# flags: ss-
user::rwx
group::r-x
other::---
default:user::rwx
default:user:admin:rwx
default:group::r-x
default:group:www-data:r-x
default:mask::rwx
default:other::---

Parece que há algum conflito entre as regras! embora eu tenha excluído todas as ACL antes de aplicar as novas regras.

P.S. Lembro-me de combiná-los em um comando como abaixo usado para trabalhar ... mas não é!

etfacl -Rdm u:admin:rwX,g:www-data:rwX,o::- /path/to/parent

Se você conhece uma versão curta correta, não hesite em fornecer:)

    
por Engineeroholic 01.03.2016 / 12:39

2 respostas

0

Um possível problema e solução, expandindo a resposta do @Engineeroholic

Veja o que um possível problema pode ser

$ whoami
admin
$ umask
0000

0000 é apenas um valor possível - um que você pode ver. Deixe-nos saber o que você faz .

Use uma das seguintes opções para corrigi-lo. Acho que isso deve resolver seu problema, mesmo que o problema acima não seja o seu problema.

# option 1: one session
$ umask 0027

ou (Certifique-se de anexar, >> . NÃO sobrescreva com um único sinal de maior que.)

# option 2: system-wide, note that you might need /etc/bash.profile, 
#           /etc/bash.bashrc, or something else called at login
#           if your system doesn't have /etc/.profile

$ echo -e "\n\n##New folders 0750, new files 0640" >> /etc/.profile
$ echo "umask 0027" >> /etc/.profile
$ source /etc/.profile

ou (Certifique-se de anexar, >> . NÃO sobrescreva com um único sinal de maior que.)

# option3: for 'admin' only. Make sure that you are writing to 
#          a file called at login, in case ~/.bashrc isn't 
#          called at that point.

$ echo -e "\n\n##New folders 0750, new files 0640" >> ~/.bashrc
$ echo "umask 0027" >> ~/.bashrc
$ source ~/.bashrc

Agora você pode criar arquivos que devem ter as permissões desejadas.

Você receberá o que algumas pessoas descrevem como 0770 - 0027 = 0750 , em que 0-7 vai para 0 .

Mais precisamente, você tem

   Octal1   Octal2   Binary1             Binary2
                       (    rwxrw---- )
      0770    0770         0111111000      0111111000
& NOT 0027  & 1750   & NOT 0000010111    & 1111101000
----------  ------   ----------------    ------------
      0750    0750         0111101000      0111101000
      ^                                 (   rwxr-x--- )
      |
      |
       'This one isn't really octal (I think.)

para seus diretórios.

Para seus arquivos:

  Octal     Binary1              Binary2
            (      rw-rw---- )
      0660        0110110000      0110110000
& NOT 0027  & NOT 0000010111    & 1111101000
----------    ----------------   ------------
      0640        0110100000      0110100000
                                (  rw-r----- )

Veja aqui para obter mais detalhes.

Não sei se esta resposta elucida a causa do comportamento, mas é uma solução possível.

Observe que seu getfacl inclui default:mask::rwx , que você pode alterar para default:mask::r-x , embora isso não seja o problema.

    
por 19.09.2018 / 03:38
0

Eu encontrei a solução eventualmente, esqueci completamente de atualizá-la aqui A solução é a seguinte:

1: defina os proprietários para todos e torne o grupo do proprietário herdável

- sudo chown -R admin:www-data /var/www/html 
- sudo chmod g+s  /var/www/html (inherit owner group)

2: aplicar permissão padrão para pastas e arquivos (750 e 640 respectivamente; o padrão deve ser protegido)

- sudo chmod -R 750 /var/www/html
- sudo find /var/www/html -type f -print0 | sudo xargs -0 chmod 640 (apply for files only)

** repeat file permissions for each sub-directory

3: aplicar permissão para os arquivos e pastas graváveis

- sudo chmod -R 770 /var/www/html/images
- sudo find /var/www/images -type f -print0 | sudo xargs -0 chmod 660

4: aplica as regras de herança automática (ACL)

- setfacl -Rdm u::rwX,g::rwX,o::- /path/to/parent  (Capital X only apply to directories)

5: verifique a ACL:

- getfacl /var/www/html

Espero que isso responda à pergunta

    
por 27.09.2018 / 10:08