虚拟机配置vsftpd服务
虚拟机配置vsftpd服务
要求
练习vsftpd服务器的各种配置:
- 使用本地yum源安装vsftpd软件
- FTP服务器IP地址为192.168.5.10
- 采用本地用户模式
- 创建本地用户mednight4
- 设置本地用户的根目录为/data/ftp_data且在目录中创建ftp_test空文件
- 允许用户mednight4上传和下载文件
- 锁定用户mednight4在其根目录中
说明
模式
vsftpd服务程序允许三种认证方式登陆到ftp服务器上
匿名开放模式:任何人都可以无需密码直接登陆到ftp服务器
本地用户模式:通过linux本地账户密码认证的模式
虚拟用户模式:需要服务器单独建立ftp用户数据库,仅供ftp服务程序使用
本次介绍前两种模式。
常用参数
位置:/etc/vsftpd/vsftpd.conf
参数 | 作用 |
---|---|
listen=[YES|NO] | 是否以独立运行的方式监听服务 |
listen_address=IP地址 | 设置要监听的ip地址 |
listen_port=21 | 设置ftp服务的监听端口 |
download_enable=[YES|NO] | 是否允许下载文件 |
userlist_enbale=[YES|NO] | 设置用户列表为-允许-还是-禁止-操作 |
userlist_deny=[YES|NO] | 设置用户列表为-允许-还是-禁止-操作 |
max_clients=0 | 最大客户端连接数,0位不限制 |
max_per_ip=0 | 同一ip的最大连接数,0位不限制 |
anonymous_enable=[YES|NO] | 是否允许匿名访问 |
ano_upload_enable=[YES|NO] | 是否允许匿名用户上传文件 |
anon_umask=022 | 匿名用户上传文件的umask值 |
anon_root=/var/ftp | 匿名用户的ftp根目录 |
anon_mkdir_write_enable=[YES|NO] | 是否允许匿名用户创建目录 |
anon_other_write_enable=[YES|NO] | 是否开放匿名用户的其他写入权限,包括重命名、删除… |
anon_max_rate=0 | 匿名用户的最大传输速率(字节/秒),0为不限制 |
local_enable=[YES|NO] | 是否允许本地用户登陆ftp |
local_umask=022 | 本地用户上传文件的umask值 |
local_root=/var/ftp | 本地用户的ftp根目录 |
chroot_local_user=[YES|NO] | 是否将用户权限禁锢在ftp目录,以保证安全 |
local_max_rate=0 | 本地用户最大传输速率(字节/秒),0为不限制 |
allow_writeable_chroot=YES | 允许对禁锢的ftp根目录执行写入操作,而且不拒绝用户登陆请求 |
配置
匿名开放模式
向匿名用户开放的权限参数
参数 | 作用 |
---|---|
anonymous_enable=YES | 允许匿名访问模式 |
anon_umask=022 | 匿名用户上传文件的umask值 |
anon_upload_enable=YES | 允许匿名用户上传文件 |
anon_mkdir_write_enable=YES | 允许匿名用户创建用户 |
anon_other_write_enable=YES | 允许匿名用户修改目录名称或删除目录 |
- 安装ftp
1 | [root@localhost ~]# yum install vsftpd |
- 配置参数
vsftpd命令可以查看配置参数是否出错
1 | [root@localhost /]# ls /etc/vsftpd/ |
- 防火墙打开端口20、21
1 | [root@localhost vsftpd]# firewall-cmd --add-port=20/tcp |
- 启动服务
1 | [root@localhost vsftpd]# systemctl start vsftpd |
- 创建一个文件
1 | [root@localhost pub]# echo "hello world" > /var/ftp/pub/hello.txt |
- 连接
看到ls和拉取操作失败了,
1 | ftp> ls |
查了一下错,朝晖的博客,然后把window防火墙关了,问题解决了。
匿名方式就这样。
本地用户模式
向linux本地账户用户开放的权限参数
参数 | 作用 |
---|---|
anonymous_enable=NO | 禁止匿名访问模式 |
local_enable=YES | 允许本地用户模式 |
write_enable=YES | 设置可写权限 |
local_umask=YES | 本地用户模式创建文件的umask值 |
userlist_enable=YES | 允启用禁止用户名单,名单为ftpusers和user_list |
userlist_deny=YES | 开启用户作用名单文件功能 |
allow_writeable_chroot=YES | 允许对禁锢的ftp根目录执行写入操作,而且不拒绝用户登陆请求 |
- 安装ftp
1 | [root@localhost ~]# yum install vsftpd |
- 配置参数为本地用户模式
vsftpd命令可以查看配置参数是否出错
1 | [root@localhost /]# ls /etc/vsftpd/ |
- 防火墙打开端口20、21
1 | [root@localhost vsftpd]# firewall-cmd --add-port=20/tcp |
- 创建本地用户mednight4
1 | [root@localhost vsftpd]# useradd mednight4 |
- 创建ftp特定目录和文件
1 | [root@localhost mednight4]# mkdir -p /data/ftp_data |
- 调整参数满足要求
设置本地用户的根目录为/data/ftp_data且在目录中创建ftp_test空文件
允许用户mednight4上传和下载文件
锁定用户mednight4在其根目录中
1 | [root@localhost vsftpd]# vi /etc/vsftpd/vsftpd.conf |
- 根目录权限全开
要想用户在root所属的目录下操作文件,先把权限打开再说。
1 | [root@localhost mednight4]# chmod 777 /data/ftp_data/ |
- 连接
常见问题
无法登陆
报错
500 OOPS: vsftpd: refusing to run with writable root inside chroot() Login failed.
原因
开启了将用户禁锢在根目录,目录权限包含写权限
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
解决方法
- 在vsftpd.conf中新增allow_writeable_chroot=YES
- 删除根目录的写权限,不过用户将不能做写相关操作
无法ls和get
报错
vsftp:425 failed to establish connection
200 PORT command successful. Consider using PASV.
425 Failed to establish connection.
解决办法
- 朝晖的博客
- 关闭win10防火墙
无法在锁定的根目录中新建文件
原因
检查根目录(此处是/data/ftp_data)对于用户(mednight4)的权限
解决办法
- 就是简单粗暴777