ftp命令使用¶
启动FTP服务器:
service vsftpd start
默认的ftp服务器目录: /var/ftp/pub
匿名身份用户: anonymous
ftp配置文件: /etc/vsftpd/vsftpd.conf
基本命令:
ftp <ip> <port>
mget <fileName>
put <fileName>
vsftpd使用简介 [1]¶
Vsftpd服务器的文件结构如下:
# rpm -ql vsftpd ##查看在安装vftpd软件包时,所产生的配置文件。(这里只做常用的文件)
/usr/sbin/vsftpd ##Vsftpd主程序
/etc/rc.d/init.d/vsftpd ##用于启动终止脚本
/etc/vsftpd/vsftpd.conf ##Vsftpd主配置文件
/etc/pam.d/vsftpd ##PAM认证文件
/etc/vsftpd.ftpusers ##禁止使用Vsftpd的用户列表
/etc/vsftpd.user_list ##禁止或允许使用Vsftpd的用户列表
/var/ftp ##匿名用户的下载目录
/var/ftp/pub ##匿名用户默认访问目录
/etc/logrotate.d/vsftpd.log ##vsftpd的日志文件
# vim /etc/vsftpd/vsftpd.conf:
#anonymous_enable=YES ##允许匿名访问,即anonymous账号访问FTP服务
#local_enable=YES ##允许本地用户登录FTP服务器
#write_enable=YES ##本地用户可以读写
#local_umask=022 ##默认掩码为022,默认创建的文件权限为755
#anon_upload_enable=YES ##允许匿名用户上传文件,基于安全因素考虑,默认vsftpd是注释此项
#anon_mkdir_write_enable=YES ##是否允许匿名用户创建目录,基于安全因素考虑,默认vsftpd是注释此项
dirmessage_enable=YES ##如果目录存在.message隐藏文件时,当进入此目录时,会显示.message里面的内容
xferlog_enable=YES ##默认记录上传、下载的日志文件,是否开启此功能
#xferlog_file=/var/log/xferlog ##Vsftpd的日志存放位置
connect_from_port_20=YES ##从端口20连接,默认状态下,20端口为数据传输端口
#chown_uploads=YES
#chown_username=whoever ##此两选项必须同时出现,含义为,允许新上传文件的拥有者为whoever,默认这两行被注释到得。
xferlog_std_format=YES ##使用标准格式上传/下载
#data_connection_timeout=120 ##传输延时时间,当时间超过120秒后,会自动断开,默认是注释掉的。
#nopriv_user=ftpsecure ##使用特殊用户ftpsecure,这里可以把ftpsecure账户作为一般访问用户,所有连接FTP服务器的用户都具有ftpsecure用户名。
基于安全因素考虑,可以在/etc/passwd中将ftpsecure的用户shell设置为/sbin/nologin(禁止登陆操作系统)
#async_abor_enable=YES ##取消下载后客户端不挂起,一般不需要设置。
#ascii_upload_enable=YES
#ascii_download_enable=YES ##是否启用ASCII方式传送文件,一般我们不需要这个格式。
#ftpd_banner=Welcome to blah FTP service. ##登陆FTP服务器,所提示的信息,默认注释掉的。
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd/banned_emails ##若是启用以上两个选项,则可以在/etc/vsftpd/banned_emails中建立黑名单啦。
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list ##当登陆FTP服务器时,被列在chroot_list文件中的用户,不可以访问FTP根目录以外的目录。
#ls_recurse_enable=YES ##是否可以使用ls -R 命令,默认是注释掉的。
listen=YES ##当此项为YES时,vsftpd运行于stand-alone模式下,默认是开启的。
#listen_ipv6=YES ##是用IPv6,默认是注释掉的。
pam_service_name=vsftpd ##列出与vsftpd相关的pam文件。
userlist_enable=YES ##当此项设置为YES时,启用配置文件/etc/vsftpd/user_list.此时有两种情况:
①若没有userlist_deny=NO,则/etc/vsftpd/user_list中的用户不可以访问FTP服务器
②若有userlist_deny=NO,则仅接受/etc/vsftpd/user_list中的用户登陆请求,同时此用户也不可以存在/etc/vsftpd/ftpusers文件中。
tcp_wrappers=YES ##支持TCP Wrappers
chroot_local_user=YES ##本地用户可以登录FTP服务器,并且登录后的默认目录为用户的家目录,而且还可以更改其默认目录
## ftp是明文传输的,中间人攻击将对于我们的服务器造成很大威胁,所以我们要禁止本地用户更改其默认目录
## 如果禁锢所有本地用户,只需要在主配置文件中添加一行即可
补充:(未出现在vsftpd.conf配置文件中的常用参数)::
guest_enable=YES
guest_username=ftp
guest用户名,即登陆不是匿名用户的用户,具有guest用户身份
local_root=/var/ftp
anon_root=/var/ftp
以上两个选项为本地用户和匿名用户默认访问的目录
#pasv_enable=YES
#port_enable=YES
以上两个选项是FTP服务器的工作模式,两者只能出现一个,而且另一个必须注释掉
(1)PORT其实是Standard模式的另一个名字,又称为Active模式。中文意思是“主动模式。
当客户端C向服务端S连接后,使用的是Port模式,那么客户端C会发送一条命令告诉服务端S
(客户端C在本地打开了一个端口N在等着你进行数据连接),当服务端S收到这个Port命令后,
就会向客户端打开的那个端口N进行连接,这种数据连接就生成了
(2)PASV也就是Passive的简写。中文就是“被动模式
当客户端C向服务端S连接后,服务端S会发信息给客户端C,这个信息是
(服务端S在本地打开了一个端口M,你现在去连接我吧),当客户端C收到这个信息后,
就可以向服务端S的M端口进行连接,连接成功后,数据连接也建立了
use_localtime=YES
是否使用本机时间,若设置NO时,仅使用格林尼治时间。由于北京时间和格林尼治时间有8小时时差,所以建议设置为YES
Idle_session_timeout=300
客户端若在300秒之内没有任何操作,则服务器自动断开。
max_clinet=0
最大连接数量(stand-alone模式下)
max_per_ip=0
每个客户端最大连接ftp服务器的连接数
local_max_rate=0
本地用户登陆FTP服务器最大传输速率,单位为字节/秒
anon_max_rate=0
匿名用户登陆FTP服务器最大传输速率,单位为字节/秒
新增:
user_config_dir=/etc/vsftpd/user_conf // ftp用户列表,為每個用戶設置不同的home
virtual_use_local_privs=YES
##当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;
##当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO。
pasv_enable=yes
pasv_min_port=22030
pasv_max_port=22210
pasv_address=10.128.128.47
pasv_addr_resolve=yes
db_load命令 [1]¶
安装:
db_load 这个命令是由db4-utils软件包提供的
# yum -y install db4-utils
创建虚拟用户账号和密码(奇数行为用户名,偶数行为用户密码):
# touch /etc/vsftpd/virtual.users
# vim /etc/vsftpd/virtual.users
user1 ##奇数为用户名
redhat ##偶数为用户的密码
user2
123456
使用db_load命令生成用户账户的数据库文件并设置相应的数据库文件权限:
# db_load -T -t hash -f /etc/vsftpd/virtual.users /etc/vsftpd/vsftpd.login.db
# chmod 600 /etc/vsftpd/vsftpd.login.db
virtual.users 文件是刚刚新建的用户名和密码文件
vsftpd_login.db文件是db_load命令生成的虚拟用户认证文件
配置PAM信息,在/etc/pam.d/创建一个文件,命名为vsftpd.pam(可自定义):
# vim /etc/pam.d/vsftpd.pam
auth required pam_userdb.so db=/etc/vsftpd/vsftpd.login
account required pam_userdb.so db=/etc/vsftpd/vsftpd.login
真实实例¶
anonymous_enable=NO
local_enable=YES
write_enable=NO
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
#connect_from_port_20=YES
connect_from_port_20=NO
xferlog_std_format=YES
xferlog_file=/var/log/vsftpd.log
listen=YES
listen_port=22021
userlist_enable=YES
tcp_wrappers=YES
chroot_local_user=YES
chroot_list_enable=NO
guest_enable=YES
guest_username=vsftpd
pam_service_name=vsftpd.user
user_config_dir=/etc/vsftpd/user_conf
virtual_use_local_privs=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner="Smart home ftp"
pasv_enable=yes
pasv_min_port=22030
pasv_max_port=22210
pasv_address=10.128.128.47
#pasv_address=172.31.24.82
#pasv_address=54.222.179.232,172.31.24.82
pasv_addr_resolve=yes
allow_writeable_chroot=YES
/etc/vsftpd/user_conf目录:
# cat /etc/vsftpd/user_conf/user1_ftp
local_root=/data/apps/vsftpd/user1 // 指定user1用户的home目录
write_enable=YES // 此用户在此目录下可写
# cat /etc/vsftpd/user_conf/user2_ftp
local_root=/data/apps/vsftpd/user2 // 指定user2用户的home目录
write_enable=YES // 此用户在此目录下可写