配置linux中的ftp服务器

 配置ftp服务

    
1、安装vsftpd服务器软件
   rpm -q vsftpd
   rpm -ivh vsftpd  (挂载第一张安装光盘)
2、查看vsftp服务器的配置文件和主要目录
   /etc/vsftpd     配置文件所在目录
   /etc/vsftpd/vsftpd.conf    主配置文件
   /etc/vsftpd.ftpusers    vsftpd服务器的黑名单
   /etc/vsftpd.user_list   vsftpd服务器的用户列表
   /var/ftp   匿名用户访问的主目录
   /var/log/xferlog    ftp服务器日志文件
   /home/用户宿主目录
   /etc/rc.d/init.d/vsftpd    vsftpd服务器启动脚本
   /etc/pam.d/vsftpd          PAM配置文件
   /usr/sbin/vsftpd         应用程序
3、启动vsftpd服务
   测试默认vsftpd.conf的配置文件
   支持匿名登陆
   支持本地用户登陆
   使用ftp客户端工具进行测试
4、更改匿名用户登陆的主目录:默认登录到/home/ 的用户目录下,而匿名则登录到/var/pub.现在我要将ftp用户的主目录改为:/etc/ftp
   修改/etc/passwd
建立/etc/ftp目录:
   更改ftp用户的主目录
5、测试匿名用户上传
   ----在匿名主目录下建立上传目录
   ----修改上传目录的权限为o+w
   ----修改主配置文件
       anon_upload_enable=YES
                    可以上传
       anon_mkdir_write_enable=YES
                    可以建立目录,上传目录,ftp客户端工具进行
       anon_other_write_enable=YES      
                    可以删除和更名
   ----重启服务后测试
测试:
6、禁锢本地用户
    允许本地用户登陆ftp服务器
    通过ftp命令去测试默认情况下本地用户是否被禁锢在其主目录;
    修改主配置文件
           chroot_local_user=YES
    重启服务后,通过ftp命令再次去测试。
7、虚拟用户ftp
   1、建立虚拟用户口令库文件
      touch file
      vi file
vi zyc.txt
      奇数行为用户名,偶数行为密码
   2、生成vsftpd的认证文件
      db_load -T -t hash -f file /etc/vsftpd/vsftpd_login.db
      chmod 600 vsftpd_login.db
   3、建立虚拟用户所需的PAM配置文件
      cd /etc/pam.d
      touch PAM配置文件
      vi PAM配置文件
         修改为:
            auth required /lib/security/pam_userdb.so  db=/etc/vsftpd/vsftpd_login
            account required  /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
   4、建立虚拟用户所要访问的目录并设置相应权限
      建立用户帐户,使虚拟用户映射到此用户帐户
          useradd 用户名
          passwd 用户名
      此用户宿主目录既是虚拟用户登陆的主目录;
   5、设置vsftpd.conf配置文件
          vi /etc/vsftpd/vsftpd.conf
             修改:
                  guest_enable=YES   启用虚拟用户帐户登陆ftp服务器
                  guest_username=用户名    指定虚拟用户映射的系统用户帐户
                  pam_service_name=PAM配置文件    指定虚拟用户的PAM配置文件名称
          保存,重启,测试虚拟用户
   6、建立虚拟用户配置文件存放的主目录
          vi /etc/vsftpd/vsftpd.conf
               添加:
             user_config_dir=/etc/vsftpd_user_conf
          mkdir /etc/vsftpd_user_conf
          在此目录中建立与虚拟用户同名的配置文件
          touch
    7、修改不同虚拟用户的配置文件
          vi /etc/vsftpd_user_conf/用户
              可修改以下参数:
               anon_world_readable_only=NO
               anon_upload_enable=YES
               anon_mkdir_write_enable=YES
               anon_other_write_enable=YES
      8、重启服务后测试虚拟帐户
8、ftp其他参数的测试
     1、超时设置
        #空闲连接超时
        idle_session_timeout=600
        #数据传输超时
        data_connection_timeout=120
     2、信息类设置
        ftpd_banner=欢迎消息
        dirmessage_enable=YES
       #目录信息文件
        message_file=.message
 
     3、用户连接测试
       #可接受的最大client数目
         max_clients=100
       #每个ip的最大client数目
         max_per_ip=5
     4、传输速率设置
       #匿名用户的传输比率(bytes/s)
        anon_max_rate=51200
       #本地用户的传输比率(bytes/s)
        local_max_rate=5120000

 

 

VSFTP配置文件:

首先是最基本的配置,请看我的/etc/vsftpd/vsftpd.conf

###############################################################################
#接受匿名用户
anonymous_enable=YES
#匿名用户login时不询问口令
no_anon_password=YES
#接受本地用户
local_enable=YES

#可以上传(全局控制).若想要匿名用户也可上传则需要设置anon_upload_enable=YES,若想要匿名用户可以建立目录则需要设置anon_mkdir_write_enable=YES.这里禁止匿名用户上传,所以不设置这两项.
write_enable=YES
#本地用户上传文件的umask
local_umask=022

#使用上传/下载日志,日志文件默认为/var/log/vsftpd.log,可以通过xferlog_file选项修改
xferlog_enable=YES
#日志使用标准xferlog格式
xferlog_std_format=YES

#login时的欢迎信息
ftpd_banner=Welcome to KingArthur's FTP service.
#设置的话将覆盖上面的ftpd_banner设置,用户login时将显示/etc/vsftpd/banner中的内容
banner_file=/etc/vsftpd/banner
#为YES则进入目录时显示此目录下由message_file选项指定的文本文件(,默认为.message)的内容
dirmessage_enable=YES
#本地用户login后所在目录,若没有设置此项,则本地用户login后将在他的home目录(/etc/passwd的第六个字段)中.匿名用户的对应选项是anon_root
local_root=/var/ftp

#设置为YES则下面的控制有效
chroot_list_enable=YES
#若为NO,则记录在chroot_list_file选项所指定的文件(默认是/etc/vsftpd.chroot_list)中的用户将被chroot在登录后所在目录中,无法离开.如果为YES,则所记录的用户将不被chroot.这里选择YES.
chroot_local_user=YES

#若设置为YES则记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户将无法login,并且将检察下面的userlist_deny选项
userlist_enable=YES
#若为NO,则仅接受记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户的login请求.若为YES则不接受这些用户的请求.
userlist_deny=NO
#注意!!!vsftpd还要检察/etc/vsftpd.ftpusers文件,记录在这个文件中的用户将无法login!!

#服务器以standalong模式运行,这样可以进行下面的控制
listen=YES
#匿名用户的传输比率(b/s)
anon_max_rate=51200
#本地用户的传输比率(b/s)
local_max_rate=512000
#可接受的最大client数目
max_clients=100
#每个ip的最大client数目
max_per_ip=5

connect_from_port_20=YES
tcp_wrappers=YES
pam_service_name=vsftpd

##############################################################################

下面是我的/etc/vsftpd.user_list
##############################################################################

ftpuser
anonymous

##############################################################################
/etc/vsftpd.ftpusers可以使用系统自带的文件
/etc/vsftpd.chroot_list内容为空
接着建立系统用户ftpuser,将他加入ftp组并将/etc/passwd中他的记录的最后一个字段改成/sbin/nologin(禁止本地登录).
设置/var/ftp的所有者和所有组为root,权限为755
设置/var/ftp/pub的所有者为root,所有组为ftp,权限为775

至此vsftpd的基本配置就完成了.这里我们接受匿名用户anonymous和本地用户ftpuser的请求.anonymous只能下载, ftpuser可以下载和上传.他们登录后均在/var/ftp目录下且无法离开这个目录(被chroot了).ftpuser可以在 /var/ftp/pub目录中建立目录和上传文件,上传文件的权限为755(设置了local_umask=022).匿名用户的传输比率为 50kb/s,ftpuser的传输比率为500kb/s.可联接的最多客户数为100,每ip可联接的最多客户数为5.
如果需要使本地用户ftpput可以login,只需要将他加入/etc/vsftpd.user_list,要使他可以上传,只需将他加入ftp组.
接着我们可以在/var/ftp下的各个目录(包括/var/ftp)下建立.message文件,这样用户进入这个目录时vsftpd将显示. message的内容,你可以在这里面写上欢迎信息或者注意事项等等.另外可以编辑/etc/vsftpd/banner,建立login时的欢迎信息, 让你的ftp更加个性化.

下面我们使用quota为ftpuser加入磁盘限额,避免恶意用户用垃圾数据塞满你的硬盘.
假设/var/ftp在根分区/(/dev/hda5)中,则将/etc/fstab中根分区的记录的第4个字段改成defaults,usrquota,这样这条记录看起来类似这样:
LABEL=/ / ext3 defaults,usrquota 1 1
接着重启系统后输入下列命令:
quotacheck -acu #检查启用了配额的文件系统,并为每个文件系统建立一个当前磁盘用来的表
quotacheck -avu #生成每个启用了配额的文件系统的当前磁盘用量表
edquota ftpuser #为用户ftpuser设置磁盘配额
这时系统会在默认文本编辑器(vi)中打开配额文件,显示类似这样:
Disk quotas for user ftpuser (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hda5 0 0 0 0 0 0
第一列是启用了配额的文件系统的名称。第二列显示了用户当前使用的块数。随后的两列用来设置用户在该文件系统上的软硬块限度。inodes 列显示了用户当前使用的i节点数量。最后两列用来设置用户在该文件系统上的软硬i节点限度.硬限是用户或组群可以使用的磁盘空间的绝对最大值。达到了该限 度后,磁盘空间就不能再被用户或组群使用了。软限定义可被使用的最大磁盘空间量。和硬限不同的是,软限可以在一段时期内被超过。这段时期被称为过渡期 (grace period)。过渡期可以用秒钟、分钟、小时、天数、周数、或月数表示。如果以上值中的任何一个被设置为 0,那个限度就不会被设置.按你的需要修改后存盘推出.
要校验用户的配额是否被设置,使用以下命令:
quota testuser
接着使用edquota -t来设置过渡期(grace period)
和另一个 edquota 命令相似,这个命令也会在文本编辑器中打开当前的文件系统配额:
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/hda5 7days 7days
按你的需要修改后存盘退出。

你可能感兴趣的:(linux,list,FTP服务器,测试,File,login)