1.文件传输协议
文件传输协议(FTP,file transfer protocol),即能够让用户在互联网上上传文件,下载文件的文件协议。
ftp协议占用两个端口号:
20:数据传输,用于上传下载。
21:命令控制,用于接收客户端执行的ftp命令
ftp数据传输的类型:
主动模式:ftp服务端主动向ftp客户端发起连接请求。
被动模式: ftp服务端等待ftp客户端的连接请求。
2.安装vsftpd服务
yum install vsftpd -y。
安转完后,启动并加载开机启动项中。
vsftpd的程序与配置文件:
主程序 /usr/sbin/vsftpd
用户禁止列表 /etc/vsftpd/ftpusers /etc/vsftpd/user_list
主配置文件 /etc/vsftpd/vsftpd.conf
配置文件参数说明:
listen=[YES|NO] //是否以独立运行的方式监听服务
listen_address=ip地址 //设置要监听的ip地址
listen_port=21 //设置ftp服务的监听端口
download_enable=[YES|NO]
userlist_enable=[YES|NO]//是否启用“禁止登陆用户名单”
userlist_deny=[YES|NO] //yes表示禁止名单中的用户,no表示仅允许名单中的用户
max_clients=0 //最大客户端连接数,0为不限制
max_per_ip=0 //统一ip最大连接数,0为不限制
anonymous_enable=[YES|NO] //是否允许匿名用户访问
anon_upload_enable=[YES|NO] //是否运行匿名用户上传文件
anon_mask=022 //匿名用户上传文件的umask值
anon_root=/var/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
chroot_local_user=[YES|NO] //是否将用户权限固定在ftp目录,更加安全
local_max_rate //本地用户的最大传输速率
3. vsftpd的验证方式
vsftpd程序提供的ftp服务可选验证方式,分别为匿名访问,本地用户和虚拟用户。
匿名访问:任何人无需验证即可登录ftp服务端。
本地用户:使用ftp服务器中的用户,密码信息。
虚拟用户:创建独立的ftp账号资料。
3.1匿名访问模式
ftp匿名访问模式为不安全的服务模式,不要放置敏感数据。要根据上面的参数配置匿名访问权限。然后重启服务,加入到开机自动启动中。
ftp命令用于使用ftp服务,格式为ftp [参数] [ftp主机]。
如果配置了权限但是还是不能创建目录,先看有没有对那个文件或目录的写入权限。有权限的话看是不是SELinux规则限制了
用getsebool -a | grep ftp查看。再用setsebool -P ftpd_full_acess=on来设置权限。
3.2 本地用户模式
本地用户要比匿名用户访问更加的安全。配置好后重新启动,加入到开机自动启动中。这里可以启动禁止名单用户.
userlist_enable=YES,userlist_deny=YES//yes表示禁止名单里的用户,no表示只有名单里的用户能访问。
3.3 虚拟用户模式
因为虚拟用户的账号和口令都不是系统中真实存在的,所以比本地用户更加安全。但是配置比较麻烦:
1.建立虚拟ftp用户数据库文件
2.创建ftp根目录以及虚拟用户映射的系统用户。
3.建立支持虚拟用户的PAM认证文件
4.在vsftpd.conf中添加支持配置
5.为虚拟用户设置不同的权限。
6.重启vsftpd,验证效果。
1.建立虚拟ftp用户数据库文件
cd /etc/vsftpd
vim vuser.list//里面单数行为账号,双数行为密码,可以配置多个
test1//账号
123456//test1的密码
test2//账号
654322 //test2的密码
db_load -T -t hash -f vuser.list vuser.db//用hash算法生成数据库文件
chmod 600 vuser.db //设置权限
rm -f vuser.list
2.创建ftp根目录以及虚拟用户映射的系统用户。
useradd -d /var/ftproot -s /sbin/nologin virtual//创建家目录并且不能登录的virtual系统用户
chmod -Rf 755 /var/ftproot//保证其他用户可以访问
3.建立支持虚拟用户的PAM认证文件
vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
4.在vsftpd.conf中添加支持配置
关闭匿名模式
local_enable=YES
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu
allow_writeable_chroot=YES
vim /etc/vsftpd/vsftpd.conf 设置user_config_dir=/etc/vsftpd/vuser_config_dir
mkdir /etc/vsftpd/vuser_confgi_dir
cd /etc/vsftpd/vuser_confgi_dir
vim user1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
重启ftp服务,用vuser里面的账户登录。