在Ubuntu 14.04中设置一个新的Web服务器,并试图为PHP生成的文件争夺文件权限。
默认情况下, /var/www
中的所有目录和文件都拥有/分组到www-admin。 目录权限是rwxrwsr-x
,文件权限是rw-rw-r--
。
然后,我们将有限数量的目录组设置为www-data – 这样PHP(通过Apache)就可以在这个位置写入日志和caching文件。
但是,我不能让PHP服从0002
的umask,所以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