用于在Ubuntu上运行PHP的www数据用户的umask

在Ubuntu 14.04中设置一个新的Web服务器,并试图为PHP生成的文件争夺文件权限。

默认情况下, /var/www中的所有目录和文件都拥有/分组到www-admin。 目录权限是rwxrwsr-x ,文件权限是rw-rw-r--

然后,我们将有限数量的目录组设置为www-data – 这样PHP(通过Apache)就可以在这个位置写入日志和caching文件。

但是,我不能让PHP服从0002umask,所以PHP生成的文件只能写入www-data用户。 这是一个问题,因为我们使用持续集成和其他一些清理过程。

到目前为止,我有:

  • /etc/pam.d/common-session中将umask设置为0002
  • /etc/pam.d/common-session-noninteractive中将umask设置为0002
  • /etc/profile中将umask设置为0002
  • /etc/apache2/envvars中将umask设置为0002
  • /etc/login.defs中将umask设置为0002
  • /etc/passwd使用sudo chfn -o "umask=002" daemon_username

而我仍然卡住。

我已经停止/启动服务,甚至重新启动电脑 – 没有喜悦。

/ etc / apache2 / envvars中的“umask 002”应该可以工作。

注意Apache必须通过“service apache2 stop; service apache2 start”才能生效,而不是通过“service apache2 restart”重新启动!

看到这里,如果你需要更详细的示例: https : //serverfault.com/a/384922/228027

这不是我的工作,直到我意识到以下内容:Wordpress的PDO SQLite驱动程序插件将创build只有组读取权限的数据库文件。

从这里使用创build脚本testing你的理智: 如何在Debian上的Apache中设置默认的umask? 。

如果运行多个站点,则可以使用每个目录的访问控制列表(ACL)来设置默认组权限,如下所示:

设置setid标志强制所有新文件从目录inheritance组:

 root@sh1:/srv/www/php/fastwarren.ca# chmod g+s wordpress 

使新文件具有组权限,例如。 这样www-data就可以写入由上传用户SFTPed的文件:

 root@sh1:/srv/www/php/fastwarren.ca# setfacl --default --modify group:rwx wordpress 

确认ACL是这样的:

 root@sh1:/srv/www/php/fastwarren.ca# getfacl wordpress # file: wordpress # owner: carissacosgrove # group: www-data # flags: -s- user::rwx group::rwx other::rx default:user::rwx default:group::rwx default:other::rx 

创build一个文件来确认它的工作:

 root@sh1:/srv/www/php/fastwarren.ca# ll test -rw-rw-r-- 1 root www-data 0 Feb 17 01:09 test