VSFTPD安装与配置
hostname | ip | OS |
---|
server | 192.168.220.138 | centos7 |
client | 192.168.220.139 | centos7 |
1、vsftpd安装
[root@server ~]# yum install vsftpd -y
[root@server ~]# vim /etc/services
41 ftp-data 20/tcp #传输通道
42 ftp-data 20/udp
43 # 21 is registered to ftp, but also used by fsp
44 ftp 21/tcp #控制通道
45 ftp 21/udp fsp fspd
[root@server ~]# ls /etc/vsftpd/ #配置文件所在
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
[root@server ~]# systemctl start vsftpd
[root@server ~]# netstat -antup | grep vsftpd
tcp6 0 0 :::21 :::* LISTEN 10356/vsftpd
没有数据的传输,所以暂时看不到20端口
[root@client ~]# yum install lftp -y
2、默认共享目录
如果以匿名身份登陆FTP服务的话,通常会被限定在/var/ftp/目录下工作。
[root@server ~]# ls /var/ftp/
pub
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/66bcffae390c7901795d15232a1b1c2a.png)
3、配置参数说明
[root@server ~]# vim /etc/vsftpd/vsftpd.conf
参数 | 说明 |
---|
anonymous_enable=YES | 允许anonymous用户登陆。 |
local_enable=YES | 这个值YES时/ect/passwd的账号才能以实体用户的方式登陆。 |
write_enable=YES | 允许用户上传数据。 |
local_umask=022 | 上传文件的权限。 |
anon_upload_enable=YES | anonymous具有下载可读文件的权限。 |
anon_mkdir_write_enable=YES | anonymous是否允许建立目录。 |
dirmessage_enable=YES | 当用户进入某个目录时,显示该目录要注意的内容。 |
xferlog_enable=YES | 记录用户的上传和下载。 |
connect_from_port_20=YES | 允许20端口连接。 |
xferlog_file=/var/log/xferlog | 用户上传和下载的日志。 |
xferlog_std_format=YES | 是否设置为wu-ftp相同的日志格式。 |
idle_session_timeout=600 | 用户在600秒内没有命令操作,强制脱机。 |
data_connection_timeout=120 | 建立连接后,120秒内无法顺利的完成数据的传送,剔除客户端 |
nopriv_user=ftpsecure | 使用特殊用户ftpsecure |
async_abor_enable=YES | 取消下载后客户端不挂起 |
ascii_upload_enable=YES | 值为YES,则优先使用ASCII格式上传文件 |
ascii_download_enable=YES | 值为YES,则优先使用ASCII格式下载文件 |
chroot_local_user=YES | 是否将用户限制在自己的用户主目录 |
chroot_list_enable=YES | 是否启用chroot写入列表的功能 |
chroot_list_file=/etc/vsftpd/chroot_list | 当登陆FTP服务器时,被列在chroot_list文件中的用户,不可以访问FTP根目录以外的目录 |
listen=NO | 若为YES,表示vsftp是以stand alone的方式来启动。 |
pam_service_name=vsftpd | 列出与vsftpd相关的pam文件/etc/pam.d/vsftpd |
userlist_enable=YES | 是否借助vsftpd的阻挡机制来处理用户账号。 |
userlist_deny=YES | userlist_enable=YES才会生效,若此值为YES当用户账号被列入某个文件时,在该文件的用户将无法登陆vsftpd服务器 |
userlist_file=/etc/vsftpd/user_list | userlist_deny=YES时,这个文件的 账户无法登陆vsftpd |
tcp_wrappers=YES | 持TCP Wrappers |
4、使用虚拟账号
[root@server ~]# cat /etc/vsftpd/user.txt
user1
000000
[root@server ~]# db_load -T -t hash -f /etc/vsftpd/user.txt /etc/vsftpd/user.db
参数说明
-T :将文本文件转译载入进数据库。
-t :子选项-t,追加在在-T选项后,用来指定转译载入的数据库类型。
hash :hash码加密。
-f :用户名和密码的文本文件,文件的内容是:奇数行用户名、偶数行密码。
执行后原user.txt文件就可以删除了。
===========================配置pam文件=======================
Linux-PAM(linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式
PAM模块配置文件路径为/etc/pam.d/
[root@server ~]# vim /etc/pam.d/vsftpd
注释其原有内容添加如下内容:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/user #这个文件为db_load 产生数据库文件
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/user
=================创建虚拟账户对应的系统用户===============
[root@server ~]# useradd -d /var/ftp/user1 guest
===========================建立虚拟账号配置文件=======================
[root@server ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES===============>anonymous_enable=NO
添加
allow_writeable_chroot=YES
user_config_dir=/etc/vsftpd/userconfig #设置虚拟账号主目录为/userconfig
[root@server ~]# mkdir /etc/vsftpd/userconfig
[root@server ~]# touch /etc/vsftpd/userconfig/user1 #创建与虚拟用户同名的文件
[root@server ~]# vim /etc/vsftpd/userconfig/user1
guest_enable=yes #允许匿名或来宾账号访问
guest_username=guest #对应的系统实体用户
anon_world_readable_only=no #是否只读
anon_max_rate=40000 #最大传输速率,单位字节
[root@server ~]# systemctl restart vsftpd
5、Client端lftp命令测试
[root@server ~]# cp /etc/yum.repos.d/CentOS-* /var/ftp/user1/
[root@client ~]# yum install lftp -y
[root@client ~]# lftp 192.168.220.138 -u user1
口令:
lftp user1@192.168.220.138:~> ls
-rw-r--r-- 1 0 0 1664 Jul 23 07:24 CentOS-Base.repo
-rw-r--r-- 1 0 0 1309 Jul 23 07:24 CentOS-CR.repo
-rw-r--r-- 1 0 0 649 Jul 23 07:24 CentOS-Debuginfo.repo
-rw-r--r-- 1 0 0 630 Jul 23 07:24 CentOS-Media.repo
-rw-r--r-- 1 0 0 1331 Jul 23 07:24 CentOS-Sources.repo
-rw-r--r-- 1 0 0 1952 Jul 23 07:24 CentOS-Vault.repo
-rw-r--r-- 1 0 0 290 Jul 23 07:24 CentOS-fasttrack.repo