我整天都在做这件事,我想我终于弄明白了,但我想在投入生产之前先确定一下。
我正在更改我的服务器以允许apache:apache
用户对几个目录具有写权限。jeff:jeff
我是服务器上的唯一用户。
我的目录结构看起来像这样:
/home/jeff/www/ 0755 jeff:jeff
/home/jeff/www/example1.com/ 0755 jeff:jeff
/home/jeff/www/example2.com/ 0755 jeff:jeff
/home/jeff/www/example2.com/uploads/ 0755 apache:apache
问题是:
我运行chmod apache:apache uploads/
以允许apache
写访问。
每当我想uploads/
通过 sftp 编辑文件时,我都必须将chown
其返回jeff:jeff
,然后在完成后反转。
我的初步解决方案是:
- 将
apache
用户添加到jeff
组 - 通过手册授予
jeff
组对目录的写权限uploads/
chmod 775
- 强制
apache
用户将任何新文件+文件夹+子文件夹创建为apache:jeff
. 要求setgid 2775
目录uploads/
_ - 强制用户通过systemd使用=
apache
创建任何新文件+文件夹+子文件夹umask 002
775
我只有大约 50% 的把握确定我做对了这一切。
听起来还好吗?有没有更好的办法?我错过了什么吗?
在 Jim 的帮助下,这是我使用的最终解决方案:
供我参考。
# usermod --append --groups apache jeff
> Relogin all sessions
# chown -R apache:apache www/example.com/uploads/
# find www/example.com/uploads/ -type d -exec chmod 775 {} \;
# find www/example.com/uploads/ -type f -exec chmod 664 {} \;
# systemctl edit --full php.service
-----------
[Service]
UMask=0002
-----------
# systemctl daemon-reload
# systemctl restart php
WordPress 用户会希望将其添加到他们的 wp-config.php 中:
define('FS_CHMOD_DIR', 0775);
define('FS_CHMOD_FILE', 0664);
是的,这是一般的想法,你相当接近,但我建议与其将用户添加
apache
到jeff
组中,不如这样做更安全,也许更方便(并且可扩展,如果这很重要)反过来说:带
apache
出jeff
团。相反,添加
jeff
到apache
组中。对于初学者来说,这会阻止apache
对所有jeff
组文件进行读取访问。chown
目录uploads/
,apache:apache
以便组chmod 775
中的任何人都apache
可以在那里创建/删除文件。使用
apache
创建文件umask 2
以便apache
创建的任何内容都是组可写的。这边走:
A)您不再需要
chown
文件才能编辑它们;所有upload
文件都归 group 所有apache
,是 group-writable,并且你已经属于该apache
组。B) 您可以轻松地将其他用户添加到
apache
组中,他们也可以编辑上传的文件。