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を使用しています。
また、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
です。私の知る限り、スクリプトを使用します。
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 を参照してください。