[[email protected] ~]# yum install -y vsftpd #安装 centos自带的vsftp 服务
启动 vsftpd 服务,如果服务启动失败,检查日志。可以看到是 端口被 pure-ftpd占用。
关掉pure_ftpd 服务,再启动,就可以了。
[[email protected] ~]# /etc/init.d/vsftpd start
Starting vsftpd for vsftpd: [ OK ]
以user3 为范例:
[[email protected] ~]# passwd user3 #更改User3密码
Changing password for user user3.
New password:
BAD PASSWORD: it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.
-------------------------------------------------------
没有lftp 命令先安装
[[email protected] ~]# yum install -y lftp
[[email protected] ~]# lftp [email protected]
Password:
lftp [email protected]:~> ls #里面什么都没有
lftp [email protected]:~>
[[email protected] ~]# grep user3 /etc/passwd #查找user3的家目录
user3:x:502:502::/home/user3:/bin/bash
[[email protected] ~]# ls /home/user3/ #目录是空的
[[email protected] ~]# touch /home/user3/1207.txt
[[email protected] ~]# mkdir /home/user3/1207
[[email protected] ~]# ls /home/user3/
1207 1207.txt
黙认的用户在客户端访问。
[[email protected] ~]# lftp [email protected]
Password:
lftp [email protected]:~> ls
drwxr-xr-x 2 0 0 4096 Dec 07 02:47 1207
-rw-r--r-- 1 0 0 0 Dec 07 02:45 1207.txt
lftp [email protected]:~>
此时的user3可以进入任何一个目录下(root除外)。黙认的vsftp 这样用是很危险的。
下面来配置一款安全的用法:
可以像 pure-ftpd 那用建一个虚拟用户来映射。这样更加安全。
也可以通过编辑配置文件来做一些限制。
[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf
#chroot_local_user=YES #打开这这个限限
[[email protected] ~]# /etc/init.d/vsftpd restart #重启vsftpd 服务
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
在客户端进行操作
lftp [email protected]:~> cd /etc
cd: Access failed: 550 Failed to change directory. (/etc) #/etc/文件夹进不去
[[email protected] ~]# useradd virftp -s /sbin/nologin #创建用户
[[email protected] ~]# vim /etc/vsftpd/vsftpd_login #存放用户&密码
[[email protected] ~]# chmod 600 /etc/vsftpd/vsftpd_login #更改文件权限,只限root可以看
[[email protected] ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
#为vsftpd 生成可识别的二进制的库文件,保存路径 /etc/vsftpd/vsftpd_login.db
[[email protected] ~]# mkdir /etc/vsftpd/vsftpd_user_conf #创建虚拟用户配置文件存放目录
[[email protected] vsftpd_user_conf]# vim linux1 #加入以下内容
local_root=/home/virftp/linux1
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
[[email protected] vsftpd_user_conf]# mkdir /home/virftp/linux1 #创建用户家目录
[[email protected] vsftpd_user_conf]# chown -R virftp:virftp /home/virftp/linux1
#修改成映射用户的权限
编辑认证相关的配置文件
[[email protected] vsftpd_user_conf]# vim /etc/pam.d/vsftpd #在最开头两行加下以下两行
#指定使用哪种方式来认证,不然系统会使用黙认的用户&密码。
我们用的是虚拟用户,会对应一个密码库文件
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
#/lib/security/pam_userdb.so 认证模块
#db=/etc/vsftpd/vsftpd_login db的路径
---------------------------------------
确定文件存在不存在
[[email protected] vsftpd_user_conf]# cat /etc/pam.d/vsftpd
#%PAM-1.0
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
----------------------------------------
[[email protected] vsftpd_user_conf]# ls /lib64/security/pam_userdb.so
/lib64/security/pam_userdb.so
#此处需要注意:如果系统是64位的pam_userdb.so 是在这个目录 /lib64/security/pam_userdb.so
如果系统是32位的pam_userdb.so 是在这个目录 /lib/security/pam_userdb.so
[[email protected] vsftpd_user_conf]# uname -a #查看系统位数
Linux LNMP 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[[email protected] vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES #打开
anonymous_enable=YES 改为 anonymous_enable=NO
#anon_upload_enable=YES 改为 anon_upload_enable=NO
#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO
再增加:(在末端)
guest_enable=YES #guest #用户可可以登录,不然创建的虚拟用户不能登录
guest_username=virftp #指定虚拟用户名
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf #指定(告知)虚拟用户的文件路径
重新启动 vsftpd
[[email protected] vsftpd_user_conf]# /etc/init.d/vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
在客户端测试出现如下图状况,不能访问
将local_enable=YES #改为YES即可。
在本地家目下创建文本&目录
[[email protected] vsftpd_user_conf]# cd /home/virftp/linux1/
[[email protected] linux1]# ls
[[email protected] linux1]# touch 1207
[[email protected] linux1]# touch 1207.txt
[[email protected] linux1]# ls
1207 1207.txt
在客户端可以正常查看
[[email protected]Bird ~]# lftp [email protected]
Password:
lftp [email protected]:~> ls
-rw-r--r-- 1 0 0 0 Dec 07 05:21 1207
-rw-r--r-- 1 0 0 0 Dec 07 05:21 1207.txt
也可以通过客户端IE 来查看
Linux vsftp 部署&优化