Por que ls mostra permissões erradas para o grupo ao usar o ACL?

1

Eu tenho o seguinte script para definir permissões para o diretório Joomla CMS:

#!/bin/bash
if [ ! -d "" ]; then
  echo "Error: Folder does not exist or no folder given."
  echo ""
  exit 1
fi
# XAMPP uses daemon as default www-group for Apache.
WWWGROUP="daemon"
THEUSER='who | awk '{print }''
JOOMLADIR=""
chown -R $THEUSER:$WWWGROUP "$JOOMLADIR"
chmod g+s "$JOOMLADIR"
find "$JOOMLADIR" -type d -exec chmod 0755 {} \;
find "$JOOMLADIR" -type f -exec chmod 0644 {} \;

setfacl -b -k "$JOOMLADIR"
setfacl -Rm u:$THEUSER:rwX "$JOOMLADIR"
setfacl -Rm g:$WWWGROUP:rX "$JOOMLADIR"
setfacl -Rm d:u:$THEUSER:rwX "$JOOMLADIR"
setfacl -Rm d:g:$WWWGROUP:rX "$JOOMLADIR"

setfacl -m m::rwx "$JOOMLADIR"

# Some folders need to be writable by the web server.
setfacl -Rm g:$WWWGROUP:rwX "$JOOMLADIR/administrator/components"
setfacl -Rm g:$WWWGROUP:rwX "$JOOMLADIR/administrator/language"
setfacl -Rm g:$WWWGROUP:rwX "$JOOMLADIR/administrator/manifests"
setfacl -Rm g:$WWWGROUP:rwX "$JOOMLADIR/administrator/modules"
setfacl -Rm g:$WWWGROUP:rwX "$JOOMLADIR/administrator/templates"
setfacl -Rm g:$WWWGROUP:rwX "$JOOMLADIR/components"
setfacl -Rm g:$WWWGROUP:rwX "$JOOMLADIR/images"
setfacl -Rm g:$WWWGROUP:rwX "$JOOMLADIR/language"
setfacl -Rm g:$WWWGROUP:rwX "$JOOMLADIR/libraries"
setfacl -Rm g:$WWWGROUP:rwX "$JOOMLADIR/media"
setfacl -Rm g:$WWWGROUP:rwX "$JOOMLADIR/modules"
setfacl -Rm g:$WWWGROUP:rwX "$JOOMLADIR/plugins"
setfacl -Rm g:$WWWGROUP:rwX "$JOOMLADIR/templates"
setfacl -Rm g:$WWWGROUP:rwX "$JOOMLADIR/cache"
setfacl -Rm g:$WWWGROUP:rwX "$JOOMLADIR/administrator/cache"
setfacl -Rm g:$WWWGROUP:rwX "$JOOMLADIR/administrator/logs"
setfacl -Rm g:$WWWGROUP:rwX "$JOOMLADIR/tmp"
# Some extra security for configuration.php:
setfacl -m g:$WWWGROUP:r "$JOOMLADIR/configuration.php"
setfacl -m o:0000 "$JOOMLADIR/configuration.php"

Se eu usar esse script para definir permissões para a pasta da qual tenho uma listagem abaixo, por que a pasta every obtém permissão de gravação para o grupo daemon ? Pelo menos, ele é listado como tal, embora o comando getfacl liste as permissões corretamente.

totaal 172
drwxrwxr-x+ 11 myuser daemon  4096 okt  4 07:52 administrator
drwxrwxr-x+  2 myuser daemon  4096 okt  4 07:52 bin
drwxrwxr-x+  2 myuser daemon  4096 okt  4 07:52 cache
drwxrwxr-x+  2 myuser daemon  4096 okt  4 07:52 cli
drwxrwxr-x+ 19 myuser daemon  4096 okt  4 07:52 components
-rw-rw-r--+  1 myuser daemon  3005 okt  4 07:52 htaccess.txt
drwxrwxr-x+  5 myuser daemon  4096 okt  4 07:52 images
drwxrwxr-x+  2 myuser daemon  4096 okt  4 07:52 includes
-rw-rw-r--+  1 myuser daemon  1420 okt  4 07:52 index.php
drwxrwxr-x+ 14 myuser daemon  4096 okt  4 07:52 installation
drwxrwxr-x+  4 myuser daemon  4096 okt  4 07:52 language
drwxrwxr-x+  5 myuser daemon  4096 okt  4 07:52 layouts
drwxrwxr-x+ 12 myuser daemon  4096 okt  4 07:52 libraries
-rw-rw-r--+  1 myuser daemon 18092 okt  4 07:52 LICENSE.txt
drwxrwxr-x+ 27 myuser daemon  4096 okt  4 07:52 media
drwxrwxr-x+ 27 myuser daemon  4096 okt  4 07:52 modules
drwxrwxr-x+ 17 myuser daemon  4096 okt  4 07:52 plugins
-rw-rw-r--+  1 myuser daemon  4872 okt  4 07:52 README.txt
-rw-rw-r--+  1 myuser daemon   836 okt  4 07:52 robots.txt.dist
drwxrwxr-x+  5 myuser daemon  4096 okt  4 07:52 templates
drwxrwxr-x+  2 myuser daemon  4096 okt  4 07:52 tmp
-rw-rw-r--+  1 myuser daemon  1690 okt  4 07:52 web.config.txt

O que estou tentando alcançar é isso:

Estou tentando configurar um ambiente para desenvolver extensões do Joomla.

Estou usando o Eclipse IDE com dois projetos abertos no meu espaço de trabalho:

  • O projeto que contém minha extensão.
  • O projeto que contém o diretório de instalação do Joomla CMS.

Eu também estou usando a ferramenta de compilação Phing para copiar arquivos da extensão para o diretório de instalação do Joomla CMS para testar alterações de código.

Também estou usando o XAMPP, que agrupa o servidor web Apache (que é executado como usuário daemon e sob o grupo daemon ) e serve arquivos de /opt/lampp/htdocs .

Dentro de /opt/lampp/htdocs reside o diretório de instalação do Joomla em /opt/lampp/htdocs/joomla .

O problema é quando apagar e copiar os arquivos e diretórios da extensão para o diretório de instalação do Joomla eu recebo erros de permissão.

Por que recebo erros de permissão? Bem, isso é porque quando eu primeiro faço instalar o meu ZIP (extensão / componente) através do site Joomla (mais tarde eu quero ser capaz de ver instantaneamente alterações de código copiando diretamente do projeto de extensão para instalação do Joomla diretório) o servidor web (Apache) cria o componente como dono daemon e group daemon .

No entanto, desejo conceder permissões de leitura, gravação e execução para meu próprio usuário ( myuser ) em vez de daemon , pois desejo excluir o conjunto antigo de arquivos e diretórios de administrator/components/com_mycomp e components/com_mycomp (apenas um exemplo).

Estou tentando seguir um artigo do Joomla aqui que tenta configurar um ambiente de desenvolvimento para extensões: link

Basicamente eu apenas baixei o arquivo ZIP do Joomla, descompacte-o e copie-o para /opt/lampp/htdocs/joomla .

Então eu corro:

sudo securepermissions.sh /opt/lampp/htdocs/joomla

Em seguida, ele não gera nenhum erro, exceto o arquivo de configuração Joomla não existente, ao qual ele tenta definir permissões (atualmente, tente reinstalar, por isso não há configuration.php ainda).

Então, eu corro ls -l dentro da pasta joomla e obtenho minha listagem que obviamente mostra a máscara, como explicado pelo usuário @dessert (e que eu não sabia primeiro).

Mas ainda assim, quando uso find . -ls na pasta joomla , ele ainda mostra as permissões para o grupo daemon ser rw- para arquivos e rwx para diretórios, mesmo que eles não tenham sido definidos maneira de usar o script, tanto quanto eu sei.

    
por Wieger 14.10.2017 / 08:52

1 resposta

1

Se a ACL estiver presente, ls -l sinaliza que com + no final da coluna de permissão. Além disso, não mostra as permissões do grupo, mas a máscara , consulte este exemplo:

$ getfacl file
user::rw-
user:user:---
group::---
group:group:---
mask::rwx
other::---

$ ls -l file
-rw-rwx---+ 1 user group 0 2010-01-01 00:00 file

Fonte: link

Além de seu script poder ser amplamente simplificado, veja este pastie , testado com shellcheck.net .

    
por dessert 14.10.2017 / 09:54