您的位置:首页 > 运维架构 > Linux

如何在Ubuntu Linux系统建立FTP服务器

2009-04-18 09:48 597 查看
               如何在Ubuntu Linux系统建立FTP服务器
环境:Ubuntu 8.10
步骤:
一:安装vsftpd
vsftpd是Ubuntu自带的FTP服务器,直接安装即可:
sudo apt-get install vsftpd
如果提示你说没有找到软件包vsftpd,可能你的源没有更新,
或者你所用的源不提供软件包,可以换个源试试。
编辑更新源命令:sudo gedit /etc/apt/sources.list
更新命令:sudo apt-get update   或 sudo apt-get dist-upgrade
http://sns.linuxpk.com/space-43898-do-blog-id-15275.html提供了不
错的更新源列表,大家可以参考。
安装后/home/下会出现一个ftp目录。
如果没有生成,可以手动生成,并修改权限:
sudo useradd -m ftp 
sudo chown root:root /home/ftp
sudo chmod 755 /home/ftp
此时如果访问下ftp://IP地址,会看到一个空白内容的ftp
空间。获得本地IP地址的命令为:ifconfig。
二:匿名用户设置
这些权限主要在 /etc/vsftpd.conf文件中设置。默认设置下匿名
用户可以下载,但不能写入或是上传。
要让匿名用户无法访问,只需要把Anonymous_enable=YES这一项
<
15314
span style="font-size:12pt;font-family:'宋体';">注释掉变为:#Anonymous_enable=YES
或使得Anonymous_enable=NO。
另外必须把ftp目录删除,否则匿名用户仍可登录。
最后别忘了要重启ftp服务器(使修改过的配置文件生效): 
sudo /etc/init.d/vsftpd restart
如果要是匿名用户同时具有下载、上传、下载的功能
把vsftpd.conf文件设置为(其它设置不变):
anonymous_enable=YES 
anon_mkdir_write_enable=YES 
anon_other_write_enable=YES 
       anon_upload_enable=YES
       anon_world_readable_only=NO
    还要改变共享目录的权限:
       sudo chown root:root /home/ftp  sudo chmod 755 /home/ftp
    要说明的是,匿名开FTP上传是极其不安全的,不推荐使用。
二:本地用户设置
只要把vsftpd.conf文件设置为(其它设置不变):
local_enable=YES
write_enable=YES
   这样输入用户名密码后会显示用户的根目录。
   还有一个问题,这样的设置允许用户跳到任何其他目录。
   为了对此限制,在vsftpd.conf中设置:
   chroot_local_user=NO
   chroot_list_enable=YES
   chroot_list_file=/etc/vsftpd.chroot_list
   接下来我们就能在vsftpd.chroot_list上写进去我们要限制
   哪些用户:
   vi vsftpd.chroot_list
   如果需要制定特定的目录,在vsftp.conf中加入:
user_config_dir=/etc/myfile    
#myfile是自己定义一个设置个别用户用的文件夹地址
根据自己设置的地址,建立一个相应的文件夹myfile,然后
往里面建立和用户名相同的文件myfile,myfile文件中的
内容为:
    local_root=/home/username/mydir
   其中username为已经建立的本地用户,mydir为你希望进入
   ftp显示的根目录。
   当然了,设置完后别忘了重启ftp服务器哦~~
三:虚拟用户设置
   假定我们现在需要设置三个虚拟用户:
   user1, user2, user3,密码为用户名,
   主目录分别为dir1, dir2, dir1,使得user1在dir1目录下
   只有只读权限,user2在dir2目录下只有只读权限,
   user3在dir2目录下具有所有权限。
   步骤如下:
    1. 创建文本文件loguser.txt
    格式为:
    user_name
    Password
    根据要求我们的/home/loguser.txt文件应该是这样的:
    user1
    user1
    user2
    user2
    user3
    user3
    2. 生成数据库
    Ubuntu 8.10使用libdb4.6-util 软件包,可以执行以下命令
    安装libdb4.6-util
       sudo apt-get install db4.6-util
    同样若出现提示说无法找到软件包,可以试着更新源。
    然后为了生成对应的数据库我们执行:
        sudo db4.6_load -T -t hash -f /home/loguser.txt /etc/vsftpd_login.db
    还要设置一下数据库文件的访问权限,使其只能被拥有者
    访问和修改:
        sudo chmod 600 /etc/vsftpd_login.db
   3. 配置pam文件
    新建/etc/pam.d/vsftpd.vu 内容如下:
       auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
       account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
    这里用到了已经建立的vsftpd_login数据库;稍后我们将通过
    /etc/vsftpd.conf文件中的语句
    pam_service_name=vsftpd.vu
    来启用PAM文件,使得建立的虚拟用户采用PAM进行验证。
    4.  为虚拟用户创建本地用户
 1)新建一个系统用户virtual,用户家目录为/home/ftp,
用户登录终端设为/bin/false(即使之不能登录系统)
  sudo useradd virtual -d /home/ftp -s /bin/false
  sudo chown virtual:virtual /home/ftp
  sudo chown virtual:virtual /home/dir1
  sudo chown virtual:virtual /home/dir2
        2)根据需要创建/etc/vsftpd.conf,一般要确保: 
         listen=YES
         anonymous_enable=NO 
         dirmessage_enable=YES 
         xferlog_enable=YES 
         xferlog_file=/var/log/vsftpd.log 
         xferlog_std_format=YES 
        chroot_local_user=YES 
        guest_enable=YES 
        #表示启用虚拟用户
       guest_username=virtual
    #将虚拟用户映射为本地用户,
    #使虚拟用户登录后能进入本地
    #用户virtual的目录
        user_config_dir=/etc/vsftpd_user_conf
        pam_service_name=vsftpd.vu 
        local_enable=YES 
        secure_chroot_dir=/var/run/vsftpd
    现在为止,3个用户都可以工作了,可是它们的根目录
    现在都是/home/ftp,但权限一样。
    3)配置/etc/vsftpd_user_conf
    注意上面的配置中有
       user_config_dir=/etc/vsftpd_user_conf ,
   表示各个用户的配置文件放到目录
    /etc/vsftpd_user_conf中 
     我们如下操作:
           sudo mkdir /etc/vsftpd_user_conf
          cd /etc/vsftpd_user_conf 
          sudo touch user1 user2 user3
     使得user1文件中的内容为:
          local_root=/home/ftp/dir1
     user2文件中的内容为:
          local_root=/home/ftp/dir2
     User3文件中的内容为:
         write_enable=YES
         anon_world_readable_only=NO 
         anon_upload_enable=YES 
         anon_mkdir_write_enable=YES 
         anon_other_write_enable=YES 
         local_root=/home/ftp/dir1
    最后重启服务器就完成了~~
四:vsftpd.conf中的配置信息
Anonymous_enable=YES (允许匿名登陆)
Local_enble=YES (本地帐户能够登陆)
Dirmessage_enable=YES (切换目录时,显示目录下.message 的内容)
Local_umask=022 (FTP 上本地的文件权限,默认是 077)
Connect_form_port_20=YES (启用 FTP 数据端口的数据连接)*
Xferlog_enable=YES (激活上传和下传的日志)
Xferlog_std_format=YES (使用标准的日志格式)
Ftpd_banner=XXXXX (欢迎信息)
Pam_service_name=vsftpd (验证方式)*
Listen=yes (独立的 VSFTPD 服务器)*
Anon_upload_enable=YES (开放匿名用户的上传权限)
Anon_mkdir_write_enable=YES (匿名用户可创建目录的同时可以在此目录中上传文件)
Write_enable=YES (开放本地用户写的权限)
Anon_other_write_enable=YES (匿名帐号可以有删除的权限)
Anon_world_readable_only=NO (放开匿名用户浏览权限)
Ascii_upload_enable=YES (启用上传的 ASCII 传输方式)
Ascii_download_enable=YES (启用下载的 ASCII 传输方式)
Banner_file=/var/vsftpd_banner_file (用户连接后欢迎信息使用的是此文件中的相关信息)
Idle_session_timeout=600(秒) (用户会话空闲后 10 分钟)
Data_connection_timeout=120(秒) (将数据连接空闲 2 分钟断)
Accept_timeout=60(秒) (将客户端空闲 1 分钟后断)
Connect_timeout=60(秒) (中断 1 分钟后又重新连接)
Local_max_rate=50000(bite) (本地用户传输率 50K)
Anon_max_rate=30000(bite) (匿名用户传输率 30K)
Pasv_min_port=50000 (将客户端的数据连接端口改在
Pasv_max_port=60000 50000—60000 之间)
Max_clients=200 (FTP 的最大连接数)
Max_per_ip=4 (每 IP 的最大连接数)
Listen_port=5555 (从 5555 端口进行数据连接)
Write_enable=YES (本地帐户登陆后可以删除和修改文件)
 Chroot_local_user=YES (本地所有帐户都只能在自家目录)
Chroot_list_enable=YES (文件中的名单可以调用)
Chroot_list_file=/任意指定的路径/vsftpd.chroot_list
(前提是 chroot_local_user=NO)
Userlist_enable=YES (在指定的文件中的用户不可以访问)
Userlist_deny=YES
Userlist_file=/指定的路径/vsftpd.user_list
Banner_fail=/路径/文件名 (连接失败时显示文件中的内容)
Ls_recurse_enable=NO
Async_abor_enable=YES
One_process_model=YES
Listen_address=10.2.2.2 (将虚拟服务绑定到某端口)
Guest_enable=YES (虚拟用户可以登陆)
Guest_username=所设的用户名 (将虚拟用户映射为本地用户)
User_config_dir=/任意指定的路径/为用户策略自己所建的文件夹
(指定不同虚拟用户配置文件的路径)
Chown_uploads=YES (改变上传文件的所有者为 root)
Chown_username=root
Deny_email_enable=YES (是否允许禁止匿名用户使用某些邮件地址)
Banned_email_file=//任意指定的路径/xx/
Pasv_enable=YES ( 服务器端用被动模式)
User_config_dir=/任意指定的路径//任意文件目录 (指定虚拟用户存放配置文件的路径)
 
 
 
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息