web-dev-qa-db-ja.com

ACLを使用しているときに、lsがグループの間違った権限を表示するのはなぜですか?

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"

次に、そのスクリプトを使用して、下にリストされているフォルダーのアクセス許可を設定すると、なぜeveryフォルダーが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拡張機能を開発する環境をセットアップしようとしています。

ワークスペースで2つの開いているプロジェクトでEclipse IDEを使用しています。

  • 私の拡張機能を含むプロジェクト。
  • Joomla CMSインストールディレクトリを含むプロジェクト。

また、Phingビルドツールを使用して、拡張機能からJoomla CMSインストールディレクトリにファイルをコピーし、コードの変更をテストしています。

また、Apache Webサーバー(ユーザーdaemonおよびグループdaemonとして実行)をバンドルし、/opt/lampp/htdocsからファイルを提供するXAMPPを使用しています。

/opt/lampp/htdocsの内部には、/opt/lampp/htdocs/joomlaのJoomlaインストールディレクトリがあります。

問題は、拡張機能からJoomlaのインストールディレクトリにファイルとディレクトリを削除してコピーすると、アクセス権エラーが発生することです。

許可エラーが発生するのはなぜですか?それは、私が最初にdoJoomlaのウェブサイト経由でZip(拡張機能/コンポーネント)をインストールするためです(後でコードをすぐに見たい拡張プロジェクトからJoomlaインストールディレクトリに直接コピーすることにより変更します)Webサーバー(Apache)は、所有者daemonおよびグループdaemonとしてコンポーネントを作成します。

ただし、古いファイルとディレクトリのセットをadministrator/components/com_mycompおよびcomponents/com_mycompから削除できるようにするため、myuserではなく、自分のユーザー(daemon)に読み取り、書き込み、および実行のアクセス許可を付与します。単なる例)。

私はここで拡張機能の開発環境を試みるJoomlaの記事をフォローしようとしています: https://docs.joomla.org/Extension_development_using_Eclipse_and_phing

基本的には、Joomla Zipファイルをダウンロードし、解凍して/opt/lampp/htdocs/joomlaにコピーします。

次に実行します:

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

次に、存在しないJoomla構成ファイル以外のエラーを出力しません。これは、アクセス許可を設定しようとします(現在再インストールを試行しているため、まだconfiguration.phpはありません)。

そこで、joomlaフォルダー内でls -lを実行し、ユーザー@dessertが説明したように(もちろん、最初は知りませんでした)マスクを表示するリストを取得します。

それでも、joomlaフォルダーでfind . -lsを使用すると、グループdaemonのアクセス許可が表示されます。この方法は設定されていませんが、ファイルではrw-、ディレクトリではrwxです。私の知る限り、スクリプトを使用します。

2
Wieger

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/

スクリプトを大幅に簡略化できるほか、 shellcheck.net でテストされた this pastie を参照してください。

2
dessert