用户/群组权限,它们如何工作?

用户/群组权限,它们如何工作?

我正在设置我的网站,我需要移动一些文件。我创建了一个简单的 PHP 脚本,其中涉及 mkdir()、copy() 等操作...但我收到权限错误。

将受影响的文件夹设置为 777 后,一切正常,但在我的旧网站上我设置的是 755。

如果我在 Plesk 中的用户是 Johnnie,并且文件上的用户是 Johnnie(并且组是 psacln),那么 PHP 脚本是否应该具有访问权限?如果没有,我需要如何设置用户才能使我的浏览器能够移动文件?

答案1

访问是什么意思? - 查看文件属性; - 打开文件进行读取; - 打开文件进行写入; - 打开文件进行读/写; - 打开文件进行执行。

请注意,即使 PHP 应用程序中的用户名与 Unix 用户具有相同的名称,它也不相同。

请注意,apache/php 以 apache、www、www-data、nobody... 用户身份运行。这是在 apache 配置中配置的。使用以下命令查找:

egrep -r '^User|^Group' /etc/{apache*,http*}

在任何更改之前运行备份。

找到您的用户和 Apache 用户所属的共同组。如果没有,请创建一个。

将 DocumentRoot 中的文件和文件夹的组更改为以下组:

chown -R myuser:commongroup /var/www/

更改文件夹的 SUID,以便新文件归该组所有:

find /var/www/ -type d -print0|xargs -0r chmod g+rxs
chmod -R u+r,g+r,o= /var/www/

对于您想要授予 PHP 写入权限的文件夹和文件,请执行以下操作:

chmod g+w /var/www/folder/subfolder   /var/www/folder/file.txt

答案2

如果您通过 cgi 或 mod-php 使用 php,且没有使用其他补丁/模块来处理权限,那么您的 php 脚本可能正在使用 Web 服务器的帐户执行。这通常是 www-data、nobody 或其他非 root 帐户。

您可能需要将 Web 服务器正在运行的用户添加到组中,或者创建一个包含 Web 服务器和任何其他需要访问的用户的组。

相关内容