2015-06-09 109 views
0

我已经在Arch Linux上安装nginx。任何时候我的网站(即nginx)都会创建临时文件,它是由http:http用户创建的,他们拥有755的权限。无法删除nignx的临时文件

我需要清除缓存时间,并以普通用户身份登录。这意味着任何时候我需要删除这些文件,我需要使用sudo,这是不正确的原因。能够在没有sudo的情况下删除这些文件的正确方法是什么?

回答

1

老实说,这只是它应该的样子。围绕创建和使用临时文件的语义是棘手的,也是许多安全问题的根源。不要试图颠覆这一点。

真正的问题是,你为什么要删除这些文件?它们是否从未被删除,重用或由Nginx进程管理?如果出现问题,那么解决的问题。除非你真的,真的真的不得不去追赶权限后正在运行的进程使用创建临时文件。 (例如,如果你正在将这些文件写入一些特殊的文件系统,但即使这样也是一个弱点)

但是,如果你偶尔需要删除由UID创建的文件,那么你需要该UID或作为特权用户。有办法调整sudo,这样你就可以控制一个sudoer可以做多少(比如说七次真的很快)。

+0

用例:我正在一个网站上工作。它在它的'temp /'文件夹中创建临时文件,并且它很美观。但有时我需要与该项目的“控制台”一起工作。这是一个Symfony /控制台的php的东西,它允许我运行迁移,运行测试等。这个控制台也需要一个临时的。然而,无论何时尝试访问'temp /',它都不能,因为'temp /'文件夹是由'http'创建的,但是我将控制台作为'user'运行。 – tsusanka

+0

首先,如果您的意思是要写入/ tmp(注意绝对路径)或可能是'chroot'环境中的“tmp”目录,则需要清楚。看起来您有两种选择:(1)以http用户(可能不可能)或root身份运行控制台,或者(2)更改控制台进程使用的临时位置。不要破解nginx以使其适合。调整他们运行的工具或环境来解决问题。但是,我不知道这块PHP是什么或者做什么,所以你将不得不进行研究。 PHP不能在特殊的TEMP环境下运行,或者通过一个标志? – jdv

+0

我已经意识到它并不清楚,所以我编辑到'temp /'使它更清晰一点,我补充我自己的临时文件夹。好的,谢谢,我会看看这个。 – tsusanka