20.1 ftp服务
ftp采用客户/服务器工作模式,这里采用的是vsftpd
ftp服务器软件。ftp工作方式分为两种,一种port主动模式,一种pasv被动模式,是服务主动与被动进行连接。一般ftp服务器都为被动模式
。
20.1.1 vsftp概述
rpm -qc vsftpd
/etc/logrotate.d/vsftpd.log
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd_conf_migrate.sh
vsftp的主目录的位置在/var/ftp下,并且是系统默认,不能更改。vsftp在通过rpm包安装好后,打开其服务并设为自动运行后,ftp就可以
提供服务了。
20.1.2 vsftp安装与启动
如果没有安装的话,通过以下方式进行安装。
rpm -ivh vsftpd-2.0.4-1.2.i386.rpm
warning: vsftpd-2.0.4-1.2.i386.rpm: Header V3 DSA signature:NOKEY, key ID
4f2a6fd2
Preparing... ###########################################[100%]
1:vsftpd ########################################### [100%]
vsftpd服务采用是独立启动方式来启动的。
chkconfig --level 345 vsftpd on设为开机自启动
service vsftpd start 启动ftp服务。
20.2 vsftp访问配置
20.2.1 vsftp匿名用户
匿名用户:ftp 与anonymous其主目录为/var/ftp
普通用户:用户名为登录用户名,主目录为/home/用户名
20.2.2 vsftp默认配置文件
去掉#后配置选项如下:
vi vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
#chown_uploads=YES
#chown_username=whoever
#xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
#idle_session_timeout=600
#data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
#ftpd_banner=Welcome to blah FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd/banned_emails
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
#ls_recurse_enable=YES
pam_service_name=vsftpd
userlist_enable=YES
#userlist_file=/etc/vsftpd/user_list
listen=YES
tcp_wrappers=YES
说明:默认配置文件就已经能够实现匿名用户对/var/ftp文件内容的下载,以及本机用户对自已主目录的访问(上传与下载)。
20.3 vsftp配置基本实例
20.3.1 改变端口号
vi vsftpd.conf
#新增底下一行,原有的配置不动
listen_port=2121
#重启服务
service vsftpd restart
20.3.2 特定用户不能更改目录
使用者的预设目录为/home/username,若是我们不希望使用者redhat在ftp时能够切换到上一层目录/home,则可参考以下步骤。
#去掉注释
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#或以上选项注释掉,所有用户都不能更改目录。
#编辑下列文件
vi /etc/vsftpd/chroot_list
#加入内容
redhat
#重启服务
service vsftpd restart
20.3.3 允许匿名上传
vi vsftpd.conf
#修改以下内容
anon_upload_enable=YES
anon_mkdir_write_enable=YES
#重启服务
service vsftpd restart
注意:对于上传目录,必须设为可写才行。
chmod o+w /var/ftp
20.3.4 取消匿名登录
说明:取消匿名登录后,系统用户都可以通过用户名与密码来访问FTP服务器了。
vi vsftpd.conf
#修改以下内容
anonymous_enable=NO
#重启服务
service vsftpd restart
20.3.5 设置欢迎信息
vi vsftpd.conf
#修改以下内容
ftpd_banner=Welcome to koumm’s FTP service.
dirmessage_enable=YES
#然后在/var/ftp中建立.message文件。
#该文件为目录说明文件,用于对目录的说明,每个目录中都可有。
vi /var/ftp/.message
欢迎访问ftp主目录。
#重启服务
service vsftpd restart
20.3.6 以独立进程联机
vi vsftpd.conf
#新加入以下内容
setproctitle_enable=YES
#重启服务
service vsftpd restart
#测试
ps -ef|grep ftp
#该功能可能只是在管理上可以查看用户登录的情况吧。
20.3.7 限制下载速度
vi vsftpd.conf
#新加入以下内容
anon_max_rate=100000
local_max_rate=200000
#实际速度会在80-120%之间。
#重启服务
service vsftpd restart
20.3.8 使用pasv联机模式
vi vsftpd.conf
#新加入以下内容
listen_port=2121
pasv_enable=YES
pasv_min_port=9981
pasv_max_port=9986
#重启服务
service vsftpd restart
20.3.9 超级守护程序启动
vi vsftpd.conf
#修改以下内容
listen=NO
#在/etc/xinetd.d/新建以下内容
vi /etc/xinetd.d/vsftpd
service vsftpd
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
port = 21
log_on_success += PID HOST DURATION
log_on_failure += HOST
}
#重启服务
service xinetd restart
注:该配置是对以前服务的一个加深的理解,也相应的也提供了一个处理问题的思路。
20.3.10 最大连机数
vi vsftpd.conf
#加入以下内容
max_clients = 100
max_per_ip = 5
#重启服务
service xinetd restart
注:该配置是对以前服务的一个加深的理解,也相应的也提供了一个处理问题的思路。
20.3.11 特定用户不能登录方法一
#其中的用户不能登陆ftp
/etc/vsftpd/ftpusers
#可以通过以下文件来进行控制的,第二行内容。
vi /etc/pam.d/vsftpd
#%PAM-1.0
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers
onerr=succeed
auth required pam_shells.so
auth include system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so
#如果把上面的sense=deny改为allow后,也就是说只有/etc/vsftpd/ftpusers中的用户才能够访问ftp服务器了。这里提供了一个配置思路,
以供在实际环境中使用。
20.3.12 特定用户不能登录方法二
#编辑下列文件
vi /etc/vsftpd/chroot_list
#修改或加入内容user_list文件本身就有,如没有,请手动添加。
#
userlist_enable=YES
userlist_file=/etc/vsftpd/ user_list
#重启服务
service vsftpd restart
20.4 ftp虚拟用户配置
虚拟帐户与samba中的虚拟帐户有点像,就是为了防止别人用真正的帐户登录系统,而采用的一个帐户的别名帐户,而虚拟帐户只能够登录
ftp,而不能用做其它目的。
20.4.1 创建虚拟帐户文件
[root@redhat vsftpd]# vi vuser.txt
bill
password
koumm
abc,.123
通过以上文件来创建用户数据库。
20.4.2 创建虚拟帐户数据库文件
[root@redhat vsftpd]# db_load -T -t hash -f vuser.txt/etc/vsftpd_login.db
[root@redhat vsftpd]# chmod 600 /etc/vsftpd_login.db
[root@redhat vsftpd]# ll /etc/vsftpd_login.db
-rw------- 1 root root 12288 6月 15 17:06/etc/vsftpd_login.db
修改权限以保证安全。
20.4.3 配置pam文件
为了能够使用ftp服务器能够使用数据库文件对用户进行身份验证,还需要修改vsftpd的PAM文件,把以前的pam中的内容注释掉,并加入以下
内容。
[root@redhat etc]# vi /etc/pam.d/vsftpd
#auth required pam_listfile.so item=user sense=deny
file=/etc/vsftpd.ftpusers onerr=succeed
#auth required pam_stack.so service=system-auth
#auth required pam_shells.so
#account required pam_stack.so service=system-auth
#session required pam_stack.so service=system-auth
auth required pam_userdb.so db=/etc/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd_login
20.4.4 创建虚拟帐户目录
mkdir /var/ftp/vuser
useradd -d /var/ftp/vuser vuser
useradd ftpvip
说明:创建一个帐户,指定主目录,也是ftp的主目录。不指定就是/home/vuser
chown vuser.vuser /var/ftp/vuser
chmod o+rw /var/ftp/vuser
20.4.5 编辑配置文件
1.编辑配置文件
[root@redhat pam.d]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=NO
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
#加入以下内容
guest_enable=YES
guest_username=vuser
说明:虚拟用户的上传下载权限的配置是用匿名配置选项来进行配置的,前提是不能允许匿名用户登录,可以匿名用户可写,虚拟用户就可
以写或上传了。
2.编辑独立配置文件
(1)虚拟帐户配置文件目录
vsftpd可以为不同的虚拟用户创建不同的单独的配置文件,来实现不同的功能,思想就是:可以为不同的虚拟用户对应不同的实体用户,从
而实现不能的功能。
[root@redhat pam.d]# vi /etc/vsftpd/vsftpd.conf
加入以下内容:
vi /etc/vsftpd/vsftpd.conf
user_config_dir=/ftpconfig
(2)单独创建虚拟帐户配置文件
vi /ftpconfig/bill
guest_enable=yes
guest_username=vuser
anon_world_readable_only=no
anon_max_rate=50000
vi /ftpconfig/koumm
guest_enable=yes
guest_username=ftpvip
anon_world_readable_only=no
write_enable=yes
anon_mkdir_write_enable=yes
anon_upload_enable=yes
anon_max_rate=100000
说明:以上实体用户还需要事先创建,用户的主目录如是事先安装的话在/home中。以上方法可以应用一些复杂的应用环境中。
20.5 ftp客户端
20.5.1 ftp命令
ftp命令的功能是在本地机和远程机之间传送文件。
该命令的一般格式如下:
ftp 主机名/IP
最常用的命令有:
ls 列出远程机的当前目录
cd 在远程机上改变工作目录
lcd 在本地机上改变工作目录
ascii 设置文件传输方式为ASCII模式
binary 设置文件传输方式为二进制模式
close 终止当前的ftp会话
hash 每次传输完数据缓冲区中的数据后就显示一个#号
get(mget) 从远程机传送指定文件到本地机
put(mput) 从本地机传送指定文件到远程机
open 连接远程ftp站点
quit 断开与远程机的连接并退出ftp
? 显示本地帮助信息