我整天都在做这件事,我想我终于弄明白了,但我想在投入生产之前先确定一下。
我正在更改我的服务器以允许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);