Почему ls показывает неправильные полномочия для группы при использовании ACL?

У меня есть следующий сценарий для установки полномочий для каталога 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"

Если я затем использую тот сценарий для установки полномочий, для папки которых у меня есть упоминание ниже, почему каждая папка затем получает разрешение записи для daemon группа? По крайней мере, это перечислено как таковое, хотя getfacl команда действительно перечисляет полномочия правильно.

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

То, чего я пытаюсь достигнуть, является этим на самом деле:

Я пытаюсь установить среду для разработки расширений Joomla.

Я использую Eclipse IDE с двумя открытыми проектами в моей рабочей области:

  • Проект, который содержит мое расширение.
  • Проект, который содержит каталог установки CMS Joomla.

Я также использую инструмент сборки Phing для копирования файлов от расширения до каталога установки CMS Joomla к изменениям тестового кода.

Я также использую XAMPP, который связывает веб-сервер Apache (который работает как пользователь daemon и под группой daemon) и файлы подач от /opt/lampp/htdocs.

Внутри /opt/lampp/htdocs находится каталог установки Joomla в /opt/lampp/htdocs/joomla.

Проблема при удалении и копировании файлов и каталогов от расширения до каталога установки Joomla, я получаю ошибки разрешения.

Почему я получаю ошибки разрешения? Ну, поэтому когда я сначала устанавливаю свой ZIP (расширение/компонент) через веб-сайт Joomla (позже, я хочу смочь немедленно видеть изменения кода путем копирования его непосредственно от дополнительного проекта до каталога установки Joomla), веб-сервер (Apache) создает компонент как владельца daemon и группа daemon.

Однако я хочу дать чтение, записать и выполнить полномочия для моего собственного пользователя (myuser) вместо daemon потому что я хочу смочь удалить старый набор файлов и каталогов от administrator/components/com_mycomp и components/com_mycomp (просто пример).

Я пытаюсь следовать статье Joomla здесь, которая пробует, и установите среду разработки для расширений: https://docs.joomla.org/Extension_development_using_eclipse_and_phing

В основном я просто загружаю zip-файл Joomla, разархивировал его и копирую его в /opt/lampp/htdocs/joomla.

Затем я работаю:

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

Затем это не производит ошибок за исключением несуществующего конфигурационного файла Joomla, который это пытается установить полномочия на (в настоящее время пытался переустановить, вот почему существует нет configuration.php все же).

Так, я работаю ls -l в joomla папка и получает мой список, который, конечно, показывает маску как пользователь @dessert объясненный (и который я не знал сначала).

Но тем не менее, когда я использую find . -ls на joomla папка это все еще показывает полномочия для группы daemon быть rw- для файлов и rwx для каталогов, даже при том, что они не были установлены этот способ использовать сценарий, насколько я знаю.

2
задан 14 October 2017 в 12:01

1 ответ

Если ACL присутствует, ls -l сигналы это с + в конце столбца разрешения. Дополнительно это не показывает полномочия группы, но маску вместо этого , видит этот пример:

$ 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

Источник: https://wiki.ubuntuusers.de/ACL /

Помимо Вашего сценария может быть в основном упрощен, видеть этот pastie, протестированный с shellcheck.net .

2
ответ дан 2 December 2019 в 03:36

Другие вопросы по тегам:

Похожие вопросы: