Linux – client_body_in_file_only – 如何设置临时文件的文件权限?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Linux – client_body_in_file_only – 如何设置临时文件的文件权限?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2249字,纯文字阅读大概需要4分钟。
内容图文
我们在nginx中使用client_body_in_file_only选项,以允许通过Ajax上传文件.配置如下所示:
location ~ ^(\/path1|\path2)${
limit_except POST { deny all; }
client_body_temp_path /path/to/app/tmp;
client_body_in_file_only on;
client_body_buffer_size 128K;
client_max_body_size 1000M;
#this option is a quick hack to make sure files get saved on (ie this type of request goes to) on a specific server
proxy_pass http://admin;
proxy_pass_request_headers on;
proxy_set_header X-FILE $request_body_file;
proxy_set_body off;
proxy_redirect off;
# might not need?
proxy_read_timeout 3m;
}
这是有效的,但是处理请求的Web服务器进程(Mongrel)必须在它可以对它执行任何操作之前sudo在头文件[‘X-FILE’]中出现的临时文件.这是因为临时文件具有600个权限.
我对这种方法不满意,这要求我们编辑/ etc / sudoers文件以允许Web服务器用户在没有密码的情况下执行sudo chmod.感觉非常不安全.
有没有办法,使用nginx配置,更改创建的临时文件的权限,例如775?
编辑:我只是尝试在nginx init配置中更改umask选项的值,然后重新启动nginx,但它没有帮助.它已经在0022,我把它改为0002.在这两种情况下,它都有600个权限.
EDIT2:我也尝试在nginx配置中的proxy_redirect行下添加这一行.
proxy_store_access user:rw group:rw all:r;
但是,它没有任何区别 – 它仍然只有用户:rw
最佳答案:
通过nginx源查看,似乎唯一可以修改临时文件权限的机制是请求的request_body_file_group_access属性,请参阅ngx_http_write_request_body():
if (r->request_body_file_group_access) {
tf->access = 0660;
}
但即使这样也限制你到0660,它似乎不是用户可设置的属性,只有ngx_http_dav模块才能使用它.
权限最终在ngx_open_tempfile()中设置,默认为0600:
fd = open((const char *) name, O_CREAT|O_EXCL|O_RDWR, access ? access : 0600);
所以似乎目前没有基于配置的解决方案.如果您愿意/能够从源代码构建nginx,一种可能性是应用一个简单的补丁来将权限设置为ngx_http_write_request_body()中您想要的任何内容:
+ tf->access = 0644;
+
if (r->request_body_file_group_access) {
tf->access = 0660;
}
rb->temp_file = tf;
我测试了这个并获得了以下内容,第一个文件没有修改就上传了,第二个文件带有它:
$ls -al /tmp/upload/
total 984
drwxr-xr-x 2 nobody root 12288 Feb 18 13:42 .
drwxrwxrwt 16 root root 12288 Feb 18 14:24 ..
-rw------- 1 nobody nogroup 490667 Feb 18 13:40 0000000001
-rw-r--r-- 1 nobody nogroup 490667 Feb 18 13:42 0063184684
内容总结
以上是互联网集市为您收集整理的Linux – client_body_in_file_only – 如何设置临时文件的文件权限?全部内容,希望文章能够帮你解决Linux – client_body_in_file_only – 如何设置临时文件的文件权限?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。