我在 sftpuser 组中有一个名为 sftpuser 的用户。cat /etc/group | grep sftpuser
结果为:
sftpuser:x:1001:sftpuser
我有目录html
,ls -l
在父文件夹中为该文件夹提供html
以下内容:
drwxrwsr-x+ 2 root sftpuser
重启完成。
如果我使用 FileZilla 和用户 sftpuser 连接到服务器并进入目录 html,我无法创建新文件。我在使用 WinSCP 时也遇到了同样的问题 (3 - 权限被拒绝)。如果我将 sftpuser 声明为所有者,它就可以正常工作。FileZilla 在文件夹 html 的所有者/组下显示“root 1001”。
到底为什么?顺便问一下,权限描述符末尾的加号代表什么?
答案1
权限字符串末尾+
的 表示该目录具有访问控制列表 (ACL)应用于它。
您的 ACL 很可能以某种方式拒绝用户sftpuser
对该目录的写访问权限。
要查看目录的 ACL html
,请使用以下命令:
getfacl html
这应该输出类似下面的内容:
# file: html
# owner: root
# group: sftpuser
# flags: -s-
user::rwx
group::rwx
other::r-x
上面显示的行是具有权限字符串的目录的默认设置drwxrwsr-x
。任何附加行都是 ACL 的运作方式。
例如,如果getfacl
输出如下:
# file: html
# owner: root
# group: sftpuser
# flags: -s-
user::rwx
user:sftpuser:r-x
group::rwx
mask::rwx
other::r-x
然后,由于该行user:sftpuser:r-x
,用户sftpuser
将明确被拒绝对该目录的写访问权限。
上述情况可能不是您的具体情况,但也许其他一些 ACL 条目与用户匹配sftpuser
并拒绝写访问。
您可以通过运行删除单个 ACL 条目,例如:
# replace "user:sftpuser" with the entry you want to remove, but omit the permissions part
setfacl -x user:sftpuser html
或者,您可以通过运行以下命令删除所有条目(用户、组和其他的默认条目除外):
setfacl -b html