我有一个非常有趣的情况。我有一台运行 Apache/2.2.9 和 PHP 5.2.6-1+lenny10 的 Debian Lenny 服务器。当 Apache 创建新文件(简单的 php 上传脚本或 http svn checkin)时,该文件的权限和所有权是:
www-data test -rwxr-xr-x
创建新目录时,权限和所有权如下:
www-data test drwxr-sr-x
/etc/profile
我已使用更改了服务器umask 0002
。此设置应该将新创建的文件设置为 664,将新创建的目录设置为 775。只有当我实际以用户身份登录www-data
并通过命令行手动执行此操作时,它才会执行此操作。当 Apache 创建数据时,它不会执行此操作。有没有人见过这种行为?以“www-data”用户身份登录并创建文件与以“www-data”用户身份通过 Apache 运行之间有什么区别?文件是否从文件夹继承权限/tmp
或类似的东西?我感兴趣的是直接使用 Apache 解决默认权限,而不是实施解决方法。
这是我迄今为止的步骤:
- 创建新组(测试)
- usermod -a -G 测试 usera
- usermod -a -G 测试用户b
- 用户组
- 使用用户和新组更改 html/ 下所有内容的所有权
- chmod 2775 html/
- 查找 html/-type d-exec chmod 2775 {} \;
- 查找 html/-type f-exec chmod 0664 {} \;
- 编辑 /etc/profile,将 umask 设置为 0002
- 重新启动 apache 并使用“www-data”用户和站点用户登录和退出
答案1
https://stackoverflow.com/questions/428416/setting-the-umask-of-the-apache-user提到如何在 debian 上为 apache 设置 umask。
/etc/profile 仅由交互式 shell 加载。