好吧...我的服务器已经设置好了,/var/www/ 中有 4 个站点。根据这篇文章,每个站点目录及其下面的文件都是 root:www-pub:
处理 /var/www 中 Apache 2 用户 www-data 权限的最佳方法是什么?
我的用户 cdog 是 www-pub 的一部分,如上述帖子所示,经过更多研究后,我相信 umask 设置正确。
问题 1:在任何 /var/www/ 目录中创建新文件都会授予我权限
cdog:www-pub -rw-r--r--
所有其他文件
root:www-pub -rw-rw-r--
我被引导相信(根据以上帖子)任何新创建的文件都将是后者。
问题 2这些目录中的大部分内容具有
drwxrwsr-x
是 Joomla 目录。登录 Joomla 后端后,我得到了一大堆不可写的目录,这对更新/安装扩展/插件等来说很不利。
首先,为什么我的文件没有使用正确的权限创建?其次,为什么 Joomla 目录不可写?
答案1
用户的umask决定新文件获得哪些权限。创建文件或目录时,系统会以最宽松的权限(分别为 0666 和 0777)启动,然后清除umask 中指定的位。因此,默认 umask 022 会导致清除组和世界写入位,这就是最终得到 0644 的原因。
要创建具有组写入权限的文件,您需要将 umask 更改为 002(即仅清除世界写入权限)。这可以在特定的 shell 会话中使用 来完成umask 002
,但这不会在会话之间持续存在。
有多种方法可以永久设置 umask。如果pam_umaskPAM 模块已安装并配置,您可以在以下位置进行设置/etc/login.defs
:
UMASK 002
否则,您可以在 shell 初始化脚本中设置它,~/.bashrc
如果您只希望它应用于您的用户,或者/etc/bash.bashrc
如果您希望它应用于所有用户:
umask 002
答案2
在处理文件之前,您需要设置您的 umask。
umask 002
答案3
看起来您正在使用 www-pub,它是 www-data 组的一部分吗?