用户对他拥有的文件夹没有写权限?

用户对他拥有的文件夹没有写权限?

我正在处理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用户身份运行的单个池。如果您将usergroup更改/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

相关内容