在AWS上部署的资产的Silverstripe权限

时间:2015-10-02 10:14:36

标签: amazon-web-services file-permissions silverstripe

在SilverStripe的管理后端上传文件时,我总是被拒绝许可。

apache2在www-data下运行:www-data(用" whoami"以及在envvars中检查)。

assets文件夹的权限如下:

drwxrwxr-x+  5 git www-data 4.0K Oct  2 08:18 .
drwxrwsr-x+ 17 git users    4.0K Oct  2 09:53 ..
-rwxrwxr-x+  1 git www-data 1.5K Oct  2 08:18 .htaccess
drwxrwsr-x+  2 git www-data 4.0K Oct  2 07:28 Uploads
drwxrwsr-x+  2 git www-data 4.0K Oct  2 08:18 _combinedfiles
drwxrwsr-x+  2 git www-data 4.0K Oct  2 07:57 books
-rwxrwxr-x+  1 git www-data 4.5K Oct  1 14:48 error-404.html
-rwxrwxr-x+  1 git www-data 4.3K Oct  1 14:48 error-500.html
-rwxrwxr-x+  1 git www-data 4.4K Oct  2 08:18 web.config

即使我将它们设置为777,我仍然会被拒绝。它在本地工作,我无法理解为什么它不起作用。

Apache ErrorLog:

[Fri Oct 02 10:24:18.364138 2015] [:error] [pid 16008] [client 62.218.34.90:44300] PHP Warning:  copy(/var/www/X/assets/books/Mike.png): failed to open stream: Permission denied in /var/www/X/framework/filesystem/Upload.php on line 195, referer: http://x.amazonaws.com/index.php/admin/assets/add/?ID=7
[Fri Oct 02 10:24:18.364615 2015] [:error] [pid 16008] [client 62.218.34.90:44300] PHP Warning:  Requirements_Backend::process_combined_files(): Couldn't create '/var/www/X/assets/_combinedfiles//lib.js' in /var/www/X/framework/view/Requirements.php on line 1214, referer: http://x.amazonaws.com/index.php/admin/assets/add/?ID=7

这是AWS特定的问题吗?有线索吗?

2 个答案:

答案 0 :(得分:1)

问题是ACL。

使用getfacl ./assets/我可以确定ACL被设置为破坏正常的权限模型。

使用setfacl我能够推进ACL以将webuser(www-data)包含到assets rwx目录中。

希望这有助于某人, 最好的祝福。 ģ

答案 1 :(得分:0)

我建议您使用模块并将资产存储在S3中 https://github.com/markguinn/silverstripe-cloudassets