TLDR:我有一个用户,他是某个组的次要成员。作为次要用户,此用户可以删除权限为 664 的文件,但不能删除权限为 775 的目录。
详细信息:我有一个用户。我们称他为 ftpuser。我使用他将文件上传和下载到我的 devbox。该用户的主要组是“ftp”,并且作为次要组位于组“www”中。我的 Web 服务器以用户 www 和组 www 的身份运行,并且我已将 proftpd(以 www 和 www 的身份运行)配置为将所有文件放入所需目录 www 和 www(用于文件所有权),文件的权限为 664,目录的权限为 775。
我的问题是(尝试使用 2 个 ftp 客户端)ftp 客户端可以删除文件,但不能删除文件夹。Filezilla 返回 550 权限被拒绝。未设置仅所有者可以删除标志,我已三次检查权限,它们确实是 775。
每次都要登录服务器手动删除文件夹,这让我很抓狂。有些文件夹和文件是由我的 php 脚本创建的,但当我检查文件的属性时,权限设置正确。
目录和文件创建工作非常出色。可以删除文件,但不能删除目录。
Freebsd 9.0 在 VirtualBox 中运行(全程 32 位) Proftpd(以 www 和 www 身份运行)作为 ftp 服务器(尝试使用 dreamweaver 和 filezilla 作为客户端)基本 amp 设置(apache、mysql 和 php)。
编辑:
父文件夹是 755。我知道这是一件非常简单且容易被忽略的事情。我以为我将两个目录(apache22/data)的批量权限设置为 775,但我必须在设置权限后创建该目录。你每天都会学到新东西。谢谢!
答案1
要删除目录,您必须对其父级具有写入权限。例如,给定此目录:
drwxr-xr-x 3 owner staff 102 Nov 5 22:00 .
drwxr-xr-x 160 owner admin 5440 Nov 5 22:00 ..
drwxr-xr-x 2 owner staff 68 Nov 5 22:00 foo
只能owner
删除目录foo
(因为只owner
对父目录有写权限)。
如果授予该staff
组对父目录的写权限:
drwxrwxr-x 3 owner staff 102 Nov 5 22:00 .
drwxr-xr-x 160 owner admin 5440 Nov 5 22:00 ..
drwxr-xr-x 2 owner staff 68 Nov 5 22:00 foo
然后该组的任何成员都staff
可以删除该目录foo
。
但请注意,为了删除该目录,他们还需要能够删除其所有内容,因为您无法删除非空目录。
答案2
删除文件夹的权限就是“写入”父文件夹的权限。您实际上要做的是删除父文件夹中的“子文件夹”条目。我猜父文件夹对“www”组没有写入权限。