ACLs e permissões clássicas

3

Estou tentando configurar um servidor git no meu servidor FreeNAS. O problema que tenho é com a configuração das permissões para diferentes usuários / grupos, assim como eu quero.

Basicamente eu tenho dois grupos diferentes: git-auth-user que contém todos os usuários que devem ter rwx acesso ao diretório que contém todos os repositórios (eu deveria limitar x aos diretórios que eu pensava, mas por enquanto isso é um pequeno detalhe) e git-unauth-user , que é basicamente apenas o daemon do git que deve distribuir somente o acesso de leitura.

Eu achei que executar setfacl -m "g:git-auth-user:rwx:fd:allow" git/ funcionaria para dar meus git-auth-user todos os direitos, mas isso não acontece.

A partir da pesquisa, parece que as permissões clássicas ainda limitam as permissões totais que as ACLs podem distribuir. Isso significa que eu tenho que basicamente dar others full (basicamente chmod 777 dir )? Mas então eu suponho que todos que não recebem seus direitos limitados através de ACLs teriam então acesso total também, o que obviamente não é o que eu quero.

Existe alguma maneira de definir os direitos de permissão clássicos de other aos mais permissivos que eu quero distribuir por meio de ACLs ou, caso contrário, há uma ACL que nega completamente o acesso a todos que não recebem especial? direitos de acesso?

Editar:

ls -la (portanto, chmod 770 para o diretório)

drwxrwx---+  2 root  wheel     2 Jun 22 23:45 git

e

$ getfacl git/
# file: git/
# owner: root
# group: wheel
group:git-auth-user:rwx-----------:fd----:allow
            owner@:rwxp--aARWcCos:------:allow
            group@:rwxp--a-R-c--s:------:allow
         everyone@:------a-R-c--s:------:allow

Agora, quando um usuário do grupo git-auth-user tenta gerar um novo diretório dentro do diretório git , obtenho

$ mkdir test.git
mkdir: test.git: Permission denied

Por outro lado, se eu usar chmod -R 777 git , tudo funciona bem, mas obviamente essa é uma solução muito ruim, pois dou a todos acesso completo ao diretório, enquanto a solução dos meus sonhos não teria acesso para todos, exceto git-auth-user ( ou seja, meu usuário git-ro também tem acesso de gravação ao diretório, agora posso remover especificamente todos os direitos desse usuário por ACLs, mas isso obviamente não é escalável. Tenho certeza de que deve haver uma solução melhor para isso que eu m com vista).

    
por Voo 21.06.2015 / 23:10

2 respostas

2

ACLs, se presentes, substituem os bits chmod usuais. Além disso, as ACLs do NFSv4 não possuem máscaras.

Acredito que o problema aqui é que você só define 'rwx' e não 'rwxp'. O 'p' é APPEND_DATA / ADD_SUBDIRECTORY, que é o que controla ... bem, adicionando subdiretórios.

    
por 10.10.2015 / 23:13
1

Se você usar as ACLs, as permissões de grupo clássicas se transformarão na chamada máscara, o que determina as permissões máximas que você pode dar efetivamente por setfacl, por exemplo.

ls -k shows
-rw-r--r--+ root root

e você tem setfacl -m g:users:rw

porque a máscara é apenas lida, o getfacl mostrará:

group:users:rw
effective r

Portanto, defina group como rw ou rwx pelo chmod clássico e você pode conceder todas as permissões por setfacl.

PS.

Isso é manipulação de ACL no Linux, afaik O Solaris com ZFS é um pouco diferente, não sei ao certo como o BSD com o ZFS lida com isso.

Experimente e poste suas descobertas aqui.

    
por 22.06.2015 / 07:33