centos4.8上FTP实验

   首先先介绍一下centos下的ftp,centos我们就可以把它看作是redhat,因为他们基本是一样的。

一    FTP 的包名字 叫vsftpd-2.0.1-8.el4.i386.rpm 我们现在centos的介质下面RPMS内安        装包软件中查找

          
    我们用rpm -q vsftpd 来查找,如果没有安装则rpm -ivh  vsftpd-2.0.1-8.el4.i386.rpm
    vsftpd 的有三个重要配置文件
    1 /etc/vsftpd/vsftpd.conf   主配置文件
    2 /etc/vsftpd/ftpusers        黑名单,这里的用户不能登录ftp
    3 /etc/vsftpd/user_list       定义了谁可以登录,谁不可以登录ftp
   * 当ftpusers 文件用户与user_list产生冲突时候,ftpusers优先
二 先看/etc/vsftpd/vsftpd.conf

# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
# anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
# anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
# The target log file can be vsftpd_log_file or xferlog_file.
# This depends on setting xferlog_std_format parameter
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
# chown_uploads=YES
#chown_username=whoever
#
# The name of log file when xferlog_enable=YES and xferlog_std_format=YES
# WARNING - changing this filename affects /etc/logrotate.d/vsftpd.log
#xferlog_file=/var/log/xferlog
#
# Switches between logging into vsftpd_log_file and xferlog_file files.
# NO writes to vsftpd_log_file, YES to xferlog_file
xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
# nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
# async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that turning on ascii_download_enable enables malicious remote parties
# to consume your I/O resources, by issuing the command "SIZE /big/file" in
# ASCII mode.
# These ASCII options are split into upload and download because you may wish
# to enable ASCII uploads (to prevent uploaded scripts etc. from breaking),
# without the DoS risk of SIZE and ASCII downloads. ASCII mangling should be
# on the client anyway..
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
#ftpd_banner=Welcome to blah FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
# deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd.banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list
chroot_local_user=YES
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
pam_service_name=vsftpd
userlist_enable=YES
#enable for standalone mode
listen=YES
tcp_wrappers=YES
                                                                                                                                                                  
                                                       
    1 local_umask=022
       此为权限反码,一个用户上传后的文件对文件的管理权限为666-022(权限反码)= 644  一个用户上传后的目录的管理权限为777-022=755,注意这里的022不要动。
   2 chroot_list_enable=YES  意思是是否开启变更根目录,如果这行的注释被去掉则代表开启。如果么有开启这项功能,则用户登录ftp后只能在Linux的/home 下,但是如果开启后则用户可以任意切换到别的目录。
  3 chroot_list_file=/etc/vsftpd.chroot_list 如果把这行也开启话则在list表内的用户不能切换到别的目录,但是表外的用到别切换。
 
 4 如果想让表内用户可以切换,而表外的用户不能。则我吗可以在原来的两条下     面     再填写一条
  chroot_list_enable=YES
  chroot_list_file=/etc/vsftpd.chroot_list
  chroot_local_user=YES   /*  此行为新增加的*/
这三行都开启了之后,则在list表内的用户可以切换根,表外的用户不可以
5 #idle_session_timeout=600 这行,表示连接多长时间为断开,单位为秒(在连接上,不做任何操作,600s后自动断开)
 
6     #data_connection_timeout=120 这行表示数据传输时候当你多少时间后没有传  输, 则断开
7   #ascii_upload_enable=YES
   #ascii_download_enable=YES 
   vsftpd 默认的是传上二进制编码传输,vsftpd可以开启ASII传输服务之后,可以直接把ASII文件以ASII形式封装,应用可以直接打开,不用二进制文件那样还要在传输过程转换,这样开启ASII之后就不用转换了, 但是如果用户有二进制文件传输也不要开,有时候ASII传输会报错。
如果开启二进制传输,则把#号去掉,开启之后如果想关闭则把#加上去,应把YES更改为NO 并且保存
8  #ftpd_banner=Welcome to blah FTP service
   这行 是当你登录到ftp时候显示的欢迎信息,你也自己编辑一些。
9 /etc/vstpd/ftpusers  黑名单 我们可以用echo  name >>  /etc/vsftpd/ftpusers 来把用户名字写入到这个文件里
10
   如果在一个企业里一少部分人可以访问ftp,不访问的人是多数的。则把很多人加入黑名单会很麻烦。如果开启匿名怎不安全。
 
    我们可以这样解决:
     我们在配置文件最下面 填写 userlist_enable=YES
                                                             userlist_list=/etc/vsftpd/user_list
                                                             userlist_deny=NO
  第一行意思是开启用户列表的功能,有这个还不行,还拥有下一行,在这个表内用户为不能登录用户,开启这两行之后则表内的用户不能登录到ftp。但是我们的需求是很少一部分人可以访问,所以我们可以在下面再此增加一条userlist_list=NO 这样表内的用户表内用户可以访问,表外的用户不可以,这样我们把少数的可以登录ftp的人增加到list里了。
把用户加入到表里 #echo aoa  >> /etc/vsftpd/user_list
11  dirmessage_enable=YES
     消息盒子,这行开启的情况下只需把登录用户的目录创建一个.message 目录在里面写入欢迎语句这样可以做到给每个用户准备不懂的欢迎语录,特别是公司老板等
注意匿名用户在/var/ftp下创建  本地用户在 /home/  用户下面
12  xferlog_enable=YES  日志的书写格式
13    connect_from_port_20=YES
        主动连接这是必须开启的,不能改动的
14  xferlog_file=/var/log/xferlog   ftp 的日志路径
15  xferlog_std_format=YES   用std 方式进行传输 vsftpd日志
16  async_abor_enable=YES  也不传输 如果开启会引起不稳定
 
17 nopriv_user=ftpsecure   ftp非特殊用户 ftp 是root运行的,“ftpsecure” 如果改为
 
    bob则可以控制ftp用户
18 deny_email_enable=YES 拒绝邮件功能开启
三 匿名用户
  1 开启匿名用户,但不开启本地用户
       anonmous_enable=YES
       local_enable=NO
  2  在Linux中ftp 的匿名用户为ftp 密码为空,路径为/var/ftp ,在Linux中ftp的匿名用户也可以是anonmous 这为了兼容windows ,但是windows 你们anonmous在Linux会转为ftp。
 3  (1)如果匿名用户想可以上传则 开启 #anon_upload_enable=YES
                这样匿名用户可以上传文件,但是不能改名字
     (2)如果想让匿名可以写入也就是改名字则开启
              # anon_mkdir_write_enable=YES
      (3)如果想让用户可以删除目录则添加
               
                 anon_other_write_enable=YES
         * 在write_enable=NO 情况下匿名用户开启上传写入后,则匿名用户也不        能  写入 因为write_enable=NO 为总开关
         *匿名用户的路径为/var/ftp  但是在/var/ftp/ 下面不可以创建,这是因为规定它的权限为755,这是不能更改的,更改也不起作用。
 但是我们在/var/ftp下面发现有pub文件夹,可以在pub内写入,创建等,或者我们可以在ftp内创建一个文件夹,在这个文件夹内上传,写入等,如果pub没有权限,则权限要给
#chmod 755 pub 也可以查看到发现pub为 400 700
 
 

 三 

如果一个公司有一个共享文件夹,用户可以观看,因为设置为匿名登录,但是这个文件夹内可以上传文件,保存东西。但是又不希望所有用户能把此文件夹的内容删除,也就是说匿名用户不可以上传这个文件夹不可以删除文件夹内的文件,只想制定一个人来对这个文件价可以管理,则我们可以架设ftp

我们ftp的主配置文件中的

chown_uploads=YES的下面在写一行

chown_username=zhao   /*zhao 为 我指定的用户名*/

我们可以创建一个用户 为zhao 让zhao每天对这个文件夹进行管理 此技术很实用为网吧共享文件夹

四  当你想增加一块磁盘,因为原有的ftp磁盘已经满了,这样就用到重新定义匿名用户的根目录也就是把ftp目录转移到新的增加的磁盘上

    1 首先在主配置文件下面写入

      anon_root= /mnt/sdb1      /*sdb1 为所添加的好的挂载完成的磁盘*/

    2 cd  sdb1              进入sdb1

      mkdir upload           创建一个子文件夹

      chmod o+w pload     在根目录的子目录里给写入权限

*  如果我们在sdb1里更改权限是错误的 ,

  chmod 777  /mnt/sdb1  根目录是不可以更改权限的,必须是755,这是个错误的命令

如果想匿名用户删除文件则最下面添加

anon_other_write_enable=YES

  如果想让所有的本地用户都可以登录到sdb1上则输入

local_root=/mnt/sdb1

 五 ftp 限速

  1  本地用户下载位 50KB/s 匿名为10KB/s,最大连接数目为100,每个ip最多打开2个线程与ftp服务器连接、

   对于这样的要求我们可以这样配置

     在配置文件下面我吗添加如下

    local_max_rate=50000    /*单位是字节*/

    anon_max_rate=10000

    max_clients=100

    max_per_ip=2      /*一个ip只能连接两个会话连接*/

2 被动ftp设置并且设置固定端口,在文件内添加

    pasv_enable=YES

    pasv_min_port=6000

    pasv_max_port=6100

   注意 这里限制为100断开,为什么呢,因为在上面我的客户端max_clents=100

3 打开详细的日志输出开关

  xferlog_std_format=NO  /*关闭默认日志*/

  log_ftp_protocol=YES /*开启详细的日志*/

六 配置虚拟用户

     虚拟用户是在一个公司有很多的用户。例如有财务,市场,人事,科研等,工作人员ftp的文件只想让市场的一些人访问,但是这些人又要不给太多的权限,如果设置成本地用户访问,则权限又给大了,如果匿名则不安全。这就要做虚拟用户了,它是一个虚拟的没有自己目录的,享受的是匿名的待遇,是有用户名和密码的但是不是本地用户。

   step:

    1  创建一个文本,包含用户名和密码

       # vi  logins.txt

          aoa

         123

         bob

         456

         coc

         789

注: 单行为帐号名 双行为密码

2  把创建的文本转换成db格式数据库文件

  注意这里 操作系统没有预先装包,所以要安装一下

  # rpm -ivh db4-utils-4.2.52-7.3.el4.i386.rpm

  建立数据库文件并设置文件属性
 

# db_load  -T  -t  hash  -f  logins.txt  /etc/vsftpd/login.db  /*转换成数据文件*/

# chmod 600 /etc/vsftpd_login.db

3 在/etc/pam.d 目录中建立ftp服务所需要认证文件

  #vi  /etc/pam.d/ftp.virtual

插入这两行

    auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
    account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

4 创建一个用户为虚拟用并且控制指定目录

   #useradd  -d  /var/ftpvirtual   virtual

   /*   /var/ftpvirtual 是宿主目录,virtual 是 用户名*/

  其它无论是本地用户还是匿名用户登录ftp 都需要验证一个身份,这是用户virtual里的 aoa bob  coc 

5 在配置文件里填写

  guest_enable=YES

  guest_username=virtual

 pam_service_name=ftp.virtual 

注意这里还有anonymous_enable=NO 这里不用再写,只需把配置文件yes 改为no

保存,然后重启服务

但是如果我们在虚拟用户的配置文件里创建几个目录

#  cd   /var/ftp.virtual

  touch 1  2  3

我们用xp用虚拟用户aoa 登录,发现不存在,这里是正常的,是虚拟用户的效果,如果想让xp能看到在虚拟用户目录内root建的1  2   3 文件,则还要在配置文件添加

    anon_world_readable_only=NO

    这样保存退出,在用xp登录测试就可以了

   如果想让虚拟用户可以上传则添加

    anon_upload_enbale=YES

    anon_mkdir_write=YES
 

 

 

如果有不对的敬请拍砖

 

你可能感兴趣的:(linux,centos,ftp,职场,休闲)