一、安装命令
yum install vsftpd -y
二、检查端口
netstat -anp | grep 21 (安装netstat yum install net-tools)
三、用户目录
mkdir -p /home/wwwroot/ftptest
四、创建用户
useradd -d /home/wwwroot/ftptest -g -s /sbin/nologin ftptest
(-g ftp 表示该用户属于ftp分组 (ftp分组是内置的,本来就存在,不需要自己创建)
-s /sbin/nologin 表示这个用户不能用来登录secureCRT这样的客户端。 这种不能登陆的用户又叫做虚拟用户)
五、设置目录权限
chown -R ftptest /home/wwwroot/ftptest
chown -R 775 /home/wwwroot/ftptest
(把目录/home/wwwroot/ftptest的拥有者设置为ftptest
使ftptest用户拥有这个目录的读写权限)
六、设置用户密码
passwd ftptest
七、去掉匿名登录
vi /etc/vsftpd/vsftpd.conf,把vi /etc/vsftpd/vsftpd.conf 改为 vi /etc/vsftpd/vsftpd.conf,使用vi命令打开,编辑,保存。
(vi /etc/vsftpd/vsftpd.conf)
八、限制用户访问
限制用户访问,什么叫做限制用户访问呢? ftp用户 教程中创建的ftptest用户所拥有的目录是 /home/wwwroot/ftptest,如果不做限制,那么使用ftptest登陆之后可以切换到其他敏感目录去,比如切换到/usr目录去,这样就存在巨大的安全隐患。
vi /etc/vsftpd/vsftpd.conf 去掉chroot_list_enable=YES和chroot_list_file=/etc/vsftpd/chroot_list的注释#。
九、用户清单
vi /etc/vsftpd/chroot_list增加 ftptest,然后打开vi /etc/vsftpd/chroot_list在最后面新加一行allow_writeable_chroot=YES。
十、配置端口
vsftpd有两种端口,一个是21端口,用来监听客户端连接请求的。 这个一般说来是固定的,就一直使用21端口。
另一种是,一旦获取到请求之后,再专门用户服务端和客户端传输数据的端口。
本知识点就是用于指定第二种端口的获取范围。
vi /etc/vsftpd/vsftpd.conf在最后添加pasv_enable=YES,pasv_min_port=30000,pasv_max_port=30010,这表示使用被动模式,用于传输数据的端口分配从30000-30010之间。
十一、用户鉴权
因为用户 ftptest 是 nologin的,所以存在鉴权的问题。 如果鉴权问题不解决,就是永不停息的 530错误。。。
方式一:vi /etc/pam.d/vsftpd注释掉auth required pam_shells.so。
方拾二:vi /etc/shells增加一行/sbin/nologin。 重启服务。。。。
汇总:可能遇到的错误原因 防火墙 密码不对
FTP 550 Failed to change directory
通常是FTP 的某些服务没有开启 这里和防火墙有一定关系
如果你是能够链接到FTP 但是看不到文件 上传和下载都没有办法做出操作
那么可以执行命令
getsebool -a | grep ftp
会发现以下状态都是关闭的
setsebool -P allow_ftpd_full_access on
setsebool -P ftp_home_dir on
执行上面命令,再返回的结果看到两行都是off,代表,没有开启外网的访问
会发现状态已经是on了
这样应该没问题了(如果,还是不行,看看是不是用了ftp客户端工具用了passive模式访问了,如提示Entering Passive mode,就代表是passive模式,默认是不行的,因为ftp passive模式被iptables挡住了,下面会讲怎么开启,如果懒得开的话,就看看你客户端ftp是否有port模式的选项,或者把passive模式的选项去掉。如果客户端还是不行,看看客户端上的主机的电脑是否开了防火墙,关吧)
附:
使用 ls -ld命令检查ftp目录的所有权
例如我的ftp目录是web
ls -ld /web
发现为root 而我的用户为ftp
所以chown ftp /web
然后重试FileZilla可以创建目录了