ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

debian – Apache PHP上传 – 所有权和权限

2019-08-14 04:37:07  阅读:350  来源: 互联网

标签:php debian permissions apache-httpd


我正在给我的第一步安装VPS Web服务器(Debian 8 Apache 2 PHP 5.6),并需要一些文件/文件夹权限的帮助.

我已经找到了一些关于这个主题的相似主题(不完全相同),以及4或5岁的所有主题.其中一些指向使用弃用的PHP方法的解决方案.也许今天有一些新的方法或解决方案.

好吧,Apache 2在www-data用户/组中运行.所以我创建了一个名为webadmin的用户,将其放在www-data组中并将其配置为主网站文件夹的所有者:

adduser webadmin
usermod -a -G www-data webadmin
chown -R webadmin:www-data /var/www/website.com

我还更改了public_html文件夹的权限,如下所示:

find /var/www/website.com/public_html -type f -exec chmod 644 {} +
find /var/www/website.com/public_html -type d -exec chmod 755 {} +
find /var/www/website.com/public_html -type d -exec chmod g+s {} +

并创建了将接收上传文件的文件夹(仅限静态文件 – 图像):

mkdir /var/www/website.com/public_html/uploads
chown webadmin:www-data /var/www/website.com/public_html/uploads
chmod 774 /var/www/website.com/public_html/uploads

现在,发生了什么:我使用SFTP上传的所有文件夹和PHP / Html文件(记录为webadmin)当然将webadmin作为所有者.当我使用PHP创建子文件夹并上传图像时,他们将www-data用户作为所有者.在这种情况下,我有一些权限问题,比如通过SFTP删除文件.

我可以指定Apache作为webadmin用户和www-data组运行,但我想我可以遇到安全问题(不是吗?).请问,是否有一个标准和最好的实践配置服务器或PHP脚本将创建文件夹并上传文件以避免此问题?

解决方法:

您的问题是新文件不是组可写的.不使用setgid on directory来设置组,而是使用ACLs提供更大的灵活性.

为新文件和目录继承默认ACL条目,授予在ACL中定义的权限.要为组webadmin设置默认ACL条目以允许rwx:

setfacl -m default:g:webadmin:rwx /var/www/website.com/public_html/uploads

在目录中创建的新文件对于组webadmin是可读写的.

如果ACL不是一个选项,则需要更改umask,这将确定新文件的默认UNIX权限.新umask的明智选择是002(世界可写位掩码)和007(掩蔽所有世界许可位,即只有组和所有者才能访问).

要设置Apache umask,请将systemd单元文件复制到/ etc:

cp /lib/systemd/system/apache2.service /etc/systemd/system/

通过将UMask=<umask>附加到[Service]部分,在/etc/systemd/system/apache2.service中配置umask.请注意,这会影响Apache创建的所有文件.

仅当您需要从PHP / Apache更改上载的文件/目录时,才需要更改smaskp的umask.默认的umask 022创建文件组和世界可读,但不能创建组可写.为sftp配置默认umask的最简单方法是使用pam_umask.

要仅为特定组中的用户应用自定义umask,并且仅在使用sftp时,请将/etc/pam.d/sshd附加到:

session [default=1 success=ignore] pam_succeed_if.so user notingroup <yourgroup>
session optional                   pam_umask.so umask=<umask>

如果用户不在组< yourgroup>组中,则第一条规则会告知pam跳过下一条规则,即如果用户位于组< yourgroup>组中,则仅应用下一条规则.第二个规则将umask设置为< umask>.

附录:请注意,使用mv移动的现有文件保留其原始权限和所有权.您可以通过使用cp -d复制文件来应用umask和目录setgid / ACL的默认权限.

标签:php,debian,permissions,apache-httpd
来源: https://codeday.me/bug/20190814/1650465.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有