【问题标题】:Owner of the uploaded files Apache web server上传文件的所有者 Apache Web 服务器
【发布时间】:2014-03-18 04:10:09
【问题描述】:

我在处理我的网络服务器上上传的文件时遇到问题。

首先,用户“daemon”将文件上传到临时服务器,然后“www-data”用户将文件复制到 www/myapp/files 文件夹。一切正常,我可以读取和写入文件,但是当我尝试删除文件时出现错误。因为我试图以 www-data 用户(php 脚本)的身份删除文件,但文件的所有者是 daemon 用户。

我的问题是如何解决这个问题?

我不是在寻找任何 chmod 或 chown 解决方案,我更喜欢通过 Apache 或其他一些配置文件的解决方案。

编辑: 根据请求的文件权限: -rw-r--r-- 1 daemon 守护进程 41638 Jan 19 08:59 FILE

父文件夹有0777权限

【问题讨论】:

  • “daemon”用户有什么“umask”?您也许可以更改此设置,以便使用适当的权限删除创建的文件,以允许其他用户删除该文件...您可能还必须考虑系统范围(“默认默认值”)的 umask 设置。 .. 建议您在此处发布要删除到磁盘上的文件的确切权限(在文件上运行“ls -l”) - 这样人们就可以弄清楚为什么该文件不能被其他用户删除。

标签: php apache ubuntu web-deployment


【解决方案1】:

您可以像这样将两个用户添加到一个组中:

usermod -a -G groupName userName

然后为该组设置 r\w 权限

【讨论】:

  • 仍然是 chmod 解决方案。我更喜欢做的是更改上传文件的所有者,但再次没有 chmod。
  • @J.D.您反对使用 chmod 修改文件和文件夹权限是什么。这有点不合逻辑。 (+1)。
【解决方案2】:

避免假设

一切正常,我可以读写文件

这表明文件权限本身和所有权允许当前使用。如果像你说的 apache 是作为 www-data 运行的,那就直接矛盾了:

根据请求的文件权限:-rw-r--r-- 1 daemon daemon 41638 Jan 19 08:59 FILE

这意味着该文件不可写入 www-data。

因为我试图以 www-data 用户(php 脚本)的身份删除文件,但文件的所有者是守护程序用户。

上述说法不正确 - 文件的所有权不影响谁可以删除它。

我不是在寻找任何 chmod 或 chown 解决方案,我更喜欢通过 Apache 或其他一些配置文件的解决方案。

在你有选择之前不排除解决方案怎么样?

删除文件使用目录权限,而不是文件权限

这很容易验证:

-> pwd
/tmp/so
-> whoami
www-data
-> ls -la
total 8
dr-xr-xr-x 2 www-data www-data 4096 Feb 18 14:34 .
drwxrwxrwt 8 root     root     4096 Feb 18 14:36 ..
-rw-rw-r-- 1 www-data www-data    0 Feb 18 14:34 a-file
-> rm a-file 
rm: cannot remove `a-file': Permission denied

请注意,文件夹 /tmp/so 没有写入权限 - 这是唯一重要的权限。这是另一个existing answer as a supportive reference

因此,唯一的解决方案是确保尝试删除a-file 的用户具有对包含文件夹的写入权限,这意味着例如:

# assuming daemon is the owner
chmod 7x7 www/myapp/files 
        ^ www-data is not the owner or in the group daemon - so world perms apply

或者

chown www-data:www-data www/myapp/files
chmod 7x7 www/myapp/files 
        ^ daemon needs write permission to the folder too

或者

chown www-data:sharedgroup www/myapp/files
chmod 77x www/myapp/files 
       ^ daemon now reads the group perm, www-data is the owner

(上传进程作为 daemon:sharedgroup 运行)

以上是需要运行的一次性命令;之后,无需修改任何文件或文件夹的权限以允许 www-data 和 daemon 操作 www/myapp/files 中的文件。

【讨论】:

  • 谢谢,一切都解释清楚了,但是我的父文件夹有0777权限但是我仍然无法删除写保护的文件。 (你是对的,该文件是写保护的)。
  • but my parent folder has 0777 听起来您有逻辑错误或误解 - 您没有查看重要文件夹的权限,或者您遇到的错误不是您认为的错误. (显示一些代码、它生成的错误消息以及任何支持性证据在问题中)。
  • drwxrwxrwx 2 daemon daemon 4096 Feb 2 13:54 97 所以这是我的父文件夹权限(文件夹名称:97)
  • 你没有帮助自己(请重读我之前的评论)-祝你好运;)。
猜你喜欢
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-19
  • 2018-05-20
  • 1970-01-01
相关资源
最近更新 更多