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

15.4 15.5_1

在最前面加上参数,这里的#是注释部分 所以不算在有效信息。

这是一个用来认证的文件,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

15.4 15.5_1_02

2 登录

3 设置vsftp下载的路径

打开sftp-test会话属性——

15.4 15.5_1_03

15.4 15.5_1_04

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 进行下载