我有以下系统(Linux / CentOS):
- 用户
DEV
- 用户
APACHE
DEV
分组:APACHE
,DEV
APACHE
分组:APACHE
,DEV
用户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
并设置适合用户umask
的APACHE
:
umask 0002
这样,用户/home/dev/docs
创建的所有文件/文件夹APACHE
的所有者都将被设置为,并且文件夹和文件APACHE:DEV
的权限都将被设置为。rwxrwxr-x
rw-rw-r--
请注意,虽然这对于开发环境来说是可接受的解决方案,但在生产服务器上您可能不希望APACHE
用户设置umask
为0002
。