Consegui definir as permissões ACL padrão para novos arquivos da seguinte forma:
sudo setfacl -Rdm u:usernamehere:rwx /var/www/path/to/files
Isso parece dar a todos os novos arquivos uma permissão de:
-rw-r-----+
Espero que novos arquivos obtenham a seguinte permissão:
-rw-r--r--+
Se fizer alguma diferença, estou executando o CentOS.
Qualquer ajuda sobre isso é muito apreciada.
Obrigado!
Responder1
Primeiro, observe que ACLs de arquivos que possuem entradas de ACL para usuários ou grupos nomeados também possuem umMáscara LCAentrada que limita as permissões concedidas por essas entradas ACL e pela entrada do proprietário do grupo. A entrada da máscara mostra as permissões do grupo ls
e outros utilitários que analisam apenas os bits de permissão tradicionais.
Então, se você ls
mostrar -rw-r--r--+
, a máscara ACL é r--
, o que significa que a permissão ACL u:usernamehere:rwx
atuará como u:usernamehere:r--
. Pode não ser isso que você deseja. Por outro lado, observe que u:usernamehere:rwx
é diferente de u::rwx
, mesmo para arquivos pertencentes a usernamehere
. A primeira é uma entrada nomeada, limitada pela máscara, enquanto a segunda é a entrada para o proprietário do arquivo que énãolimitado.
A ideia da máscara é que uma ferramenta que execute o equivalente chmod go-rwx
ainda possa tornar o arquivo inacessível para qualquer pessoa, exceto o proprietário. Você pode remover a entrada de máscara com setfacl -x m:: filename
, mas isso só funciona se não houver entradas de usuário ou grupo nomeados.
Em qualquer caso, você pode adicionar mais de uma entrada padrão no mesmo comando. Isso definiria as entradas padrão para que o proprietário do arquivo obtivesse permissões rwx
, a máscara fosse definida como r--
e as permissões para "outros" fossem definidas como r--
:
$ setfacl -R -d -m u::rwx -m m::r-- -m o::r-- /path
Você também pode querer definir explicitamente uma ACL padrão para o proprietário do grupo ( g::
), já que a entrada aparece em qualquer caso (com os valores provavelmente retirados dos bits de permissão). Por exemplo, aqui, a entrada para o proprietário do grupo não está totalmente em vigor, pois a máscara a restringe:
default:user::rwx
default:group::r-x #effective:r--
default:mask::r--
default:other::r--
Um arquivo criado no diretório aparece ls
como -rw-r--r--+
.
Então, novamente, se você deseja apenas que o usuário nomeado obtenha as permissões que você diz, você pode deixar o campo de máscara de fora e setfacl
configurá-lo para você com base nas permissões usadas para as entradas reais da ACL:
setfacl -R -d -m u::rwx -m u:usernamehere:rwx -m o::r-- /path
Um arquivo criado no diretório agora aparece em ls
as -rw-rw-r--+
e em getfacl
:
user::rw-
user:usernamehere:rwx #effective:rw-
group::r-x #effective:r--
mask::rw-
other::r--
A máscara está faltando x
desde que criei o arquivo com touch
e ela usa as permissões 0666
, mascarando os x
bits.