授予用户 mkdir()

授予用户 mkdir()

我有一个 php 脚本,我在其中使用该函数mkdir(),但我得到了

警告:mkdir() [function.mkdir]:权限被拒绝

我如何授予用户使用该功能的权限?

Apache/CentOS


更新

这是我尝试在其中创建文件夹的文件夹的权限:

drwxrwxrwx  2 rayhawkpascom pasgroup 4096 Sep 28 15:07 uploads

* 用户和组都是递归的。

以下是 pasgroup 的成员

# grep pasgroup /etc/group
pasgroup:x:562:rayhawkpascom,apache,nobody

* 我尝试过 www-data,但是

# /usr/sbin/usermod -G pasgroup www-data
usermod: user www-data does not exist

据我所知,我已正确完成所有操作,但它仍然不起作用...=\

答案1

由于您在 apache 下运行它,因此 apache 用户(通常是 www-data)需要对其尝试运行的目录具有写权限mkdir()。将 www-data 添加到拥有该目录的组或执行chgrp www-data dir更改组所有权的操作。

答案2

为了扩展 Slilibri 的答案,有几种方法可以为 Apache 和底层用户授予 mkdir 权限(通常是 www-data,但也可以是 Apache,具体取决于发行版)

将把文件夹的所有者更改为 apache,授予文件夹及其子文件夹的 R/W/E 权限,但可能会破坏其他程序对该文件夹的访问权限。-R 是可选的,但如果脚本要创建子文件夹,则可能是必要的,如果 apache 是唯一使用该文件夹的程序,这将是最好的设置。

chown -R www-data folder

将更改文件夹的组但不会更改所有者,这可能足以创建文件夹,但根据文件夹的安全设置,可能不行。如果你运行该命令

#ls -l
drwxrwxr-x  3 root  admin  102 19 May  2009 httpd

第一个数字串代表该文件/文件夹的安全设置。d 表示它是一个文件夹,第一个 r 表示所有者可以读取该文件/文件夹,第二个 r 表示组可以读取该文件夹,第三个 r 表示每个人都可以读取该文件夹。同样的理论也适用于 x,第一个 x 表示所有者可以执行该文件/文件夹等......

w 表示写入,第一个和第二个 w 允许所有者和组具有写访问权限,但第三个 w 被替换为“-”,因为第三个字母指定所有人,这意味着除所有者和组成员之外的所有人都可以写入此文件/文件夹。

要允许每个人读/写/执行,您可以使用此命令。

 chmod -R 777 folder

不过更好的设置是 775,775 只允许组成员和所有者进行读/写,它更安全。

相关内容