第一步,安装vsftpd这款ftp服务器软件,
yum install -y vsftpd
第二步,设置vsftpd服务开机自启动,然后重启服务,查看ftp服务端口
chkconfig vsftpd on
systemctl enable vsftpd
systemctl restart vsfpd
第三步:进入vsftpd主配置文件 vi /etc/vsftpd/vsftpd.conf,修改anonymous_enable = NO,这样可以禁止匿名登陆用户登录。
同时,去掉chroot_local_user = yes前的注释,限制用户访问家目录之外的地方
anonymous_enable = NO
chroot_local_user =YES
第四步,创建ftp用户,设置用户无法登陆服务器系统并且家目录在/var/www/html(默认)下:
useradd -s /sbin/nologin -d /var/www/html test
回车设置test用户密码
给其他人修改文件夹的权限:
chmod o+w /var/www/html/
如果是默认安装vsftpd的话,以下是一些文件的位置约定:
/usr/sbin/vsftpd ---- VSFTPD的主程序
/etc/rc.d/init.d/vsftpd ---- 启动脚本
/etc/vsftpd/vsftpd.conf ---- 主配置文件
/etc/pam.d/vsftpd ---- PAM认证文件
/etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用户列表文件
/etc/vsftpd.user_list ---- 禁止或允许使用VSFTPD的用户列表文件
/var/ftp ---- 匿名用户主目录
/var/ftp/pub ---- 匿名用户的下载目录
安装完成,后面就是使用的相关问题了。
问题一:
windows资源管理器通过ftp://xxx.xxx.xxx.xx访问报错:

关闭被动FTP即可:

修改完以后同样使用chmod给目录分配权限
问题二:
如果要更改默认下载目录,修改/etc/vsftpd/vsftpd.conf,加入如下三行:
local_root=/data/ftp/
chroot_local_user=YES
anon_root=/data/ftp/
或者采用mount挂载的方式也可以
local_root表示使用本地用户登录到ftp时的默认目录
anon_root表示匿名用户登录到ftp时的默认目录
你上面的chroot_list_file是设定锁定登陆用户在其home目录的列表,要在chroot_list_enable=YES情况下才生效。
问题三:centos7 ftp报错 530 Login incorrect
tail -f /var/log/secure查看错误信息,根据相应信息修改
如果没有信息,则修改/etc/pam.d/vsftpd文件,注释掉auth required pam_shells.so,重启即可。如图:
vim /etc/pam.d/vsftpd
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
问题四:
500OOPS:can not change directory的解决办法
方法一:
vi /etc/sysconfig/selinux
将 SELINUX=enforcing 修改为SELINUX=disabled,
关闭SELINUX后, 重新启动机器,问题解决
方法二:
可能没有创建这个目录
创建目录即可
问题五:
vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误的解决方法
在/etc/vsftp/vsftp.conf文件中增加
allow_writeable_chroot=YES