网络文件共享服务主流—-FTP文件传输协议
ftp定义
文件传输协议(File Transfer Protocol)的简称,用于internet上的控制文件的双向传输。
ftp数据连接模式
命令连接:是指文件管理类命令,始终在线的持久性连接,直到用户退出登录为止
数据连接:是指数据传输,按需创建及关闭的连接。
数据传输格式:文件传输、二进制传输
数据传输模式:
主动模式:由服务器端创建数据连接
被动模式:由客户端创建数据连接
ftp应用程序—vsftpd
vsftpd虚拟用户配置
vsftpd虚拟用户的配置步骤如下:
准备环境
[root@yxr ~]# setenforce 0
[root@yxr ftproot]# sed -ri "s/^SELINUX\=enforcing/SELINUX\=disabled/g" /etc/selinux/config
[root@yxr ~]# systemctl stop firewalld
[root@yxr ftproot]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
安装依赖的程序:
[root@yxr ~]# cd /etc/yum.repos.d/
[root@yxr yum.repos.d]# yum -y install wget
[root@yxr yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
[root@yxr yum.repos.d]# yum clean all
[root@yxr yum.repos.d]# yum -y install epel-release
[root@yxr yum.repos.d]# yum -y install vsftpd
创建文本格式的用户名、密码列表,例如若要添加两个用户tom、yy,密码分别为123、456
/etc/vsftpd/配置文件目录
[root@yxr ~]# echo 'tom' >> /etc/vsftpd/vu.list
[root@yxr ~]# echo '123' >> /etc/vsftpd/vu.list
[root@yxr ~]# echo 'yy' >> /etc/vsftpd/vu.list
[root@yxr ~]# echo '456' >> /etc/vsftpd/vu.list
[root@yxr ~]# cat /etc/vsftpd/vu.list
tom
123
yy
456
安装db4工具
[root@yxr ~]# yum -y install db4*
将刚创建的文本格式用户名、密码文件使用db4工具转换成数据库文件(-T表示转换,-t表示加密方式使用hash算法加密)
[root@yxr ~]# db_load -T -t hash -f /etc/vsftpd/vu.list /etc/vsftpd/vu.db
设置文件权限(600是为了提高虚拟用户账号文件的安全性,避免数据外泄)
[root@yxr ~]# chmod 600 /etc/vsftpd/vu.*
[root@yxr ~]# ll /etc/vsftpd/vu.*
-rw-------. 1 root root 12288 Sep 2 18:43 /etc/vsftpd/vu.db
-rw-------. 1 root root 15 Sep 2 18:38 /etc/vsftpd/vu.list
添加虚拟用户的映射账号、创建ftp根目录。此处是吧ftp根目录设置为/var/ftproot,映射账号的名称为vftp.
[root@yxr ~]# useradd -d /var/ftproot -s /sbin/nologin vftp
[root@yxr ~]# chmod 755 /var/ftproot/
[root@yxr ~]# ll -d /var/ftproot/
drwxr-xr-x. 3 vftp vftp 78 Sep 2 18:48 /var/ftproot/
虚拟用户建立PAM认证
[root@yxr ~]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
[root@yxr ~]# vim /etc/pam.d/vsftpd
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vu
account required pam_userdb.so db=/etc/vsftpd/vu
修改vsftpd配置文件,添加虚拟用户支持
[root@yxr ~]# echo 'guest_enable=YES' >> /etc/vsftpd/vsftpd.conf
[root@yxr ~]# echo 'guest_username=vftp' >> /etc/vsftpd/vsftpd.conf
为不同的虚拟用户建立独立的配置文件
[root@yxr ~]# echo 'user_config_dir=/etc/vsftpd/vusers_dir' >> /etc/vsftpd/vsftpd.conf
[root@yxr ~]# echo 'allow_writeable_chroot=YES' >> /etc/vsftpd/vsftpd.conf
创建目录/etc/vsftpd/vusers_dir与前面建立对应关系
[root@yxr ~]# mkdir /etc/vsftpd/vusers_dir
[root@yxr ~]# ll /etc/vsftpd/
total 36
-rw-------. 1 root root 125 Aug 3 2017 ftpusers
-rw-------. 1 root root 361 Aug 3 2017 user_list
-rw-------. 1 root root 5133 Sep 2 18:53 vsftpd.conf
-rwxr--r--. 1 root root 338 Aug 3 2017 vsftpd_conf_migrate.sh
-rw-------. 1 root root 12288 Sep 2 18:43 vu.db
-rw-------. 1 root root 15 Sep 2 18:38 vu.list
drwxr-xr-x. 2 root root 6 Sep 2 18:56 vusers_dir
设置用户tom可上传和创建目录,设置yy用户只有默认下载权限,只需创建一个名为yy的空文件即可
[root@yxr ~]# echo 'anon_upload_enable=YES' >> /etc/vsftpd/vusers_dir/tom
[root@yxr ~]# echo 'anon_mkdir_write_enable=YES' >> /etc/vsftpd/vusers_dir/tom
[root@yxr ~]# touch /etc/vsftpd/vusers_dir/yy
启动ftp服务,检查端口是否开启
[root@yxr ~]# systemctl start vsftpd
[root@yxr ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 32 :::21 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
在ftp客户端登录tom用户创建,在服务端验证:
验证
[root@yxr ~]# cd /var/ftproot/
[root@yxr ftproot]# ls
a b