Apache 在 WWW 文件夹之外的写入权限

Apache 在 WWW 文件夹之外的写入权限

我有以下系统(Linux / CentOS):

  • 用户DEV
  • 用户APACHE

DEV分组:APACHEDEV APACHE分组:APACHEDEV

用户APACHE运行 apache 服务器。

我的WWW文件夹位于/home/dev/www/ 我的文档文件夹位于/home/dev/docs 我的文件夹中WWW有一个指向 doc 文件夹的符号链接。

我的 php 应用程序需要在 doc 文件夹中创建新文件夹。doc 文件夹的权限标志是rwxr-xr-x。如果我尝试 mkdir 到该文件夹​​,则会被拒绝权限。如果我将权限更改为rwxrwxr-x全部,则没问题。我的问题是:这样正确吗?或者我应该更改运行 apache 的用户吗?

答案1

我的建议是保留文件所有权/home/dev/(www|docs)DEV:DEV并允许APACHE用户通过组权限写入所需的文件夹。

这样,APACHE需要写入的文件夹将具有设置为的权限rwxrwxr-x,而只需要读取的文件夹可以将权限设置为rwxr-xr-x

在此场景中,还有一件额外的事情需要考虑。APACHE用户创建的所有文件/文件夹将归APACHE:APACHE(假设APACHE用户的默认组为APACHE)所有。因此,您可能无法使用您的DEV用户写入这些文件/文件夹,具体取决于umask为用户设置的内容APACHE

APACHE为了解决这个不便,您可以在要写入的文件夹上设置 SGID 位。对于您的情况:

chmod g+s /home/dev/docs

并设置适合用户umaskAPACHE

umask 0002

这样,用户/home/dev/docs创建的所有文件/文件夹APACHE的所有者都将被设置为,并且文件夹和文件APACHE:DEV的权限都将被设置为。rwxrwxr-xrw-rw-r--

请注意,虽然这对于开发环境来说是可接受的解决方案,但在生产服务器上您可能不希望APACHE用户设置umask0002

相关内容