Ubuntu 搭建FTP服务器

环境:Ubuntu 9.04 Server+VSFTPD 2.0.7
slmagicbox@ubuntu904server:~$ uname -a
Linux ubuntu904server 2.6.28-11-server #42-Ubuntu SMP Fri Apr 17 02:48:10 UTC 2009 i686 GNU/Linux

slmagicbox@ubuntu904server:~$ dpkg -l | grep vsftpd
ii vsftpd                                    2.0.7-0ubuntu1                    The Very Secure FTP Daemon

原始配置文件/etc/vsftpd.conf:
本配置文件为安装vsftpd后默认生成的,以“#”开头为注释项
# Example config file /etc/vsftpd.conf
   listen=YES               #以standalone模式运行vsftpd
   #listen_ipv6=YES
    anonymous_enable=YES #允许匿名用户访问
   #local_enable=YES
   #write_enable=YES
   #local_umask=022
   #anon_upload_enable=YES
   #anon_mkdir_write_enable=YES
   dirmessage_enable=YES    #当用户首次进入FTP服务器的目录时,显示该目录下的message消息,默认为.message文件,可以用message_file来定义
   xferlog_enable=YES #启用日志,默认路径/var/log/vsftpd.log
   connect_from_port_20=YES #数据连接使用默认的ftp-data端口(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_download_enable=YES
   #ftpd_banner=Welcome to blah FTP service.
   #deny_email_enable=YES
   #banned_email_file=/etc/vsftpd.banned_emails

   # chroot_list_enable below.
   #chroot_local_user=YES
   #chroot_list_enable=YES
   #chroot_list_file=/etc/vsftpd.chroot_list
   #ls_recurse_enable=YES

   # Debian customization
   secure_chroot_dir=/var/run/vsftpd #忽略
   pam_service_name=vsftpd #忽略
   rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem #忽略
   rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key #忽略
   

修改后功能:

首先我们在/home/ftp目录下建立了以下两个子目录

    * ftphome1
    * ftphome2

然后,我们创建3个虚拟用户,密码分别是用户名后加"test"

    * ftpvuser1
    * ftpvuser2
    * ftpvuser3

    * 用户ftpvuser1 的主目录为 ftphome1 ,只读权限
    * 用户ftpvuser2 的主目录为 ftphome2,只读权限
    * 用户ftpvuser3 的主目录仍为 ftphome2 ,拥有所有权限

步骤:
1. 创建虚拟用户数据库
       1.1 创建文本文件/etc/vsftpd.ftpvuser_list,内容为:          
           ftpvuser1
           ftpvuser1test
           ftpvuser2
           ftpvuser2test
           ftpvuser3
           ftpvuser3test
           slmagicbox@ubuntu904server:~$ sudo touch /etc/vsftpd.ftpvuser_list
           slmagicbox@ubuntu904server:~$ echo "ftpvuser1" |sudo tee -a /etc/vsftpd.ftpvuser_list
           slmagicbox@ubuntu904server:~$ echo "ftpvuser1test" |sudo tee -a /etc/vsftpd.ftpvuser_list
           slmagicbox@ubuntu904server:~$ echo "ftpvuser2" |sudo tee -a /etc/vsftpd.ftpvuser_list
           slmagicbox@ubuntu904server:~$ echo "ftpvuser2test" |sudo tee -a /etc/vsftpd.ftpvuser_list
           slmagicbox@ubuntu904server:~$ echo "ftpvuser3" |sudo tee -a /etc/vsftpd.ftpvuser_list
           slmagicbox@ubuntu904server:~$ echo "ftpvuser3test" |sudo tee -a /etc/vsftpd.ftpvuser_list
           slmagicbox@ubuntu904server:~$ sudo cat /etc/vsftpd.ftpvuser_list
   确认显示内容与上面列表的相同。    
     
       1.2 安装db4.6-util工具(Berkeley v4.6 database utilities),生成数据库/etc/vsftpd_vuser.db
           slmagicbox@ubuntu904server:~$ sudo apt-get install db4.6-util
           slmagicbox@ubuntu904server:~$ sudo db4.6_load -T -t hash -f /etc/vsftpd.ftpvuser_list /etc/vsftpd_vuser.db
           slmagicbox@ubuntu904server:~$ sudo chmod 600 /etc/vsftpd_vuser.db
       
2. 配置PAM文件
       2.1 新建/etc/pam.d/vsftpd.vuser 内容为:

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

   slmagicbox@ubuntu904server:/etc/pam.d$ sudo vim /etc/pam.d/vsftpd.vuser
       slmagicbox@ubuntu904server:/etc/pam.d$ cat /etc/pam.d/vsftpd.vuser

      
       2.2 修改配置文件 /etc/vsftpd.conf
   pam_service_name=vsftpd.vuser        #该名字与上面的文件名对应
3.为虚拟用户创建本地系统用户
       3.1 新建一个系统用户ftpvuser,用户家目录为/home/ftp, 用户登录终端设为/bin/false(该用户不能登录系统)
       slmagicbox@ubuntu904server:/etc/pam.d$ sudo useradd ftpvuser -d /home/ftp -s /bin/false
              slmagicbox@ubuntu904server:/etc/pam.d$ sudo chown ftpvuser:ftpvuser /home/ftp
   
4.编辑配置文件/etc/vsftpd.conf
       4.1     

listen=YES  #以standalone模式运行vsftpd
anonymous_enable=NO  #禁止匿名
dirmessage_enable=YES #显
示目录下的message消息
xferlog_enable=YES #启用日志
xferlog_file=/var/log/vsftpd.log #设定日志路径
xferlog_std_format=YES #使用标准日志格式
chroot_local_user=YES #限定用户在家目录

guest_enable=YES #启用虚拟用户
guest_username=ftpvuser #虚拟用户帐号
#user_config_dir=/etc/vsftpd_user_conf #先不启用,后面启用时再说明
pam_service_name=vsftpd.vuser #设置pam服务名,上面2.2已经说明
local_enable=YES
secure_chroot_dir=/var/run/vsftpd #忽略


5. 区分虚拟用户权限
       上面的设置,3个虚拟用户都可以正常登录,但是3者的家目录都在/home/ftp,权限都是一样的,接下来我们通过设置来区分3个虚拟的权限。
      
       5.1 首先启用上面配置文件中的user_config_dir项
              user_config_dir=/etc/vsftpd_user_conf   #启用用户配置文件,设定配置文件存放目录
       5.2 创建配置文件存放目录,并新建用户配置文件,文件名与虚拟用户名相同
              slmagicbox@ubuntu904server:~$sudo mkdir /etc/vsftpd_user_conf
       slmagicbox@ubuntu904server:~$cd /etc/vsftpd_user_conf
       slmagicbox@ubuntu904server:/etc/vsftpd_user_conf$sudo touch ftpvuser1 ftpvuser2 ftpvuser3

      5.3 编辑虚拟用户配置文件
            ftpvuser1内容为:

local_root=/home/ftp/ftphome1

            ftpvuser2内容为:

local_root=/home/ftp/ftphome2

           ftpvuser3内容为:

local_root=/home/ftp/ftphome1
write_enable=YES   #开启全局上传(写)权限
anon_world_readable_only=NO #关闭匿名用户只读(下载)权限
anon_upload_enable=YES #开启匿名用户上传权限
anon_mkdir_write_enable=YES #开启匿名用户建目录权限
anon_other_write_enable=YES  #开启匿名用户除上传和建目录之外的写权限(如重命名,删除等)


           现在达到我们想要的效果了。^_^

你可能感兴趣的:(Ubuntu 搭建FTP服务器)