15.2 使用vsftpd搭建ftp服务(上)
1 centos自带vsftpd,默认是没有安装,需要yum安装
[root@centos7-01 ~]# yum install -y vsftpd
2 vsftpd默认可以支持使用系统账号体系登录,但那不安全,所以我们使用虚拟账号。
首先建立与虚拟账号相关的系统账号
[root@centos7-01 ~]#useradd -s /sbin/nologin virftp
此处的-s表示shell /sbin/nologin是一个shell
virftp是用户名,此处随意定义
3 编辑虚拟用户密码文件
[root@centos7-01 ~]#vim /etc/vsftpd/vsftpd_login
testuser1
aminglinux
增加以上内容,奇数行为用户名,偶数行为密码,多个用户如此类推。
4 随后给虚拟用户密码文件写入600权限,出于安全只允许给root去读写它
[root@centos7-01 ~]#chmod 600 /etc/vsftpd/vsftpd_login
由于现在是文本识别密码,现在转换成二进制识别
[root@centos7-01 ~]#db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
[root@centos7-01 ~]# ls -l /etc/vsftpd/
总用量 36
-rw------- 1 root root 125 8月 3 2017 ftpusers
-rw------- 1 root root 361 8月 3 2017 user_list
-rw------- 1 root root 5030 8月 3 2017 vsftpd.conf
-rwxr--r-- 1 root root 338 8月 3 2017 vsftpd_conf_migrate.sh
-rw-r--r-- 1 root root 21 5月 11 16:02 vsftpd_login
-rw-r--r-- 1 root root 12288 5月 11 16:05 vsftpd_login.db
vsftpd_login.db是命令#db_load刚刚生成的文件,此文件是不能直接cat的
5 创建虚拟用户文件所在目录(自定义定义)
[root@centos7-01 ~]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@centos7-01 ~]# cd !$
cd /etc/vsftpd/vsftpd_user_conf
6 定义虚拟用户配置文件
#vim testuser1 //加入如下内容
local_root=/home/virftp/testuser1
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
解释:
虚拟用户的配置文件是单独存在的,
每一个用户都有一个自己的配置文件,文件名和用户名是一样的。
local_root 定义虚拟用户的home目录
anonymous_enable=NO 是否允许匿名账户登录,NO表示不允许
write_enable=YES 可写权限
local_umask=022 umask值,影响新文件、目录权限,通常与系统默认保持一致
anon_upload_enable=NO 表示是否允许匿名账户上传文件
anon_mkdir_write_enable=NO 是否允许匿名用户读写
idle_session_timeout=600 连接ftp空闲时间超过秒数,超过该数值需要重新登录
data_connection_timeout=120 数据传输的超时时间,
max_clients=10 最大的客户端连接数
7 定义虚拟用户的home目录
并在其home目录创建文件
[root@centos7-01 vsftpd_user_conf]# mkdir /home/virftp/testuser1
[root@centos7-01 vsftpd_user_conf]# touch /home/virftp/testuser1/aming.txt
7.1 特定赋予目录所属主组权限
[root@centos7-01 vsftpd_user_conf]# chown -R virftp:virftp /home/virftp/
*8 定义密码文件所在路径
[root@centos7-01 vsftpd_user_conf]# vim /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
在最前面加上参数,这里的#是注释部分 所以不算在有效信息。
这是一个用来认证的文件,ftp是通过它来获取密码库从而认证登录的。
注意,32bit与64bit的库文件路径是不同的
/lib64/security/pam_userdb.so 是centos7 64bit的库文件路径
/lib/security/pam_userdb.so 这是32位的库文件路径
9 继续编辑vsftpd的主配置文件
[root@centos7-01 virftp]# vim /etc/vsftpd/vsftpd.conf
将anonymous_enable=YES 改为 anonymous_enable=NO
将#anon_upload_enable=YES 改为 anon_upload_enable=NO
将#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO
注意#也要记得删掉,解除注释
修改完上面配置参数之后,
再在其文件最后再增加如下内容
chroot_local_user=YES
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
allow_writeable_chroot=YES
解释:
user_config_dir=/etc/vsftpd/vsftpd_user_conf
定义虚拟用户所在的路径
10 启动vsftpd服务
检查进程状态和监听端口
[root@centos7-01 virftp]#systemctl start vsftpd
[root@centos7-01 virftp]# ps aux |grep vsftpd
root 2192 0.0 0.0 53212 576 ? Ss 16:44 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root 2197 0.0 0.0 112676 984 pts/0 S+ 16:44 0:00 grep --color=auto vsftpd
#netstat -lntp
[root@centos7-01 virftp]# netstat -lntp |grep vsftpd
tcp6 0 0 :::21 :::* LISTEN 2192/vsftpd
15.3 使用vsftpd搭建ftp服务(下)
测试ftp
1 在linux端安装lftp
[root@centos7-01 virftp]# yum install -y lftp
2 登录lftp
[root@centos7-01 virftp]# lftp testuser1@127.0.0.1
口令:
lftp testuser1@127.0.0.1:~> ls
drwxr-xr-x 2 1005 1005 23 May 11 08:22 testuser1
lftp testuser1@127.0.0.1:/>
其中1005是虚拟用户的uid和gid
3 lftp下get文件,文件被get到当前用户
lftp testuser1@127.0.0.1:~> ls
drwxr-xr-x 2 1005 1005 23 May 11 08:22 testuser1
lftp testuser1@127.0.0.1:/> cd testuser1/
lftp testuser1@127.0.0.1:/testuser1> ls
-rw-r--r-- 1 1005 1005 0 May 11 08:22 aming.txt
lftp testuser1@127.0.0.1:/testuser1> get aming.txt
lftp testuser1@127.0.0.1:/testuser1> quit
[root@centos7-01 ~]# ls -ll |grep aming.txt
-rw-r--r-- 1 root root 0 5月 11 16:22 aming.txt
4 如果要用windows端使用ftp服务,在 windows下安装filezilla客户端软件,进行测试。
Xshell连接ftp
1 建立xshell新会话
新建会话——连接——协议选SFTP——主机是ftp服务器的ip ——端口同样也是22
2 登录
3 设置vsftp下载的路径
打开sftp-test会话属性——
4 get文件会get在设定的下载路径内
sftp:/tmp> get php-fcgi.sock/
sftp: cannot open /tmp/php-fcgi.sock/ to read 因为部分文件是没有执行权利,所以只能读,但并不影响get效果
sftp:/tmp>
5 下载xftp
在xshell按下ctrl+alt+f 进行下载