1. 安装VSFTPED
yum -y install vsftpd
2.重新启动vsftpd
systemclt restart vsftpd
3.检查服务
ps -ef|grep vsftp && netstat -tunlp|grep 21
4 说明:
主配置文件:/etc/vsftpd/vsftpd.conf
配置文件目录:/etc/vsftpd/*.conf
服务启动脚本:/etc/rc.d/init.d/vsftpd
用户认证配置文件:/etc/pam.d/vsftpd
配置参数
常用配置参数都为主配置文件,/etc/vsftpd/vsftpd.conf 的常用配置。
通用基础配置
listen=[YES|NO] #是否以独立运行的方式监听服务
listen_address=IP地址 #设置要监听的 IP 地址
listen_port=21 #设置 FTP 服务的监听端口
download_enable=[YES|NO] #是否允许下载文件
max_clients=0 #最大客户端连接数,0 为不限制
max_per_ip=0 #同一 IP 地址的最大连接数,0 为不限制
chown_uploads=[YES|NO] #是否允许改变上传文件的属主
chown_username=whoever #改变上传文件的属主为 whoever
pam_service_name=vsftpd #让 vsftpd 使用 pam 完成用户认证,使用的文件为/etc/pam.d/vsftpd
系统用户的配置
anonymous_enable=NO #禁止匿名访问模式
local_enable=[YES|NO] #是否允许本地用户登录 FTP
write_enable=[YES|NO] #是否开放本地用户的其他写入权限
local_umask=022 #本地用户上传文件的 umask 值
local_root=/var/ftp #本地用户的 FTP 根目录
local_max_rate=0 #本地用户最大传输速率(字节/秒),0 为不限制
userlist_enable=[YES|NO] #开启用户作用名单文件功能
userlist_deny=[YES|NO] #启用禁止用户名单,名单文件为 ftpusers 和/etc/vsftpd/user_list
chroot_local_user=[YES|NO] #是否将用户权限禁锢在 FTP 家目录中,以确保安全
chroot_list_enable=[YES|NO] #禁锢文件中指定的 FTP 本地用户于其家目录中
chroot_list_file=/etc/vsftpd/chroot_list #指定禁锢文件位置,需要和 chroot_list_enable 一同
匿名用户的配置
anonymous_enable=[YES|NO] #是否允许匿名用户访问
anon_upload_enable=[YES|NO] #是否允许匿名用户上传文件
anon_mkdir_write_enable=[YES|NO] #是否允许匿名用户创建目录
anon_other_write_enable=[YES|NO] #是否开放匿名用户的其他写入权限(包括重命名、删除等操作权限)
anon_umask=022 #匿名用户上传文件的 umask 值
anon_root=/var/ftp #匿名用户的 FTP 根目录
anon_max_rate=0 #匿名用户的最大传输速率(字节/秒),0 为不限制
5 vsftp配置虚拟用户
创建 vsftpd 服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户
FTP服务用于存储文件的根目录指的是,当虚拟用户登录后所访问的默认位置
可以把这个系统本地用户的家目录设置为/var或都 /home目录并设置不允许登录FTP服务器
5.1、虚拟用户访问
首先建立认证文件模板/etc/vsftpd/vuser.list
xinlisn
123456
5.2 然后,在/etc/pam.d/ftp_auth认证策略文件中写出读取的规则,包括账户,配置一致才能通过原则,谁执行该操作,文件模板在哪里。
因此需要使用db_load命令用哈希算法将原始的明文信息文件转换成数据库文件
cd /etc/vsftpd/
db_load -T -t hash -f vuser.list vuser.db
生成一个vuser.db文件
5.3 如果提示无此命令则安装
yum -y install db4
5.4给文件权限
chmod 600 vuser.db
5.5 rm -f vuser.list
5.6 建立虚拟用户所需的PAM配置文件
vi /etc/pam.d/vsftpd
在该文件头部插入如下两行
auth sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login
5.7 创建虚拟用户配置目录,用来单独配置不同虚拟用户访问不同目录等。
mkdir /etc/vsftpd/vsftpd_user_conf
5.8 创建一个与虚拟用户同名称的文件,用来单独配置这个虚拟用户的访问目录。
vim /etc/vsftpd/vsftpd_user_conf/xinlisn(xinlisn是对应的虚拟用户名 xinlisn)
写入配置内容:
local_root=/home/ftp #根据实际来写,目录不存在需创建 但要注意virtual用户对此目录的权限)
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
5.9 创建 vsftpd 映射本地用户:
1.创建vsftpd使用的系统用户,主目录为/home/vsftpd,禁止ssh登录。创建之后所有虚拟用户使用这个系统用户访问文件。
$ useradd virtual -d /home/ftp -s /bin/false
或者 useradd -d /home/ftp -s /sbin/nologin virtual
5.10 设置主目录权限(否则无法写入):
chown -R virtual:virtual /home/ftp
#chown virtual:virtual /home/ftp/ --FTP文件夹所属virtual用户
#chmod 700 /home/ftp/ --权限可读可写
5.11 备份vsftpd.conf文件:
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back
清空vsftpd.conf内容:
> /etc/vsftpd/vsftpd.conf
写入以下内容
vim /etc/vsftpd/vsftpd.conf
#Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
idle_session_timeout=600
data_connection_timeout=6
listen=YES
listen_port=21
allow_writeable_chroot=YES
local_root=/data/ftp--------------暂时没有用
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list
pasv_enable=YES
pasv_min_port=10240
pasv_max_port=10260
pam_service_name=vsftpd ----------在/etc/pam.d/目录中创建一个 虚拟服务配置文件
guest_enable=YES ----------起用虚拟用户
guest_username=virtual ------将虚拟用户映射为本地用户
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf
reverse_lookup_enable=NO
download_enable=NO
(17)添加用户,加入组,设置访问目录,不能telnet登录: -----我没有做 testftp是虚拟用户
useradd -d /opt/test_ftp -g ftp -s /sbin/nologin testftp
5.12 #systemctl stop vsftpd
5.13 #systemctl start vsftpd
2、虚拟用户家目录的独立设定
现在虚拟用户都用同一个家目录,这样显然不合适,所以想独立每个虚拟用户的家目录,首先建立三个家目录,
在主配置文件中添加local_root=/ftphomedir/$USER,表示不同的用户家目录不同,但是这个$命令只有shell中识别,所以要加user_sub_token=$USER,使在vim中识别$USER。重启服务,就好了,独立虚拟用户的家目录