web-dev-qa-db-fra.com

Pourquoi ls affiche-t-il des autorisations erronées pour le groupe lors de l'utilisation d'ACL?

J'ai le script suivant pour définir les autorisations pour le répertoire Joomla CMS:

#!/bin/bash
if [ ! -d "$1" ]; 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 $1}'`
JOOMLADIR="$1"
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"

Si j’utilise ensuite ce script pour définir les autorisations pour le dossier dont j’ai la liste ci-dessous, pourquoi chaque dossier obtient-il l’autorisation en écriture pour le daemon groupe? Au moins, il est répertorié comme tel, bien que la commande getfacl dresse la liste des autorisations correctement.

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

Ce que j'essaie de réaliser est le suivant:

J'essaie de configurer un environnement pour développer des extensions Joomla.

J'utilise Eclipse IDE avec deux projets ouverts dans mon espace de travail:

  • Le projet qui contient mon extension.
  • Le projet qui contient le répertoire d'installation du Joomla CMS.

J'utilise également l'outil de compilation Phing pour copier les fichiers de l'extension dans le répertoire d'installation du Joomla CMS afin de tester les modifications de code.

J'utilise également XAMPP, qui regroupe le serveur Web Apache (qui s'exécute en tant qu'utilisateur daemon et sous le groupe daemon) et sert les fichiers de /opt/lampp/htdocs.

Dans /opt/lampp/htdocs réside le répertoire d'installation de Joomla à /opt/lampp/htdocs/joomla.

Le problème est lors de la suppression et de la copie des fichiers et des répertoires de l'extension vers le répertoire d'installation de Joomla. J'obtiens des erreurs d'autorisation.

Pourquoi ai-je des erreurs d'autorisation? Eh bien, c’est parce que quand , j’installe pour la première fois mon Zip (extension/composant) via le site Web de Joomla (plus tard, je veux pouvoir voir instantanément le code change en le copiant directement du projet d’extension dans le répertoire d’installation de Joomla) le serveur Web (Apache) crée le composant en tant que propriétaire daemon et groupe daemon.

Toutefois, je souhaite accorder des autorisations de lecture, d'écriture et d'exécution à mon propre utilisateur (myuser) au lieu de daemon, car je souhaite pouvoir supprimer l'ancien ensemble de fichiers et de répertoires de administrator/components/com_mycomp et components/com_mycomp ( juste un exemple).

J'essaie de suivre un article de Joomla ici qui tente de configurer un environnement de développement pour les extensions: https://docs.joomla.org/Extension_development_using_Eclipse_and_phing

En gros, je viens de télécharger le fichier Joomla Zip, de le décompresser et de le copier dans /opt/lampp/htdocs/joomla.

Puis je cours:

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

Ensuite, il ne génère aucune erreur, à l'exception du fichier de configuration Joomla non existant, pour lequel il tente de définir des autorisations (actuellement, tentative de réinstallation, raison pour laquelle il n'existe pas encore de configuration.php).

Alors, je lance ls -l dans le dossier joomla et récupère ma liste qui montre bien le masque, comme l'explique l'utilisateur @dessert (et que je ne connaissais pas auparavant).

Mais quand même, lorsque j'utilise find . -ls sur le dossier joomla, il affiche toujours les autorisations du groupe daemon étant rw- pour les fichiers et rwx pour les répertoires, même si elles n'ont pas été définies de cette façon. en utilisant le script, autant que je sache.

2
Wieger

Si ACL est présent, ls -l le signale avec un + à la fin de la colonne des permissions. De plus, il n'affiche pas les autorisations de groupe mais le masque à la place , voir cet exemple:

$ 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

Source: https://wiki.ubuntuusers.de/ACL/

Outre que votre script peut être grandement simplifié, voir this pastie , testé avec shellcheck.net .

2
dessert