我有以下系统(Linux / CentOS):
DEV
APACHE
DEV
分组: APACHE
, DEV
APACHE
分组: APACHE
, DEV
用户APACHE
运行Apache服务器。
我的WWW
文件夹位于/home/dev/www/
我的文档文件夹位于/home/dev/docs
在我的WWW
文件夹中有一个指向doc文件夹的符号链接。
我的PHP应用程序需要在文件夹中创build新的文件夹。 doc文件夹的权限标志是rwxr-xr-x
。 如果我尝试mkdir到该文件夹,我会得到权限被拒绝。 如果我更改权限到rwxrwxr-x
一切正常。 我的问题是:对吗? 或者我应该改变运行Apache的用户?
我的build议是将文件的所有权保留在设置为DEV:DEV
/home/dev/(www|docs)
,并允许APACHE
用户通过组权限写入所需的文件夹。
这种APACHE
需要写入的文件夹的权限设置为rwxrwxr-x
,而只需要读取的文件夹可以将权限设置为rwxr-xr-x
。
在这种情况下还有一件事需要考虑。 由APACHE
用户创build的所有文件/文件夹将由APACHE:APACHE
(假定APACHE
用户的默认组为APACHE
)拥有。 因此,您可能无法使用您的DEV
用户写入这些文件/文件夹,具体取决于为APACHE
用户设置了哪个umask
。
为了解决这个不便之处,你可以在APACHE
要写入的文件夹上设置SGID位。 在你的情况下:
chmod g+s /home/dev/docs
并为APACHE
用户设置适当的umask
:
umask 0002
这样, APACHE
用户创build的/home/dev/docs
所有文件/文件夹都将拥有者设置为APACHE:DEV
并将权限设置为rwxrwxr-x
文件夹和rw-rw-r--
文件。
请注意,虽然这是一个可接受的开发环境解决scheme,但在生产服务器上,您可能不希望APACHE
用户将umask
设置为0002
。