FTP的客户端有不少种,较为常见的是网页浏览器,如:firefox等。node
通常操做系统都提供了基础的命令行方式的FTP客户端。输入“ftp”或者“ftp服务器地址”就可使用命令行方式。下面列举了一些经常使用的FTP命令。数据库
远程命令:vim
cd 改变所在目录浏览器
ls 查看当前目录下文件列表安全
get 从服务器下载当个文件服务器
mget 从服务器下载多个文件session
put 向服务器上传单个文件app
mput 向服务器上传多个文件tcp
pwd 显示服务器当前目录ide
quit 退出ftp程序
本地命令:
!ls 显示客户端当前目录下的文件列表
!cd 改变客户端当前所在目录
!pwd 显示客户端当前目录
VSFTPD服务器
VSFTPD的安装
咱们为了安装安装包的简单,首先先架设一个本地的YUM仓库,配置本地YUM源。后期会介绍YUM的配置。使用yum 安装vsftpd
[root@xingzheson /]# yum install vsftpd -y
若是系统中开启了SELinux,那么须要执行下面的命令,使得VSFTPD能够被正常访问
[root@xingzheson /]# setsebool -P ftpd_disable_trans 1
VSFTPD安装完成后,默认的主配置文件是 /etc/vsftpd/vsftpd.conf 。下面按自上而下的顺序介绍此文件的参数设定。
anonymous_enable=YES
容许匿名访问,即容许anonymous帐号访问FTP服务。
local_enable=YES
容许使用本机账号登陆
write_enable=YES
用户能够读写
local_umask=022
默认掩码为022,即默认建立的文件权限是755
#anon_upload_enable=YES
是否容许匿名用户上传文件夹,默认是注释掉的
#anon_mkdir_write_enable=YES
是否容许匿名用户建立新文件夹。默认注释掉的
dirmessage_enable=YES
若目录下存在.message文件,则显示该文件内容
xferlog_enable=YES
默认上传/下载的日志文件被记录在/var/log/vsftpd.log中
connect_from_port_20=YES
从20端口链接。默认情况下,20为FTP的数据传输端口
#chown_uploads=YES
#chown_username=whoever
容许新上传文件的拥有者为whoever.两行同时出现的,默认注释掉
#xferlog_file=/var/log/vsftpd.log
日至位置设定
xferlog_std_format=YES
使用标准格式登记上传/下载记录
#data_connection_timeout=120
传输延时时间,单位为秒
#nopriv_user=ftpsecure
使用特殊用户ftpsecure。这里能够把ftpsecure帐户做为通常访问用户,即全部链接FTP服务器的用户都具备ftpsecure用户名。为了安全起见,能够在/etc/passwd中将ftpsecure的用户的SHELL设定为/sbin/nologin。
#ftpd_banner=Welcome to blah FTP service.
登陆提示信息
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
若启用上述两项设定,则能够在/etc/vsftpd/banned_emails中创建黑名单
pam_service_name=vsftpd
列出与VSFTPD相关的PAM文件
userlist_enable=YES
当此项设置为yes的时候,启用配置文件/etc/vsftpd.user_list。此时有两种状况
a.此时若没有userlist_deny=NO,则/etc/vsftpd.user_list中存在的用户不能够访问VSFTPD服务器
b.此时若存在userlist_deny=NO,则仅接受/etc/vsftpd.user_list中存在的用户的登陆请求
当此项设定为NO是,不会启用配置文件/etc/vsftpd.user_list
tcp_wrappers=YES
启用TCP Wrapper支持
以上是默认安装后,VSFTPD主配置文件出现的设定选项。除此以外,还有一些经常使用选项
guest_enable=YES
guest_username=ftp
guest用户名,即全部非匿名用户将具备guest用户身份
local_root=/var/ftp
anon_root=/var/ftp
设定本机用户和匿名用户的FTP根目录
use_localtime=YES
是否使用本机时间,若设定为NO,则使用格林尼治时间
#idle_session_timeout=600
客户端在600秒内没有任何动做,则服务器自动断开与客户端链接
max_clients=0
最大客户链接数
max_per_ip=0
每一个客户端的最大链接数
local_max_rate=0
本地帐户的最大传输速率,单位为秒,0为不限制
anon_max_rate=0
匿名用户的最大传输速率
前面已经介绍了VSFTPD的安装,安装后须要启动服务
[root@xingzheson /]# service vsftpd start
设置开机启动
[root@xingzheson /]# chkconfig vsftpd on
VSFTPD虚拟用户
设置虚拟用户使其仅能访问VSFTPD,而不能够登陆系统
首先,咱们须要确认安装盘上的db4软件包已经装上,若是没有,就要手动安装
[root@xingzheson /]# rpm -qa |grep db4
db4-utils-4.7.25-16.el6.x86_64
db4-4.7.25-16.el6.x86_64
[root@xingzheson Packages]# rpm -ivh db4-utils-4.7.25-16.el6.x86_64.rpm
[root@xingzheson Packages]# rpm -ivh db4-4.7.25-16.el6.x86_64.rpm
当咱们用yum 安装时,就已经默认安装好了。因此不用手动安装的了
接下来,须要建立虚拟用户的用户名和密码,建立一个文档,假定这个文件为/tmp/id.txt 内容以下
xingzheson
123456
zhulaoshi
654321
这里的单数行为用户名,而双数行为用户名对应的密码。生产用户帐号的数据库文件并设定数据文件权限,最后删除/tmp/id.txt
[root@xingzheson tmp]# db_load -T -t hash -f /tmp/id.txt /etc/vsftpd/vsftpd_id.db
[root@xingzheson tmp]# chmod 600 /etc/vsftpd/vsftpd_id.db
[root@xingzheson tmp]# rm -f /tmp/id.txt
下面设定vsftpd.conf 文件
接着创建PAM文件/etc/pam.d/vsftpd.virtual,
[root@xingzheson tmp]# vi /etc/pam.d/vsftpd.virtual
内容以下:
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_id
account required pam_userdb.so db=/etc/vsftpd/vsftpd_id
session reiuired pam_loginuid.so
下面创建相关的目录:
[root@xingzheson tmp]# mkdir /home/vsftpd
[root@xingzheson tmp]# mkdir -p /home/vsftpd/{xingzheson,zhulaoshi}
[root@xingzheson tmp]# chown -R ftp:ftp /home/vsftpd/
重启服务,若是系统中开启了SELinux,那么须要执行如下命令,容许虚拟用户存取其家目录
[root@xingzheson tmp]# setsebool -p allow_ftpd_full_access 1
若是设置正确,则虚拟用户能够登陆服务器。输出以下:
虚拟用户的配置部分彻底正常,可是会发现一个问题,那就是本地用户没法正常登陆VSFTPD服务器了。接下来咱们找找缘由
a.用户的FTP根目录变为了/home/vsftpd/$USER.也就是说,若是一个本地用户zhu尝试登陆VSFTPD,那么服务器会试图寻找/home/vsftpd/zhu这个目录。可是zhu的家目录应该是/home/zhu,而/home/vsftpd/zhu 并不存在,因此登陆失败
b.即便咱们能够用一些方法让zhu的家目录能够被从新定位到/home/zhu(能够用连接的方法),可是因为zhu登陆VSFTPD时的身份其实是ftp(由于启用了guest_enable=YES),因此仍是无权访问本身的家目录
c.及时上述两个问题解决了,仍是没法登陆。哎。由于在PAM文件/etc/pam.d/vsftpd.virtual中,只设定了虚拟用户的验证。zhu是本地用户,该用户的身份验证并不在虚拟用户的数据库中,因此没法登陆。
解决办法:
接下来,修改/etc/vsftpd/vsftpd.conf文件,在其中加入 user_config_dir=/etc/vsftpd/virtua
重启服务,创建/etc/vsftpd/virtua文件夹,并在其中创建文本文件/etc/vsftpd/virtua/zhu
[root@xingzheson vsftpd]# mkdir /etc/vsftpd/virtua
[root@xingzheson vsftpd]# vim /etc/vsftpd/virtua/zhu
内容以下:
local_root=/home/zhu (指定zhu真正的家目录)
guest_username=zhu (修改zhu的身份。这里的zhu的身份就不是ftp了)
通过这样的修改以后,本地用户和虚拟用户就均可以登陆VSFTPD了,而且在增长了user_config_dir以后,就能够给每一个用户单独添加不一样的访问规则和权限,不管该用户是本地用户仍是虚拟用户。
配置具备SSL的VSFTPD
为了提高VSFTPD的传输安全性,这里可使用SSL加密。
首先用OpenSSL为VSFTPD生成安全证书。这里生成的证书有效期为365天
[root@xingzheson virtua]# cd /etc/vsftpd/
[root@xingzheson vsftpd]# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem
生成证书的时候须要填写一些信息,任意写均可以,输出以下
Generating a 1024 bit RSA private key
.............................++++++
.........................++++++
writing new private key to 'vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:JiangSu
Locality Name (eg, city) [Default City]:NanH^H^H^H^H^H^Hj
Organization Name (eg, company) [Default Company Ltd]:ITD^H^H
Organizational Unit Name (eg, section) []:whatever
Common Name (eg, your name or your server's hostname) []:Martian
Email Address []:abc@xyz.com
接下来编辑/etc/vsftpd/vsftpd.conf,加入如下内容
ssl_enable=YES
allow_anon_ssl=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/vsftpd/vsftpd.pem
重启服务,这样带有SSL加密的·VSFTPD服务器就假设好了。