linux下搭建ftp服务器

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             /*vsftp的安全验证文件*/
/etc/vsftpd/ftpusers          /*其中的用户不能登陆ftp*/
/etc/vsftpd/user_list         /*其中的用户不能登陆ftp同上一样*/
/etc/vsftpd/vsftpd.conf       /*ftp主配置文件*/
/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              /*开启20端口*/
#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格式上传*/
#ascii_download_enable=YES            /*是否使用ascii格式下载*/
#ftpd_banner=Welcome to blah FTP service.     /*服务器banner*/
#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    /*是否允许用户ls -R循环显示每一个目录*/

pam_service_name=vsftpd   /*验证服务名*/
userlist_enable=YES       /*用户列表中的用户不能登录FTP*/
#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主目录。        /*通过SecureCRT登录可以打汉字,并可显示*/

#重启服务
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          /*匿名最高速为100KB*/
local_max_rate=200000         /*本机用户最高速为200KB */
#实际速度会在80-120%之间。

#重启服务
service vsftpd restart

20.3.8 使用pasv联机模式
vi vsftpd.conf
#新加入以下内容
listen_port=2121          /*监听2121端口,用于防火墙 */
pasv_enable=YES           /*启用pasv模式*/
pasv_min_port=9981        /*pasv端口范围*/
pasv_max_port=9986

#重启服务
service vsftpd restart

20.3.9 超级守护程序启动
vi vsftpd.conf
#修改以下内容
listen=NO           /*监听2121端口,用于防火墙 */

#在/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          /*服务器最大连机默认为0无限制*/
max_per_ip = 5             /*单IP最大连机默认为0无限制*/

#重启服务
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  /*设置ftp对应的系统帐号为ftpuser*/ 
anon_world_readable_on

ly=no  /*允许匿名用户浏览文件系统*/
anon_max_rate=50000   /*限定传输速率为50KB/s*/
vi /ftpconfig/koumm   /*创建的虚拟用户*/
guest_enable=yes   /*开启虚拟帐号登录*/ 
guest_username=ftpvip  /*设置ftp对应的系统帐号为ftpvip*/ 
anon_world_readable_only=no /*允许匿名用户浏览器整个服务器的文件系统*/
write_enable=yes  /*允许在文件系统写入权限*/
anon_mkdir_write_enable=yes  /*允许创建文件夹 */
anon_upload_enable=yes  /*开启匿名帐号的上传功能*/ 
anon_max_rate=100000  /*限定传输速度为100KB/s*/
说明:以上实体用户还需要事先创建,用户的主目录如是事先安装的话在/home中。以上方法可以应用一些复杂的应用环境中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值