说明:
– vsftpd的版本:vsftpd-3.0.2-29.el7_9.x86_64
– ftp根目录:/var/www
– ftp 配置文件目录:/etc/vsftpd
– ftp 虚拟用户权限配置文件目录:/etc/vsftpd/user_conf
实现目标:
– 匿名用户可以登录,但是不能访问虚拟用户的宿主目录,只能访问共享目录
– 虚拟用户对自己的宿主目录有任何权限,且只能在自己宿主目录中操作
搭建过程
1. 安装vsftpd,ftp和libdb-utils(需要安装db包,用来加密虚拟用户的账号信息,centos7已经安装好了)
- 创建本地用户(用于映射虚拟用户)
- 修改配置文件
- 创建存储虚拟用户的文件
- 生成数据库文件并创建PAM认证文件
- 启动vsftpd服务
- 更改虚拟用户目录权限
- 测试访问
- 添加新用户(不需要重启vsftpd服务)
- 问题处理
– 报错1:226 Transfer done (but failed to open directory)
解决:关闭selinux和防火墙
– 报错2:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
解决:配置文件中加入 allow_writeable_chroot=YES 针对标准vsftpd(standonly)模式,然后重启ftp。
- vsftp上传文件权限问题
file_open_mode上传档案的权限,与chmod 所使用的数值相同。如果希望上传的文件可以执行,设此值为0777。
默认情况下vsftp上传之后文件的权限是600,目录权限是700
* local_umask=xxx这是指定本地用户上传后的文件权限设置
* anon_umask=xxx这是指定虚拟用户上传后的文件权限设置
* umask是unix操作系统的概念,umask决定目录和文件被创建时得到的初始权限
* umask = 022时,新建的目录 权限是755,文件的权限是 644
* umask = 077时,新建的目录 权限是700,文件的权限时 600
-
部署云服务器上,安全组放开1802还是连接失败
按照配置文件中设置被动端口范围,放开安全组
-
使用FileZilla连接报超时
修改配置