安装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的客户端查看:
因为客户端课一进入到任意的目录下,进行任意的操作,所以这是非常危险的,我们应该创建虚拟的用户映射,这样才能更加安全:
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
再增加
chroot_local_user=YES
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
启动vsftpd服务/etc/init.d/vsftpd restart
如果服务启动不了,很可能是前面的pure-ftpd服务还没有关闭。测试过程和前面的pure-ftpd一样。另外,如果用户登录不了,请查看一下/var/log/secure日志。