Php 创建目录的正确权限是什么?

Php 创建目录的正确权限是什么?,php,linux,permissions,Php,Linux,Permissions,我正在尝试创建一个目录,并得到mkdir():权限被拒绝错误。我正在查看试图写入的文件夹,其文件夹权限设置为775。当我将目录权限更新为777时,mkdir成功。这样打开目录是个好主意吗 一般来说,拥有777权限的文件夹不是一个好主意,这是一个安全问题,尤其是如果该文件夹与您的web服务器有关 现在,您为什么会遇到此问题 php使用web服务器(通常是用户:www数据)用户凭据来访问系统 当权限设置为775时,表示“其他人”没有在该文件夹中写入的权限。一些常见的权限是 777 : anyone

我正在尝试创建一个目录,并得到
mkdir():权限被拒绝
错误。我正在查看试图写入的文件夹,其文件夹权限设置为
775
。当我将目录权限更新为
777
时,
mkdir
成功。这样打开目录是个好主意吗

一般来说,拥有777权限的文件夹不是一个好主意,这是一个安全问题,尤其是如果该文件夹与您的web服务器有关

现在,您为什么会遇到此问题

php使用web服务器(通常是用户:www数据)用户凭据来访问系统

当权限设置为775时,表示“其他人”没有在该文件夹中写入的权限。一些常见的权限是

777 : anyone can do anything (read, write, or execute)
755 : you can do anything; others can only read and execute
711 : you can do anything; others can only execute
644 : you can read and write; others can only read
您的问题的解决方案是将php使用的用户(例如www数据)添加到有权访问该文件的组中。尽管要注意您要访问的文件的所有者组是否为
root
,但将www数据添加到该组是个坏主意(因为安全问题)。为了避免这种情况,您可以创建一个组(即webUsers),您可以在其中添加www数据,并对您希望通过web服务器访问的任何文件授予该组权限

根据您真正想要实现的目标,您可以阅读以下两个问题/答案:

更新

正如@Dave Kok在评论中正确指出的:


“当使用这样的组时,将其设置为2775,这样在创建新文件时,它将获得与父目录相同的组,而不是用户所在的默认组。”

一般来说,使用权限为777的文件夹不是一个好主意,这是一个安全问题,尤其是如果该文件夹与您的web服务器有关

现在,您为什么会遇到此问题

php使用web服务器(通常是用户:www数据)用户凭据来访问系统

当权限设置为775时,表示“其他人”没有在该文件夹中写入的权限。一些常见的权限是

777 : anyone can do anything (read, write, or execute)
755 : you can do anything; others can only read and execute
711 : you can do anything; others can only execute
644 : you can read and write; others can only read
您的问题的解决方案是将php使用的用户(例如www数据)添加到有权访问该文件的组中。尽管要注意您要访问的文件的所有者组是否为
root
,但将www数据添加到该组是个坏主意(因为安全问题)。为了避免这种情况,您可以创建一个组(即webUsers),您可以在其中添加www数据,并对您希望通过web服务器访问的任何文件授予该组权限

根据您真正想要实现的目标,您可以阅读以下两个问题/答案:

更新

正如@Dave Kok在评论中正确指出的:


“当使用这样的组时,将其设置为2775,这样当创建新文件时,它将获得与父目录相同的组,而不是用户所在的默认组。”

仔细阅读,您将得到所有问题的答案(当然是关于ubuntu许可证的问题)

使用700权限并将php用户设置为所有者(
chown phpuser:phpuser
),这种方式是安全的


仔细阅读,你会得到所有问题的答案(当然是关于ubuntu许可证的问题)

使用700权限并将php用户设置为所有者(
chown phpuser:phpuser
),这种方式是安全的


授予文件夹权限(775/777)取决于您将对该文件夹执行的操作。一般来说,若文件夹中只包含一些只需要读取的文件,那个么775就可以了。但是,如果需要在任何文件夹上执行任何类型的写入操作,则需要将其设置为777。

授予文件夹权限(775/777)取决于您将对该文件夹执行的操作类型。一般来说,若文件夹中只包含一些只需要读取的文件,那个么775就可以了。但是,如果需要在任何文件夹上执行任何类型的写入操作,则需要将其设置为777。

当使用这样的组时,将其设置为2775,因此在创建新文件时,将获得与父目录相同的组,而不是用户所在的默认组。当使用这样的组时,将其设置为2775。因此,当创建新文件时,它将获得与父目录相同的组,而不是用户所在的默认组。这样打开目录是一个好主意吗?我假设PHP是以“其他”用户的身份运行的。也许将PHP进程添加到一个组会是一个更好的做法,并且不会将所有权限分配给系统上的每个用户。使用700个权限并将PHP用户设置为所有者(chown phpuser:phpuser)这种方式是一种安全的方式让目录像这样打开是一个好主意吗?我假设PHP是以“其他”用户的身份运行的。也许将PHP进程添加到组中会是一个更好的做法,并且不会将所有权限分配给系统上的每个用户。使用700个权限并将PHP用户设置为所有者(chown phpuser:phpuser),这种方式是一种安全的方式