Proftpd 用户无法在主目录中写入/删除

Proftpd 用户无法在主目录中写入/删除

我正在尝试在 centos 中设置一个可以读取/写入/删除/等 /var/www/html 目录中文件的用户。在这里的一些帮助下,我让用户能够登录并查看文件,但现在他们无法上传/删除等。

我创建了一个用户“ftpuser”,其 UID/GID 为 500,有效 shell 为 /bin/sh,主目录为 /var/www/

我将 /var/www/html 的所有者更改为 ftpuser.ftpuser [并尝试对其进行 0777ing]

该用户应该能够读取/写入/删除 /var/www/html/ 目录中的文件。

这是 proftpd 配置:

ServerName                      "ProFTPD server"
ServerIdent                     on "FTP Server ready."
ServerAdmin                     root@localhost
ServerType                      standalone
DefaultServer                   on
VRootEngine                     on
#DefaultRoot                    ~ !adm
DefaultRoot                     /var/www/
VRootAlias                      /etc/security/pam_env.conf etc/security/pam_env.conf
AuthPAMConfig                   proftpd
AuthOrder                       mod_auth_pam.c* mod_auth_unix.c
#PersistentPasswd               off
UseReverseDNS                   off
User                            nobody
Group                           nobody
MaxInstances                    20
UseSendfile                     off
LogFormat                       default "%h %l %u %t \"%r\" %s %b"
LogFormat                       auth    "%v [%P] %h %t \"%r\" %s"

# Global Config - config common to Server Config and all virtual hosts
# See: http://www.proftpd.org/docs/howto/Vhost.html
<Global>
  Umask                         022
  AllowOverwrite                yes
  <Limit ALL SITE_CHMOD>
    AllowAll
  </Limit>
</Global>

<Directory /var/www>
        AllowOverwrite          yes
        <Limit ALL>
                AllowAll
        </Limit>
</Directory>

<Limit LOGIN>
AllowUser ftpuser
DenyALL
</Limit>

我不知道为什么这不管用。有人知道我做错了什么吗?

答案1

听起来 SELinux 妨碍了你。如果你不想让 SELinux 阻止 ftp 在系统上的任何位置写入文件,你需要打开 allow_ftpd_full_access 布尔值。首先,通过运行以下命令检查它当前是启用还是禁用:

getsebool allow_ftpd_full_access

如果它告诉您它已关闭,请使用此命令启用它(可能需要一分钟左右才能应用于整个系统,因此请耐心等待):

setsebool -P allow_ftpd_full_access=1

此外,由于您将用户的主目录设置为 /var/www,因此您还需要将设置设置ftp_home_dir为 On。

设置sebool -P ftp_home_dir=1

当您设置主目录时,user_home_t安全上下文可能也设置在 /var/www 上。将其设置为更公开的内容,例如httpd_sys_content_tpublic_content_rw_t。您可以chcon为此使用。

chcon -R -t httpd_sys_content_t /var/www

应用这些设置后重新启动您的 FTP 服务器,一切就绪了。

本文档如果您想了解更深入的信息。

相关内容