简介
ftp即File Transfer Protocol,是一个用于在计算机网络上客户端和服务器之间进行文件传输的应用层协议
vsftpd 是very secure FTP daemon的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件
安装
服务跑起来
1.安装 vsftp 服务
yum -y install vsftpd
2.开启 vsft 服务
service start vsftpd
3.关闭防火墙
systemctl stop firewalld // 临时关闭
systemctl enable firewalld // 永久关闭
setenforce 0 // 临时关闭
vi/etc/selinux/config // 修改配置文件进行永久关闭
SELINUX=enforcing 修改为 SELINUX=disabled //永久关闭,注意这里有两项容易搞混,不要修改错,可能会导致系统无法启动
firewalld 防火墙不关闭,无法访问ftp服务
selinux 防火墙不关闭,可能会导致用户无法创建文件修改文件
//不关闭防火墙可能导致无法访问ftp服务
到此便可以尝试初访问ftp服务(如何访问?),如需更多个性化配置,请看下篇。
服务进阶配置
目录结构
/etc/vsftp/ 配置文件目录
/var/ftp/pub/ ftp工作目录位置
1.配置文件位置 /etc/vsftpd
[root@10 vsftpd]# ls -l /etc/vsftpd
-----. ftpusers // 所有位于此文件内的用户都不能访问vsFTPd服务。
-----. user_list // ftp 用户名单,可以设置白名单或黑名单
-----. vsftpd.conf // ftp服务主配置文件
-----. vsftpd_conf_migrate.sh // -> /etc/pam.d/vsftpd
-----. vsftpd.conf.rpmsave
2.vsftp.conf 主配置文件详解
由于文件内注释过多,将原 vsftpd.conf 备份
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
然后使用 grep -v 将注释消除,只保留配置项,保存为新的主配置文件。
grep -v "#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf
查看主配置文件
[root@10 vsftpd]# cat vsftpd.conf
anonymous_enable=YES // 是否允许匿名用户登录
local_enable=YES // 是否允许本地用户登录
write_enable=YES // 用户登录后,在FTP目录,有无写入权限
local_umask=022 // 本地用户权限掩码,022=777-755,表示权限为755
dirmessage_enable=YES // 激活目录信息,当远程用户更改目录时,将出现提示信息
xferlog_enable=YES // 是否启用上传下载的日志功能
connect_from_port_20=YES // 开放port模式的20端口的连接
xferlog_std_format=YES // 是否使用标准的 ftpd xferlog 日志文件格式,成为std格式
listen=NO // 监听ipv4端口,开了这个就说明vsftpd可以独立运行,不用依赖其他服务
listen_ipv6=YES // 监听ipv6端口
pam_service_name=vsftpd // 这个是pam模块的名称,我们放置在/etc/pam.d/vsftpd,认证用
userlist_enable=YES // 使用允许登录的名单,在/etc/vsftpd/user_list文件中添加新建的用户ftpuser
tcp_wrappers=YES // (TCP) Wrappers 为由 inetd 生成的服务提供了增强的安全性
个性配置
匿名用户登录
1.将 /etc/vsftpd/vsftpd.conf 内匿名用户功能打开
anonymous_enable=YES // 开启允许匿名用户登录
2.修改 /var/ftp/pub/ 目录权限
实现:匿名用户上传文件,创建文件夹,删除权限等
chmod 777 /var/ftp/pub/
3.修改 vsftpd.conf 实现对匿名用户的访问控制
anonymous_enable=YES|NO // 匿名用户是否可以访问
anon_root=/ftpdir // 指定默认用户登录的家目录
anon_upload_enable=YES|NO // 是否允许匿名用户上传文件
anon_world_readable_only=NO // 允许匿名用户下载自己不可读文件
anon_mkdir_write_enable=YES // 允许匿名用户建立目录
anon_other_write_enable=YES // 允许匿名用户可以删除
anon_umask=022 // 匿名用户上传文件的默认保留权限
chown_uploads=YES // 匿名用户上传文件身份转换
chown_username=*** // 匿名用户上传文件的所有人为**
chown_upload_mode=0644 // 指定用户身份上传文件权限为644
max_clients=3 // ftp最大连接数量
anon_max_rate=102400 // 限制匿名用户上传速率不超过
local_max_rate=1024000 // 限制本地用户上传速率不超过
local_enable=YES|NO // 本地用户是否可以登录
write_enable=YES|NO // ftp写功能开启关闭
local_umask=077 // 本地用户上传文件权限
ocal_root=/var/ftp // 设定本地用户家目录
根据自身需要选择合适的配置,本次测试用如下配置
在 /etc/vsftpd/vsftpd.conf 文件末尾加上
anon_root=/var/ftp // 指定默认登录文件夹
anon_upload_enable=YES // 匿名用户创建文件夹权限开启
anon_mkdir_write_enable=YES // 匿名用户写入权限开启
anon_other_write_enable=NO // 匿名用户带宽限制,字节为单位。50000=5KB
anon_max_rate=50000 // 匿名用户上传速率最大50000
也可以复制下命令,快捷添加
echo -e "anon_root=/var/ftp/pub\nanon_upload_enable=YES\nanon_mkdir_write_enable=YES\nanon_other_write_enable=NO\nanon_max_rate=50000" >> /etc/vsftpd/vsftpd.conf
4.重启服务,匿名用户登录后即可创建等操作
service vsftpd restart
本地用户登录
本地用户实现登录需要将 用于ftp登录的用户 添加至 /etc/vsftpd/user_list 文件内
1.配置文件 /etc/vsftpd/vsftpd.conf 开启本地用户登录
local_enable=YES // 开启允许本地用户登录
2.创建用户
useradd -s /sbin/nologin ftps1 // 创建用户,只允许登录ftp,不允许登录系统
passwd ftps1 // 修改用户密码
-s<shell> 指定用户登入后所使用的shell
/sbin/nologin 此shell让用户无法登录系统,使用 /bin/fasle、/usr/sbin/nologin 效果一样
fpts1 创建的用户名
3.将用户添加至 /etc/vsftpd.userlis 访问用户文件
echo "ftps1" | tee -a /etc/vsftpd.userlist
// 这个文件控制有哪些用户可以访问 ftp 服务
4.在 vstpfd.conf 配置文件内如下修改,有则改之,无则添加
local_enable=YES // 运行本地用户登录,只有在此选项为YES 时,下面的选项才生效
chroot_list_enable=YES // 设置用户不能离开主目录
chroot_list_file=/etc/vsftpd/chroot_list // 设置不能离开主目录的用户表
userlist_enable=YES // 启动用户列表
userlist_deny=NO // NO,为白名单,表示用户列表中的用户可以登录,为YES则表示列表中的用户不能登录
userlist_file=/etc/vsftpd/user_list // 设置用户列表
allow_writeable_chroot=yes // 运行用户上传文件
local_root=/home // 指定本地用户登录时切换的目录
5.至此便可访问,第四步不设置也可访问
虚拟用户登录
1.虚拟用户安装需要生成认证文件,所以先安装依赖库
yum -y install libdb libdb-utils
2.在 /etc/vsftpd/ 目录下创建虚拟用户口令库文件
cat > vuser.list << eof 格式为:
user1 用户名
123 密码
user2 用户名
123 密码
... ...
3.生成 vsftpd 认证文件
db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vsftpd_login.db
添加用户或删除用户时需要重新运行此命令生成新的认证文件
4.为认证文件 vsftpd_login.db 添加权限
chmod 600 /etc/vsftpd/vsftpd_login.db文章地址https://www.yii666.com/blog/444170.html网址:yii666.com<
5.建立虚拟用户所需的PAM配置文件
mv /etc/pam.d/vsftpd.bak // 首先备份原文件
创建新的 vsftpd文件 并添加如下内容
mkdir /etc/pam.d/vsftpd
echo -e "#%PAM-1.0\nauth required pam_userdb.so db=/etc/vsftpd/vsftpd_login\naccount required pam_userdb.so db=/etc/vsftpd/vsftpd_login" >
6.创建虚拟用户访问目录
mkdir -p /data/ftp/ // 创建虚拟用户主目录
mkdir -p /data/ftp/{user1,user2} // 为每个虚拟用户创建访问目录
7.创建虚拟用户
首先创建vsftpd专用虚拟用户vuser,宿主目录/data/ftp
useradd -d /data/ftp -s /sbin/nologin vuser
-d 指定用户家目录
-s 指定启动时的shell
修目录的属主和属组
chown -R vuser:vuser /data/ftp/
chown -R vuser:vuser /data/ftp/user1 /data/ftp/user2
8.修改 /etc/vsftpd/vsftpd.conf 配置文件
cat >> /etc/vsftpd/vsftpd.conf << eof
guest_enable=YES // 启用虚拟用户
xferlog_file=/var/log/xferlog // 设置日志文件存储位置
guest_username=vuser // 定义虚拟用户名
chroot_local_user=YES // 限制本地用户切换出主目录
allow_writeable_chroot=YES // 表示被限制在主目录的用户对主目录具备写权限
user_config_dir=/etc/vsftpd/vsftpd_user_conf // 定义每个用户的配置文件夹
pasv_enable=YES // 开启被动模式
pasv_min_port=30000 // 被动模式的最小端口
pasv_max_port=30999 // 被动模式的最大端口
eof
9.对不同用户设置不同权限
a)创建虚拟用户配置文件夹
mkdir /etc/vsftpd/vsftpd_user_conf
b)在 /etc/vsftpd/vsftpd_user_conf 为每个用户单独配置文件,文件名就是用户名,与vuser.list中的用户名相同
user1:
cat > /etc/vsftpd/vsftpd_user_conf/user1 << eof
local_root=/data/ftp/user1 // 指定虚拟用户user1的主目录
chroot_local_user=YES // 禁锢在主目录使用,仅能访问主目录tom
write_enable=YES // 开启主目录的写权限
virtual_use_local_privs=YES // 让虚拟用户具备对主目录的使用权限(上传、下载、删除、重命名),只下载则保留local_root=/date/ftp/user1
eof
user2:
cat > /etc/vsftpd/vsftpd_user_conf/user2 << eof
local_root=/data/ftp/user2
chroot_local_user=YES
write_enable=YES
virtual_use_local_privs=YES
eof
可选配置:
max_clients=0 // 设置vsftpd允许的最大连接数,默认值为0,表示不受限制。设置为20,超出20将被拒绝,只有在standalone模式运行才有效。
max_per_ip=0 // 设置每个IP允许与FTP服务器同时建立连接的数目。默认值为0,表示不受限制。只有在standalone模式运行才有效。
local_max_rate=500000 // 设置本地用户的最大传输速率,单位为B/s,值为0时表示不限制。500000表示最大传输速率设置为500KB/s.
10.重启服务,完成配置
service vsftpd restart
至此配置完成,可以进行测试验证
访问 ftp 服务
Windows 访问:
刚安装完服务,开启后便可以进行验证。默认允许匿名登录,所以不需要密码
如设置密码将会跳出密码界面(看完本章你便知道如何设置用户及密码登录)
Linux 访问:
1.首先检查是否有用 ftp 客户端
[root@10 pub]# ftp
-bash: ftp: 未找到命令
2.安装 ftp 客户端
yum install ftp -y
3.链接 ftp 服务器
ftp IP地址
如:
ftp 10.0.0.10