我正在处理Debian10 with php8 fpm + apache2
,我创建了一个有组的新用户username:username
,并且为该用户设置了一个主目录,位于
/home/username/www
当然,我把chmod -R
所有的文件夹和文件都放到了username:username
,在文件在 www-data 之前/var/html
所以基本上我有一个小脚本试图编写一个缓存文件夹,但是当我将文件夹 chmod 为 username:username 时它不起作用,只有当我将文件夹 chmod 为 www-data 时它才起作用?
缓存文件夹 chown 755 ,如果不是,它工作www-data
正常username
是否有可能允许username
具有类似的写权限www-data
?
PS:用户名是真实用户名的示例
答案1
A可能的方法来username
控制内容,同时www-data
出于安全原因只具有读取权限,并且只在需要时具有写入权限:
设置
username
为所有者和www-data
组chown -R username:www-data /home/username/www
授予所有者完全访问权限(读/写/执行:7),并授予组只读访问权限(读/执行:5)。
Other
此处的组无访问权限(0)。chmod -R 750 /home/username/www
授予
www-data
需要的写权限:chmod -R 770 /home/username/www/path/writable/by/webserver
Web 服务器创建的文件将完全归其自身所有 ( www-data:www-data
),但目录所有者 ( username
) 仍然可以移动它们。
答案2
默认情况下,当您安装 PHP-FPM 时,它会安装一个以www-data
用户身份运行的单个池。如果您将user
和group
更改/etc/php/8.0/fpm/pool.d/www.conf
为正确的用户,那么您的脚本将以用户身份运行,并且www-data
不需要写入权限。
您的配置默认有以下两行:
user = www-data
group = www-data
将这些行替换为:
user = username
group = username
重新启动 FPM 守护进程
service php8.0-fpm restart