安装vsftpd:

[root@localhost ~]# yum install -y vsftpd db4-utils

这里安装两个软件包,同时会把依赖的包安装上。其中db4-utils用来生成密码库文件。

由于21端口被pure-ftpd所占用,需要用killall杀死:

[root@localhost ~]# killall pure-ftpd

[root@localhost ~]# killall pure-ftpd

pure-ftpd: 没有进程被杀死

[root@localhost ~]# /etc/init.d/vsftpd start   (启动vsftpd)

为 vsftpd 启动 vsftpd:                                    [确定]

[root@localhost ~]# netstat -lnp  (查看端口占用情况)

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name

tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      8134/vsftpd

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1093/sshd

tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1169/master

tcp        0      0 0.0.0.0:35353               0.0.0.0:*                   LISTEN      984/rpc.statd

tcp        0      0 :::49810                    :::*                        LISTEN      984/rpc.statd

tcp        0      0 :::22                       :::*                        LISTEN      1093/sshd

tcp        0      0 ::1:25                      :::*                        LISTEN      1169/master

udp        0      0 0.0.0.0:40590               0.0.0.0:*                               984/rpc.statd

udp        0      0 0.0.0.0:68                  0.0.0.0:*                               1357/dhclient

udp        0      0 127.0.0.1:736               0.0.0.0:*                               984/rpc.statd

udp        0      0 :::36546                    :::*                                    984/rpc.statd

[root@localhost ~]# passwd user3

更改用户 user3 的密码 。

新的 密码: (LIUHONG521)

重新输入新的 密码:

passwd: 所有的身份验证令牌已经成功更新。

客户端登录lftp:

[root@qiangge ~]# lftp [email protected]

口令:

lftp [email protected]:~>

服务端查看user3的家目录:

[root@localhost ~]# grep user3 /etc/passwd    (查看家目录)

user3:x:500:500::/home/user3:/bin/bash

[root@localhost ~]# ls /home/user3

[root@localhost ~]# touch /home/user3/1122.txt      (创建文件)

[root@localhost ~]# mkdir /home/user3/aabb           (创建目录)

[root@localhost ~]# ls /home/user3

1122.txt  aabb

ftp的客户端查看:

wKioL1lHdUSQaxxzAAAbGLb07uI552.jpg

因为客户端课一进入到任意的目录下,进行任意的操作,所以这是非常危险的,我们应该创建虚拟的用户映射,这样才能更加安全:

1、在配置文件中做限制亦可:

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf  (服务端配置文件)

(由于篇幅较长,只选局部)

# 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_local_user=YES   (将前面的#去掉)

#chroot_list_enable=YES

# (default follows)

#chroot_list_file=/etc/vsftpd/chroot_list

#

# You may activate the "-R" option to the builtin ls. This is disabled by

保存之后,重新启动:

[root@localhost ~]# /etc/init.d/vsftpd restart

关闭 vsftpd:                                                  [确定]

为 vsftpd 启动 vsftpd:                                    [确定]

登录lftp客户端:

[root@qiangge ~]# lftp [email protected]

口令:

lftp [email protected]:~> cd /etc

cd `/etc' [正在发送命令...]

cd:

Access Failed:550 Failed to change directoyr. (/etc)

lftp [email protected]:/>

lftp [email protected]:/>

因为被限制了,所以只能在当前目录下操作,总之ftp使用系统的用户是不×××全的,所以我们使用虚拟用户的映射是必不可少的。

创建虚拟用户:

[root@localhost ~]# useradd virftp -s /sbin/nologin

[root@localhost ~]# vim /etc/vsftpd/vfstpd_login  (虚拟用户存放的用户名和密码)

test1               (用户名)

111222aaa     (密码)

test2

111222bbb

~

~

:wq

[root@localhost ~]# chmod 600 /etc/vsftpd/vsftpd_login (权限更改,只允许root可以看)

vsftpd使用的密码文件不是明文的,需生成对应的库文件:

[root@localhost ~]# db_load -T -t hash -f /etc/vdftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db

建立虚拟账号相关的目录以及配置文件:

[root@localhost ~]# mkdir /etc/vsftpd/vsftpd_user_conf

[root@localhost ~]# cd /etc/vsftpd/vsftpd_user_conf

创建跟用户名对应的配置文件:

[root@localhost vsftpd_user_conf]# vim test1

local_root=/home/virftp/test1           (限定家目录)

anonymous_enable=NO                  (匿名用户是否可用)

write_enable=YES                           (是否可写)

local_umask=022                              

anon_upload_enable=NO                   (匿名用户是否可上传)

anon_mkdir_write_enable=NO             (匿名用户是否可创建)

idle_session_timeout=600

data_connection_timeout=120

max_clients=10

max_per_ip=5

local_max_rate=50000                          (传输速度)

说明:

local_root为该账号的家目录,anonymous_enable用来限定是否允许匿名账号登录,若为NO表示不允许匿名账号登录,write_enable=YES 表示可写,local_umask指定umask值。

[root@localhost vsftpd_user_conf]# mkdir /home/virftp/test1   (创建test1)

[root@localhost vsftpd_user_conf]# chown -R virftp:virftp/home/virftp/test1  (修改权限,修改为所映射的用户)

[root@localhost vsftpd_user_conf]# vim /etc/pam.d/vsftpd   (认证相关的配置文件,用什么方式去认证)

在最开头添加两行 :

auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login   //如果是64位系统则改为/lib64/security/pam_userdb.so

account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login   //如果是64位系统则改为/lib64/security/pam_userdb.so

附加:[root@localhost vsftpd_user_conf]# uname -a

Linux localhost 2.6.32-431.el6.i686 #1 SMP Fri Nov 22 00:26:36 UTC 2013 i686 i686 i386 GNU/Linux

查看系统位数,是32还是64.

修改全局配置文件/etc/vsftpd.conf

#vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES改为anonymous_enable=NO

#anon_upload_enable=YES 改为 anon_upload_enable=NO

#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO

再增加

  1. chroot_local_user=YES

  2. guest_enable=YES

  3. guest_username=virftp

  4. virtual_use_local_privs=YES

  5. user_config_dir=/etc/vsftpd/vsftpd_user_conf

启动vsftpd服务/etc/init.d/vsftpd restart  

如果服务启动不了,很可能是前面的pure-ftpd服务还没有关闭。测试过程和前面的pure-ftpd一样。另外,如果用户登录不了,请查看一下/var/log/secure日志。