Почему 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 с двумя открытыми проектами в моей рабочей области:
- Проект, который содержит мое расширение.
- Проект, который содержит каталог установки Joomla CMS.
Я также использую инструмент сборки Phing для копирования файлов из расширения в каталог установки Joomla CMS для проверки изменений кода.
Я также использую 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 для каталогов, даже если они не были установлены таким образом с помощью сценария, насколько я знаю.
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/
Кроме того, ваш сценарий может быть в значительной степени упрощен, см. Этот пример, протестированный с http://www.shellcheck.net/.